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

MakeGrid

makegrid.mq4

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

! macd+.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!macd_adx.mq4MQL4 / MetaTrader 4 · 1 общих теговxauusd_gold_perfect.mq4MQL4 / MetaTrader 4 · 1 общих теговtm sniper pro.pineTradingView · 1 общих теговsource code of grid with 100 pips stop loss.mq4MQL4 / MetaTrader 4 · 1 общих теговsniper pro.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

MakeGrid — торговый советник для MetaTrader 4, реализующий сеточную (grid/mesh) торговую стратегию. Советник размещает серию отложенных ордеров (BUYLIMIT, BUYSTOP, SELLLIMIT, SELLSTOP) на равных ценовых уровнях, формируя сетку вокруг текущей цены инструмента.

Параметры сетки включают размер шага (GridSize), количество уровней (GridSteps) и объём лота (Lots). Советник позволяет задать тейк-профит и стоп-лосс для каждого ордера, а также интервал обновления сетки в минутах (UpdateInterval).

Для фильтрации сигналов доступны индикаторы EMA34 и MACD. Включение UseMACD активирует анализ пересечений MACD для управления направлением ордеров. Параметры wantLongs и wantShorts определяют разрешённые направления сделок, а wantBreakout и wantCounter задают размещение ордеров выше или ниже текущей цены.

Советник идентифицирует свои ордера через уникальный magic number (uniqueGridMagic) и может закрывать открытые позиции и удалять отложенные ордера при смене торговых условий.

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

НастройкаОписание
Magic number of the trades. must be unique to identify (uniqueGridMagic) uniqueGridMagic — Уникальное magic number для идентификации ордеров сетки.
Lots Lots — Объём лота для каждого ордера сетки.
pips between orders - grid or mesh size (GridSize) GridSize — Размер шага сетки в пунктах — расстояние между ордерами.
total number of orders to place (GridSteps) GridSteps — Общее количество ордеров для размещения в сетке.
number of ticks to take profit. normally is = grid size but u can override (TakeProfit) TakeProfit — Тейк-профит в пунктах для каждого ордера. Если меньше или равен 0, автоматически устанавливается равным GridSize.
if u want to add a stop loss. normal grids dont use stop losses (StopLoss) StopLoss — Стоп-лосс в пунктах для каждого ордера. Если установлен в 0, стоп-лосс не используется.
update orders every x minutes (UpdateInterval) UpdateInterval — Интервал обновления ордеров в минутах.
do we want long positions (wantLongs) wantLongs — Переключатель разрешения открытия длинных (лонг) позиций.
do we want short positions (wantShorts) wantShorts — Переключатель разрешения открытия коротких (шорт) позиций.
do we want longs above price, shorts below price (wantBreakout) wantBreakout — Если true, размещает лонги выше текущей цены и шорты ниже текущей цены.
do we want longs below price, shorts above price (wantCounter) wantCounter — Если true, размещает лонги ниже текущей цены и шорты выше текущей цены.
do we want longs above ema only, shorts below ema only (limitEMA34) limitEMA34 — Если true, размещает лонги только выше EMA34, а шорты — только ниже EMA34.
maximum number of open positions : not yet implemented.. (GridMaxOpen) GridMaxOpen — Максимальное количество открытых позиций (в текущей реализации не реализовано).
if true, will use macd >0 for longs only, macd >0 for shorts only (UseMACD) UseMACD — Если true, использует MACD для фильтрации направления ордеров: MACD выше нуля для лонгов, ниже нуля для шортов. При пересечении отменяет все отложенные ордера.
if UseMACD, do we also close open positions with a loss? (CloseOpenPositions) CloseOpenPositions — Если UseMACD активен, определяет, нужно ли также закрывать открытые позиции с убытком при пересечении MACD.
Получить полный код

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

extern int    uniqueGridMagic = 11111;   // Magic number of the trades. must be unique to identify

extern double Lots = 0.1;              // 
extern double GridSize = 6;            // pips between orders - grid or mesh size
extern double GridSteps = 12;          // total number of orders to place
extern double TakeProfit = 12 ;        // number of ticks to take profit. normally is = grid size but u can override
extern double StopLoss = 0;            // if u want to add a stop loss. normal grids dont use stop losses
extern double UpdateInterval = 1;      // update orders every x minutes
extern bool   wantLongs = true;        //  do we want long positions
extern bool   wantShorts = false;      //  do we want short positions
extern bool   wantBreakout = true;     // do we want longs above price, shorts below price
extern bool   wantCounter = true;      // do we want longs below price, shorts above price
extern bool   limitEMA34 = true;       // do we want longs above ema only, shorts below ema only
extern double GridMaxOpen = 0;         // maximum number of open positions : not yet implemented..
extern bool   UseMACD = true;          // if true, will use macd >0 for longs only, macd >0 for shorts only

extern bool CloseOpenPositions = false;// if UseMACD, do we also close open positions with a loss?

string GridName = "Grid";       // identifies the grid. allows for several co-existing grids
double LastUpdate = 0;          // counter used to note time of last update

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

bool IsPosition(double atRate, double inRange, bool checkLongs )
  {

     int totalorders = OrdersTotal();
     for(int j=0;j<totalorders;j++)                                // scan all orders and positions...
      {
        OrderSelect(j, SELECT_BY_POS);

        if ( OrderSymbol()==Symbol() && ( (OrderMagicNumber() == uniqueGridMagic) || (OrderComment() == GridName)) )  // only look if mygrid and symbol...
         {  int type = OrderType();
             if (MathAbs( OrderOpenPrice() - atRate ) < (inRange*0.9)) // dont look for exact price but price proximity (less than gridsize)
              { if ( ( checkLongs && ( type == OP_BUY || type == OP_BUYLIMIT  || type == OP_BUYSTOP ) )  || (!checkLongs && ( type == OP_SELL || type == OP_SELLLIMIT  || type == OP_SELLSTOP ) ) )
                 { 
                    return(true); 
                 }
              }
         }
      } 
   return(false);
  }

void CloseAllPendingOrders( )
  {
     int totalorders = OrdersTotal();
     for(int j=totalorders-1;j>=0;j--)                                // scan all orders and positions...
      {
        OrderSelect(j, SELECT_BY_POS);

        if ( OrderSymbol()==Symbol() && ( (OrderMagicNumber() == uniqueGridMagic) || (OrderComment() == GridName)) )  // only look if mygrid and symbol...
         {  
          int type = OrderType();
          bool result = false;
          switch(type)
          {
             case OP_BUY       : result = true ;
             case OP_SELL      : result = true ;

            case OP_BUYLIMIT  : result = OrderDelete( OrderTicket() ); 
            case OP_BUYSTOP   : result = OrderDelete( OrderTicket() ); 
            case OP_SELLLIMIT : result = OrderDelete( OrderTicket() ); 
            case OP_SELLSTOP  : result = OrderDelete( OrderTicket() ); 
          }
         }
      } 
   return;
  }

void CloseOpenOrders()
{
  int total = OrdersTotal();
  for(int i=total-1;i>=0;i--)
 {
    OrderSelect(i, SELECT_BY_POS);
    int type    = OrderType();
    bool result = false;

    if ( OrderSymbol()==Symbol() && ( (OrderMagicNumber() == uniqueGridMagic) || (OrderComment() == GridName)) )  // only look if mygrid and symbol...
     

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

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

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

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

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

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

Стоимость полного кода
515,50₽ ≈ $6.30