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

MakeGrid

makegrid-with 100 and 200 ema.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, реализующий сеточную торговлю путём размещения отложенных ордеров на заданном расстоянии друг от друга. Советник формирует сетку ценовых уровней и управляет открытыми позициями и отложенными ордерами, предотвращая дублирование в заданном ценовом регионе.

Работа выполняется периодически с интервалом обновления, задаваемым пользователем. Включена фильтрация направлений позиций через три скользящие средние (EMA34, EMA100, EMA200), а также использование индикатора MACD для определения направления тренда. При пересечении MACD советник отменяет все отложенные ордера и при необходимости закрывает открытые позиции с убытком.

Поддерживаются как длинные, так и короткие позиции, с возможностью включения или отключения каждого направления. Доступны режимы размещения ордеров выше/ниже текущей цены (breakout) и в противоположную сторону (counter). Все ордера маркируются магическим числом для идентификации.

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

НастройкаОписание
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) Интервал обновления (мин) — Перiodичность обновления ордеров в минутах.
do we want long positions (wantLongs) Длинные позиции — Разрешает открытие длинных позиций.
do we want short positions (wantShorts) Короткие позиции — Разрешает открытие коротких позиций.
do we want longs above price, shorts below price (wantBreakout) Разрешить breakout — Разрешает размещение длинных ордеров выше цены и коротких ниже цены.
do we want longs below price, shorts above price (wantCounter) Разрешить counter — Разрешает размещение длинных ордеров ниже цены и коротких выше цены.
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 выше нуля, короткие — ниже.
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