← К каталогу
Исходный код · ID 3853

ea security.mq4

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Данный продукт представляет собой торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник отслеживает текущее состояние торгового счёта и отображает на экране информацию о прибыли/убытке и балансе счёта в виде меток.

Основная функция советника — автоматическое закрытие всех открытых ордеров при достижении заданных пороговых значений эквити. Режим закрытия по балансу управляется переключателем: при его включении используются два порога — один для ситуации с малым количеством ордеров и другой при превышении заданного числа ордеров. При отключении режима советник закрывает все ордера, если последний закрытый ордер сработал по тейк-профиту.

В советнике реализован тестовый режим, который при стратегическом тестировании автоматически открывает несколько пробных ордеров. Также предусмотрен вывод ошибок в журнал советников и проигрывание звуковых сигналов при возникновении проблем.

Настройки программы

НастройкаОписание
st0 Разделитель настроек — Текстовый параметр-заголовок, отображаемый как разделитель настроек на графике
UsesCloseBalance Использовать закрытие по балансу — Переключатель режима закрытия ордеров по балансу. При включении ордера закрываются при достижении заданных порогов эквити. При отключении ордера закрываются при срабатывании тейк-профита последнего ордера
CloseBalance Баланс закрытия (до X ордеров) — Пороговое значение эквити для закрытия всех ордеров, когда общее количество открытых ордеров меньше параметра X
X trades (X) Количество ордеров (X) — Количество ордеров, разделяющее два порога закрытия по балансу
Close balance for X trades (CloseBalance2) Баланс закрытия (от X ордеров) — Пороговое значение эквити для закрытия всех ордеров, когда общее количество открытых ордеров равно или превышает параметр X
Получить полный код

Поиск по коду файла

#property version   "1.00"
#property strict

extern string    st0 = "::: General settings :::";
extern bool      UsesCloseBalance = true;
extern double    CloseBalance =20;  
extern int       X = 2;  // X trades 
extern double    CloseBalance2 = 50;  // Close balance for X trades

#include <stdlib.mqh>
#include <WinUser32.mqh>

datetime LastTime;
int Slippage=200;     
int err;
double StartLot;
string TradingInfo;

int Y_;
int FontSize = 12;
int Corner = 2;

int OnInit()
  {
      // код доступен только после оплаты
   }

void OnDeinit(const int reason)
  {
  }

int PrintError(int Part)
  {
    int error = GetLastError();
    if (error!=0) 
    {
      Print("Part " + IntegerToString(Part) + "; Error " + IntegerToString(error) + ": " + ErrorDescription(error));
      PlaySound("alert.wav");
    }  
    return(error);
  }   

double EA_orders_equity(int magic)
  {
    double sum=0;
    for (int i=0; i<OrdersTotal(); i++)
      if (OrderSelect(i,SELECT_BY_POS) && OrderType()<=1 && OrderSymbol()==Symbol()) 
      {
        if (magic==-1)         
          sum = sum + OrderProfit() + OrderSwap() + OrderCommission();
        else
          if (OrderMagicNumber()==magic)
          {
            sum = sum + OrderProfit() + OrderSwap() + OrderCommission();
          }  
      }
    return(sum);  
  }

void OutLabel(string Object, string Text, color Clr, int X_=10)
  {
    if (ObjectFind(Object)==-1) ObjectCreate(Object, OBJ_LABEL, 0, 0, 0);
    ObjectSetText(Object, Text, FontSize, "Arial", Clr);
    ObjectSet(Object, OBJPROP_CORNER, Corner);
    ObjectSet(Object, OBJPROP_XDISTANCE, X_);
    ObjectSet(Object, OBJPROP_YDISTANCE, Y_);               
    Y_ = Y_ + FontSize+5;
  }

int TotalOrders()
  {        
    int n=0;
    for (int i=0; i<OrdersTotal(); i++)
      if (OrderSelect(i,SELECT_BY_POS) && OrderSymbol()==Symbol()) n++;
    return(n);  
  }  

void CloseAllOrders()
  {        
    int Aa=0;
    while (TotalOrders()>0)
    {
      for (int i=0; i<=OrdersTotal(); i++)
        if (OrderSelect(i,SELECT_BY_POS) && OrderSymbol()==Symbol())
        {                 
          RefreshRates();
          if (OrderType()==OP_BUY && OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slippage,Blue)==false) PrintError(234);
          if (OrderType()==OP_SELL && OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slippage,Red)==false) PrintError(235);
          if (OrderType()>1 && Or

Показано первые 50% кода (символов: 3838)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
383,80₽ ≈ $4.69