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

robot_wti ea @fxsignalspot.mq4

Похожие материалы по тегам

the gold reaper v4.1 mt5.mq4MQL4 / MetaTrader 4 · 1 общих теговquantum queen x 4.3 (1).mq5MQL5 / MetaTrader 5 · 1 общих теговlizard_1.85.mq4MQL4 / MetaTrader 4 · 1 общих теговoverlaychart.mq4MQL4 / MetaTrader 4 · 1 общих теговmarket crusher ea guidlines.txtMQL · 1 общих теговrobot_wti ea.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный продукт представляет собой торгового советника для платформы MetaTrader 4, работающего по принципу сеточной торговли. Он размещает отложенные ордера (Buy Limit и Sell Limit) на определённых уровнях цены относительно текущего рынка и управляет ими при движении цены.

Советник отслеживает совокупную прибыль по управляемым ордерам с помощью глобальных переменных и баланса счёта. Когда накопленная прибыль достигает заданного процентного порога, все открытые ордера закрываются и состояние сетки сбрасывается.

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

Параметр magic number используется для изоляции ордеров, управляемых данным советником, от ордеров других торговых систем.

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

НастройкаОписание
identifier Текстовый параметр, задающий префикс для глобальных переменных, используемых советником для хранения состояния.
din Строковый параметр, содержащий описательную метку для настройки лота.
lot Числовой параметр, определяющий базовый размер лота, используемый при расчёте объёма ордеров.
percent_close Числовой параметр, задающий пороговое значение прибыли в процентах для автоматического закрытия всех ордеров.
_grid Строковый параметр-заголовок для блока настроек сетки.
t1 Строковый параметр-разделитель для визуального оформления интерфейса настроек.
step Целочисленный параметр, определяющий расстояние в пунктах между уровнями сетки.
indent_open Целочисленный параметр, задающий отступ в пунктах для калибровки уровня открытия сетки.
indent Целочисленный параметр, задающий отступ в пунктах для калибровки уровня тейк-профита сетки.
pogr Целочисленный параметр, задающий допустимую погрешность по рынку при расчётах сетки.
t2 Строковый параметр-разделитель для визуального оформления интерфейса настроек.
t13 Строковый параметр-разделитель для визуального оформления интерфейса настроек.
_magic Строковый параметр-заголовок для блока уникального номера идентификации ордеров.
magic Целочисленный параметр, задающий уникальный магический номер для идентификации ордеров, управляемых данным советником.
Получить полный код

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

#property version   "1.00"
#property strict

extern string identifier = "WTI";

extern string din = "Lot for 1000";
extern double lot   = 0.005;  
extern double percent_close = 1;

extern string _grid = "Grid settings";
extern string t1 ="--------------------------------------";
extern int    step = 100;
extern int    indent_open = 0;//отступ для калибровки открытия
extern int    indent = 0;//отступ для калибровки тейк-профита
extern int    pogr = 0;//погрешность по рынку
extern string t2 ="--------------------------------------";
/*
Сетку запускаем, когда цена Bid делится без остатка на step.
После этого открываем два встречных ордера по рынку и открываем уровни сетки.
Триггер на открытие доп уровня: бай!=селл.
Корректируем крайние графицы сетки и внутренние границы сетки, когда срабатывает триггер.
*/
extern string t13 ="--------------------------------------";
extern string _magic = "Unique number";
extern int    magic = 1;

double pp;
int    dd; 
int digits;
int kol;
int kol2;//для отложенных

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

void OnDeinit(const int reason)
  {

  }

double value_profit()
{
   double ld_0 = 0;
   int l_ord_total_8 = OrdersTotal();
   if (l_ord_total_8 > 0) 
   {
      for (int l_pos_12 = l_ord_total_8 - 1; l_pos_12 >= 0; l_pos_12--) 
      {
         if (OrderSelect(l_pos_12, SELECT_BY_POS, MODE_TRADES))
         {
          if (OrderMagicNumber() == magic)
          ld_0 += OrderProfit() + OrderSwap() + OrderCommission();
         } 
      }
   }
  return(ld_0);
}

void CloseAll()
{  
    bool b;
    int total = OrdersTotal() - 1;   
    for (int i = total; i >= 0; i--) 
    {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
        {
            if (OrderMagicNumber() == magic) 
            {        
                if (OrderType() == OP_BUY || OrderType() == OP_SELL)
                {
                    b = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 20, Blue); // Закрытие рыночного ордера
                } else{
                     b = OrderDelete(OrderTicket()); // Удаление отложенного ордера
                }
            }    
        }    
    } 
} 

int check() {
    int kol_ = 0;
    kol2 = 0;
    int total = OrdersTotal(); // Получаем общее количество ордеров

    for (int i = 0; i < total; i++) {
        if (OrderSelect(i, SELECT_BY_POS)) {

            if (OrderMagicNumber() == magic) {
                if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
                    kol_++; // Увеличиваем счетчик для открытых ордеров
                }
            }
        }
    }

    for (int i = 0; i < total; i++) {
        if (OrderSelect(i, SELECT_BY_POS)) {

            if (OrderMagicNumber() == magic) {
                if (OrderType() == OP_BUYLIMIT || OrderType() == OP_SELLLIMIT || 
                    OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP) {
                    kol_++; // Увеличиваем счетчик для отложенных ордеров
                    kol2++;
                }
            }
        }
    }
    return(kol_);
}

double sum_lot()
{
   double balance_=GlobalVariableGet(identifier+"_balance");
   int roundedValue = (int)MathRound(balance_/1000);

   return(lot*roundedValue);
}

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

      double profit, total_lot;
      int Ticket;
      double bid   =MarketInfo(Symbol(),MODE_BID);
      double ask   =MarketInfo(Symbol(),MODE_ASK);
      kol=check();

      if (kol==0)
      {
         GlobalVariableSet(identifier+"_balance",AccountBalance());
         GlobalVariableSet(identifier+"_itime",TimeCurrent());
         GlobalVariableSet(identifier+"_start_price",Bid);

         GlobalVariableSet(identifier+"_kol_pos2",0);

            total_lot=sum_lot();
            double takeProfit = NormalizeDouble(ask + step * pp + indent * pp, digits);

            Ticket=OrderSend(Symbol(), OP_BUYLIMIT, NormalizeDouble(total_lot,2), NormalizeDouble(ask,digits)- step/2 * pp, 30, 0, /*buyLimit+takeProfit_buy*/0, "", magic, 0, clrBlue);

            takeProfit = NormalizeDouble(bid - st

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

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

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

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

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

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

Стоимость полного кода
609,10₽ ≈ $7.45