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

grid strategy 21112024_5363996961055735983.mq4

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

pro +.pineTradingView · 3 общих теговofada_gold_trader_v230.mq5MQL5 / MetaTrader 5 · 3 общих теговmulti strategy algo combined by enigma mode.pineTradingView · 3 общих теговmelona ob strategy 6th update (by 3dots).pineTradingView · 3 общих теговsmc+ict+indicators+scalping master.pineTradingView · 3 общих теговpremium_super_scalping killer algo.pineTradingView · 3 общих тегов
Вы автор или правообладатель?

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

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

О программе

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

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

НастройкаОписание
Тейк Профит (iTakeProfit) Тейк Профит — Фиксирует уровень прибыли в пунктах для управления открытыми позициями
Тип рассчета лота Процент или Значение (iTypeLots) Тип рассчета лота Процент или Значение — Определяет метод расчёта размера лота: фиксированное значение или процент от доступного маржи
Начальный лот (iStartLots) Начальный лот — Базовый размер лота для первых позиций в каждой подсистеме
Множитель лота (iMultiplier) Множитель лота — Коэффициент, применяемый к размеру лота при наращивании позиций
Дистанция между позициями (iOrderStep) Дистанция между позициями — Минимальное ценовое расстояние в пунктах между уровнями открытия новых позиций
Минимальный профит в пунктах (iMinimalProfit) Минимальный профит в пунктах — Добавочный профит в пунктах, учитываемый при расчёте ценовых уровней для модификации ордеров
Проскальзывание (iSlippage) Проскальзывание — Допустимое отклонение цены исполнения ордеров в пунктах
Получить полный код

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

#property version     "24.110"
#property description "Разработка торговых роботов и автоматизация торговых процессов."
#property description "Уведомления о начале вебинара в телеграмм "
#property strict
/*
Название торгового робота?
*/
enum ENUM_TYPE_CALC_LOTS
  {
   Lots    = 0, // Лоты
   Percent = 1  // Процент
  };

input int                  iTakeProfit         = 300;      // Тейк Профит
sinput ENUM_TYPE_CALC_LOTS iTypeLots           = Lots;  // Тип рассчета лота Процент или Значение
sinput double              iStartLots          = 0.01;     // Начальный лот
input double               iMultiplier         = 2.0;      // Множитель лота
input int                  iOrderStep          = 290;      // Дистанция между позициями
input int                  iMinimalProfit      = 30;       // Минимальный профит в пунктах
sinput int                 iSlippage           = 30;       // Проскальзывание

struct _str_
  {
   int               magic;
   string            name;
   double            depo;
   string            rezult;
   bool              work;      // Добавил переменную

   datetime          time_start;
   datetime          time_stop;
   int               deals;

   void              Print()
     {
      ::Print(" =============================================== ");
      /*
            ::Print("                time_stop " + DoubleToString(time_stop  ,8));
             ::Print("                Сделок в день " + DoubleToString(time_start,8));
              ::Print("                Сделок в день " + DoubleToString(((int)time_stop - (int)time_start),8));

      ::Print("                Сделок в день " + DoubleToString(((int)time_stop - (int)time_start)/(60*60*24)/(deals==0?1:deals),8));
      */
      ::Print("             Позиций " + (string)deals);
      ::Print("          Результат " + rezult);
      ::Print("       Депозит " + DoubleToString(depo, 2));
      ::Print("    Magic " + (string)magic);
      ::Print(" Стратегия " + name);
      ::Print(" =============================================== ");
     }
  };
_str_ strategy[] =
  {
     {1, "MA",         500, "", true, NULL, NULL, 0},
     {2, "BB",         500, "", true, NULL, NULL, 0},
     {3, "Candle 1",   500, "", true, NULL, NULL, 0},
     {4, "Candle 2",   500, "", true, NULL, NULL, 0},
     {5, "Stochastic", 500, "", true, NULL, NULL, 0},
     {6, "MACD",       500, "", true, NULL, NULL, 0},
     {7, "RSI",        500, "", true, NULL, NULL, 0},
  };

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

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

bool Strategy(int iIndex)
  {

   double
   BuyPriceMax = 0, BuyPriceMin = 0, BuyPriceMaxLot = 0, BuyPriceMinLot = 0, BuyPriceSumm = 0, BuyLotsSumm = 0,
   SelPriceMin = 0, SelPriceMax = 0, SelPriceMinLot = 0, SelPriceMaxLot = 0, SelPriceSumm = 0, SelLotsSumm = 0,

   op = 0, lt = 0, sl = 0, tp = 0, profit = 0;

   int    b = 0, s = 0, ty = -1, tk = -1;

   for(int i = OrdersTotal() - 1; i >= 0; i--)
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         if(strategy[iIndex].work)                            // === Стратегии разрешено работать
            if(OrderMagicNumber() == strategy[iIndex].magic)
               if(OrderSymbol() == _Symbol)
                 {

                  op = OrderOpenPrice();
                  lt = OrderLots();
                  ty = OrderType();

                  if(ty == OP_BUY)
                    {
                     if(op > BuyPriceMax || BuyPriceMax == 0)
                       {
                        BuyPriceMax    = op;
                        BuyPriceMaxLot = lt;
                       }
                     if(op < BuyPriceMin || BuyPriceMin == 0)
                       {
                        BuyPriceMin    = op;
                        BuyPriceMinLot = lt;
                       }
                     b++;
                     BuyPriceSumm += op * lt;
                     BuyLotsSumm  += lt;
                    }

                  if(ty == OP_SELL)
                    {
                     if(op > SelPriceMax || SelPriceMax == 0)
                       {
                        SelPriceMax    = op;
                        SelPriceMaxLot = lt;
                       }
                     if(op < SelPriceMin || SelPriceMin == 0)
                       {
                        SelPriceMin    = op;
                        SelPriceMinLot = lt;
                       }
                     s++;
                     SelPriceSumm += op * lt;
                     SelLotsSumm  += lt;
                    }
                 }

   double   AwerageBuyPrice = 0, AwerageSelPrice = 0;

   if(b >= 2 && BuyLotsSumm > 0)
      AwerageBuyPrice = Nd((BuyPriceSumm / BuyLotsSumm) + iMinimalProfit * _Point);

   if(s >= 2 && SelLotsSumm > 0)
      AwerageSelPrice = Nd((SelPriceSumm / SelLotsSumm) + iMinimalProfit * _Point);

   double BuyLot = 0, SelLot = 0;
   if(b == 0)
      BuyLot = iTypeLots == Percent ? LotPercent(iStartLots) : iStartLots;
   else
      BuyLot = BuyPriceMinLot * iMultiplier;  // Добавить код пересчета с 0,01 * 1,5 =

   if(s == 0)
      SelLot = iTypeLots == Percent ? LotPercent(iStartLots) : iStartLots;
   else
      SelLot = SelPriceMaxLot * iMultiplier;

   BuyLot = CheckVolumeValue(BuyLot);
   SelLot = CheckVolumeValue(SelLot);

   if(strategy[iIndex].work)                            // === Стратегии разрешено работать
     {
      if(Signal(strategy[iIndex].magic) == OP_BUY)
         if((b == 0) || (b > 0 && (BuyPriceMin - Ask) >= (iOrderStep * _Point)))
            if(OrderSend(_Symbol, OP_BUY, Nd(BuyLot, 2), Nd(Ask), iSlippage, 0, 0, "Grid", strategy[iIndex].magic, 0, clrGreen) < 0)
               Print("OrderSend error OP_BUY #", GetLastError());

      if(Signal(strategy[iIndex].magic) == OP_SELL)
         if((s == 0) || (s > 0 && (Bid - SelPriceMax) >= (iOrderStep * _Point)))
            if(OrderSend(_Symbol, OP_SELL, Nd(SelLot, 2), Nd(Bid), iSlippage, 0, 0, "Grid", strategy[iIndex].magic, 0, clrGreen) < 0)
               Print("OrderSend error OP_SELL #", GetLastError());
     }

   for(int i = OrdersTotal() - 1; i >= 0; i--)
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         if(strategy[iIndex].work)                            // === Стратегии разрешено работать
            if(OrderMagicNumber() == strategy[iIndex].magic)
               if(OrderSymbol() == _Symbol)
                 {

                  op = OrderOpenPrice();
                  lt = OrderLots();
                  ty = OrderType();
                  tk = OrderTicket();
                  sl = OrderStopLoss();
                  tp = OrderTakeProfit();
                  profit += OrderProfit() + OrderSwap() + OrderCommission();

                  if(ty == OP_BUY)
                    {
                     if(iTakeProfit > 0)
                        if(b == 1 && tp == 0)
                           if(!OrderModify(tk, Nd(op), Nd(sl), Nd(op + iTakeProfi

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

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

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

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

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

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

Стоимость полного кода
844,40₽ ≈ $10.32