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

makegrid_with_100_and_200_ema ea.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 общих тегов
Вы автор или правообладатель?

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

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

О программе

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

Советник вычисляет сетку из заданного количества шагов с фиксированным расстоянием между ордерами. Каждый уровень сетки проверяется на наличие уже открытых позиций или ордеров вблизи, и при отсутствии таковых размещается новый отложенный ордер. Доступны фильтры по скользящим средним EMA34, EMA100 и EMA200, позволяющие открывать только длинные или только короткие позиции при нахождении цены выше или ниже соответствующей скользящей средней.

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

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

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

        switch(type)
         {

  

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

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

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

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

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

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

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