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

VR Smart Grid Lite for ff

vr smart grid lite for ff 18-441.mq4
Вы автор или правообладатель?

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

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

О программе

VR Smart Grid Lite for ff — торговый советник для MetaTrader 4, работающий по принципу сетки (grid). Советник автоматически открывает и управляет покупательскими и продавческими позициями на текущем символе, используя усреднение цен открытых ордеров и множитель лотов для наращивания позиций.

Советник обрабатывает событие OnTick, отслеживает существующие ордера по заданному magic number и символу, а также добавляет новые позиции при достижении определённых ценовых уровней. Take Profit устанавливается и корректируется через модификацию ордеров. При достижении минимальной прибыли советник выполняет корректировку стоп-лосса и тейк-профита по усреднённым ценам.

В качестве торгового API используются стандартные функции MetaTrader 4: OrderSend для открытия позиций и OrderModify для изменения параметров ордеров. Советник не содержит встроенной внешней библиотеки и работает как автономный эксперт.

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

НастройкаОписание
Take Profit (in pips) (iTakeProfit) Take Profit — Take Profit (in pips)
Start lot (iStartLots) Начальный лот — Start lot
Maximal Lots (iMaximalLots) Максимальные лоты — Maximal Lots
Point order step Profit (in pips) (iPointOrderStepProfit) Шаг ордера прибыль — Point order step Profit (in pips)
Point order step Loss (in pips) (iPointOrderStepLoss) Шаг ордера убыток — Point order step Loss (in pips)
Minimal profit for close grid (in pips) (iMinimalProfit) Минимальная прибыль — Minimal profit for close grid (in pips)
Magic Number (in number) (iMagicNumber) Magic Number — Magic Number (in number)
Slippage (in pips) (iSlippage) Проскальзывание — Slippage (in pips)
Lot Multiplier for Martingale (iLotmultiplier) Множик лота — Lot Multiplier for Martingale
Получить полный код

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

#property version     "18.044"
#property description " "
#property strict

input int          iTakeProfit            = 500;      // Take Profit (in pips)
input double       iStartLots             = 0.01;     // Start lot
input double       iMaximalLots           = 2.56;     // Maximal Lots 
input int          iPointOrderStepProfit  = 390;      // Point order step Profit (in pips)
input int          iPointOrderStepLoss    = 390;      // Point order step Loss (in pips)
input int          iMinimalProfit         = 70;       // Minimal profit for close grid (in pips)
input int          iMagicNumber           = 227;      // Magic Number (in number)
input int          iSlippage              = 30;       // Slippage (in pips)
input double       iLotmultiplier         = 2;        // Lot Multiplier for Martingale  

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

void OnTick()
  {
      // код доступен только после оплаты
   }
   double
   BuyPriceMax=0,BuyPriceMin=0,BuyPriceMaxLot=0,BuyPriceMinLot=0,
   SelPriceMin=0,SelPriceMax=0,SelPriceMinLot=0,SelPriceMaxLot=0;

   int
   BuyPriceMaxTic=0,BuyPriceMinTic=0,SelPriceMaxTic=0,SelPriceMinTic=0;

   double
   op=0,lt=0,tp=0;

   int
   tk=0,b=0,s=0;

   for(int i=OrdersTotal()-1;i>=0;i--)
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         if(OrderMagicNumber()==iMagicNumber)
            if(OrderSymbol()==Symbol())
              {
               op=NormalizeDouble(OrderOpenPrice(),Digits());
               lt=NormalizeDouble(OrderLots(),2);
               tk=OrderTicket();
               if(OrderType()==OP_BUY)
                 {
                  b++;
                  if(op>BuyPriceMax || BuyPriceMax==0)
                    {
                     BuyPriceMax    = op;
                     BuyPriceMaxLot = lt;
                     BuyPriceMaxTic = tk;
                    }
                  if(op<BuyPriceMin || BuyPriceMin==0)
                    {
                     BuyPriceMin    = op;
                     BuyPriceMinLot = lt;
                     BuyPriceMinTic = tk;
                    }
                 }

               if(OrderType()==OP_SELL)
                 {
                  s++;
                  if(op>SelPriceMax || SelPriceMax==0)
                    {
                     SelPriceMax    = op;
                     SelPriceMaxLot = lt;
                     SelPriceMaxTic = tk;
                    }
                  if(op<SelPriceMin || SelPriceMin==0)
                    {
                     SelPriceMin    = op;
                     SelPriceMinLot = lt;
                     SelPriceMinTic = tk;
                    }
                 }
              }

   double   AwerageBuyPrice=0,AwerageSelPrice=0;
   if(b>=2) AwerageBuyPrice=NormalizeDouble((BuyPriceMax*BuyPriceMaxLot+BuyPriceMin*BuyPriceMinLot)/(BuyPriceMaxLot+BuyPriceMinLot)+iMinimalProfit*Point(),Digits());
   if(s>=2) AwerageSelPrice=NormalizeDouble((SelPriceMax*SelPriceMaxLot+SelPriceMin*SelPriceMinLot)/(SelPriceMaxLot+SelPriceMinLot)-iMinimalProfit*Point(),Digits());

   double BuyLot=0,SelLot=0;

   if(BuyPriceMinLot==0)
      BuyLot=iStartLots;
   else
      BuyLot=BuyPriceMinLot*iLotmultiplier;

   if(SelPriceMaxLot==0)
      SelLot=iStartLots;
   else
      SelLot=SelPriceMaxLot*iLotmultiplier;

   if(BuyLot>iMaximalLots)      BuyLot=iMaximalLots;
   if(SelLot>iMaximalLots)      SelLot=iMaximalLots;

   if(b==0 && (Close[1]>Open[1]))
      if(OrderSend(Symbol(),OP_BUY,NormalizeDouble(iStartLots,2),NormalizeDouble(Ask,Digits()),iSlippage,0,0,"VR Setka Lite",iMagicNumber,0,clrGreen)<0)
         Print("OrderSend error #",GetLastEr

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

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

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

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

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

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

Стоимость полного кода
500,90₽ ≈ $6.12