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

Ilan-Combi_Dinamic

ilan-combi _dinamic.mq4

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

ares_indicator.pineTradingView · 1 общих теговgold_trend_revers.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 1 общих тегов! cycle-identifier.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 1 общих теговprecisionflowea.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный продукт представляет собой торгового советника (Expert Advisor) для платформы MetaTrader 4, написанный на языке MQL4. Советник анализирует ценовые данные и технические индикаторы, управляет отложенными и рыночными ордерами, а также реализует функции трейлинг-стопов, контроля рисков по средствам счёта и автоматического закрытия позиций по тайм-ауту. В основе работы лежит обработка событий в функции start() с использованием торговых API MetaTrader 4 (OrderSend, OrderClose, OrderModify). Советник содержит два независимых торговых модуля — «First» и «Second», каждый из которых управляет собственными позициями с уникальными магическими числами, параметрами риска и алгоритмами расчёта объёмов. Модули используют индикатор DeMarker для определения шага лота, а также RSI для фильтрации направления входа в сделку. Динамический режим позволяет адаптировать шаг в пипсах к текущему диапазону цены за заданное количество баров, ограничивая значения верхней и нижней границами.

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

НастройкаОписание
_ Разделитель — Текстовый разделитель в окне настроек советника.
?????? ????? ? ????????? 0.01 ??? ???? ???? ????? 0.1 ?? ????????? ??? ? ????? ????? 0.16 (MinLots) Минимальный лот — Минимальный размер лота, используемый как базовое значение для расчёта объёма сделок.
?? - ?????????????? (MM) Управление капиталом — Включает или выключает режим автоматического расчёта лота на основе размера средств на счёте.
????????? DeMarker ??? ??????? ???? (PeriodDeM) Период DeMarker — Период индикатора DeMarker, применяемый для расчёта шага лота.
?????? ???????? (DynamicPips) Динамические пипсы — Включает адаптивный расчёт шага в пипсах на основе диапазона цены за указанное количество баров.
????????? ??????? (DefaultPips) Пипсы по умолчанию — Значение шага в пипсах по умолчанию, используемое как граница при динамическом режиме.
?????????? ????? ??? ??????? ????????????? (Bar) Количество баров — Число баров для анализа диапазона цены при динамическом расчёте шага.
__ Разделитель — Текстовый разделитель в окне настроек советника.
????????? ????? ? ????? ?? ?????????? ??? ?????? ? ?????????. ?????? ??? 0.1, ?????: 0.15, 0.26, 0.4 (LotExponent_H) Экспонента лота First — Множитель экспоненциального увеличения лота для первой торговой системы.
???? ?????? (TakeProfit_H) Тейк-профит First — Уровень фиксации прибыли в пипсах для первой торговой системы.
??????????????? (slip_H) Проскальзывание First — Допустимое проскальзывание цены в пунктах для первой торговой системы.
??????????? ?????????? ???????????? ???????? ??????? (MaxTrades_H) Макс. сделок First — Максимальное количество одновременных сделок для первой торговой системы.
___ Разделитель — Текстовый разделитель в окне настроек советника.
MultiLotsFactor_G Множитель лота Second — Множитель увеличения лота для второй торговой системы.
TakeProfit_G Тейк-профит Second — Уровень фиксации прибыли в пипсах для второй торговой системы.
MaxCountOrders_G Макс. сделок Second — Максимальное количество одновременных сделок для второй торговой системы.
slippage_G Проскальзывание Second — Допустимое проскальзывание цены в пунктах для второй торговой системы.
Получить полный код

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

extern string _= "?????_?????????";
extern double MinLots = 0.01;       // ?????? ????? ? ????????? 0.01 ??? ???? ???? ????? 0.1 ?? ????????? ??? ? ????? ????? 0.16
extern bool MM =false;              // ?? - ??????????????
extern int PeriodDeM = 15;          //????????? DeMarker ??? ??????? ????

extern bool   DynamicPips = true;   // ?????? ????????
extern int    DefaultPips = 22;     // ????????? ???????
extern int    Bar = 36;             //?????????? ????? ??? ??????? ?????????????
int PipStep_H;//=0;

extern string __= "????????? First";
bool UseTrailingStop_H = FALSE;// ???????????? ???????? ????
extern double LotExponent_H = 1.69;  // ????????? ????? ? ????? ?? ?????????? ??? ?????? ? ?????????. ?????? ??? 0.1, ?????: 0.15, 0.26, 0.43 ...

double Lots_H;                      // ?????? ????? ? ????????? 0.01 ??? ???? ???? ????? 0.1 ?? ????????? ??? ? ????? ????? 0.16
int lotdecimal_H = 2;               // 2 - ????????? 0.01, 1 - ???? ???? 0.1, 0 - ?????????? ???? 1.0
extern double TakeProfit_H = 10.0;  // ???? ??????

extern double slip_H = 3.0;         // ???????????????
extern int MaxTrades_H = 10;        // ??????????? ?????????? ???????????? ???????? ???????
int MagicNumber_H = 111;            // ?????

bool UseEquityStop_H = FALSE;       // ???????????? ???? ? ?????????
double TotalEquityRisk_H = 20.0;    // ???? ? ????????? ?? ????????
bool UseTimeOut_H = FALSE;          // ???????????? ???????????? ??????? ?? ???????
double MaxTradeOpenHours_H = 48.0;  // ????? ?????? ????? ??????????? ??????? ??????
double Stoploss_H = 500.0;          
double TrailStart_H = 15.0;
double TrailStop_H = 5.0;

double PriceTarget_H, StartEquity_H, BuyTarget_H, SellTarget_H ;
double AveragePrice_H, SellLimit_H, BuyLimit_H ;
double LastBuyPrice_H, LastSellPrice_H, Spread_H;
bool flag_H;
string EAName_H = "First";
int timeprev_H = 0, expiration_H;
int NumOfTrades_H = 0;
double iLots_H;
int cnt_H = 0, total_H;
double Stopper_H = 0.0;
bool TradeNow_H = FALSE, LongTrade_H = FALSE, ShortTrade_H = FALSE;
int ticket_H;
bool NewOrdersPlaced_H = FALSE;
double AccountEquityHighAmt_H, PrevEquity_H;

extern string ___= "????????? Second";
bool UseTrailing_G = FALSE;
extern double MultiLotsFactor_G = 1.69;
extern double TakeProfit_G = 10.0;
int StepLots_G;

double TrailStart_G = 15.0;
double TrailStop_G = 5.0;
extern int MaxCountOrders_G = 10;
bool SafeEquity_G = FALSE;
double SafeEquityRisk_G = 20.0;
extern double slippage_G = 3.0;
int MagicNumber_G = 13579;

double Step_H;
double Step_G;
double Step_HLot;
double Step_GLot;

bool gi_220_G = FALSE;
double gd_224_G = 48.0;
double g_pips_232_G = 500.0;
double gd_240_G = 0.0;
bool gi_248_G = TRUE;
bool gi_252_G = FALSE;
int gi_256_G = 1;
double g_price_260_G;
double gd_268_G;
double gd_unused_276_G;
double gd_unused_284_G;
double g_price_292_G;
double g_bid_300_G;
double g_ask_308_G;
double gd_316_G;
double gd_324_G;
double gd_340_G;
bool gi_348_G;
string gs_352_G = "Second";
int g_time_360_G = 0;
int gi_364_G;
int gi_368_G = 0;    // ? ??????
double gd_372_G;
int g_pos_380_G = 0; //cnt_H
int gi_384_G;
double gd_388_G = 0.0;
bool gi_396_G = FALSE;
bool gi_400_G = FALSE;
bool gi_404_G = FALSE;
int gi_408_G;
bool gi_412_G = FALSE;
int g_datetime_416_G = 0;
int g_datetime_420_G = 0;
double gd_424_G;
double gd_432_G;

string    txt,txt1;

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

int deinit()
  {

 ObjectDelete("Lable");
 ObjectDelete("Lable1"); 

return(0);
}

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

{
    Comment(""            //??????????
         + "\n" 
         + "Ilan-Combi_Dinamic" 
         + "\n" 
         + "________________________________"  
         + "\n" 
         + "??????:         " + AccountCompany()
         + "\n"
         + "????? ???????:  " + TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS)
         + "\n"        
         + "________________________________"  
         + "\n" 
         + "????:             " + AccountName() 
         + "\n" 
         + "????? ????        " + AccountNumber()
         + "\n" 
         + "?????? ?????:   " + AccountCurrency()   
         + "\n"
         + "?????:              1:" + DoubleToStr(AccountLeverage(), 0)
         + "\n"          
         + "_______________________________"
         + "\n"
         + "????? ???????                  :" + OrdersTotal()
         + "\n"
         + "_______________________________"
         + "\n"           
         + "??????:                       " + DoubleToStr(AccountBalance(), 2)          
         + "\n" 
         + "????????? ????????:   " + DoubleToStr(AccountEquity(), 2)
         + "\n"      
         + "_______________________________");
   }

 {
 if (DynamicPips)  {
     double hival=High[iHighest(NULL,0,MODE_HIGH,Bar,1)];        // ?????????? ?????????? ???? ?? ????????? 36 ????
     double loval=Low[iLowest(NULL,0,MODE_LOW,Bar,1)];           // ?????????? ?????????? ???? ?? ????????? 36 ????//chart used for symbol and time period
     PipStep_H=NormalizeDouble((hival-loval)/3/Point,2);        // ?????? PipStep
     if (PipStep_H<DefaultPips/2) PipStep_H = DefaultPips/2;
     if (PipStep_H>DefaultPips*2) PipStep_H = DefaultPips*2;    // if dynamic pips fail, assign pips extreme value
   } else PipStep_H = DefaultPips;
  }

 {
 if (DynamicPips)  {
     double hival_G=High[iHighest(NULL,0,MODE_HIGH,Bar,1)];      // ?????????? ?????????? ???? ?? ????????? 36 ????
     double loval_G=Low[iLowest(NULL,0,MODE_LOW,Bar,1)];         // ?????????? ?????????? ???? ?? ????????? 36 ????//chart used for symbol and time period
     StepLots_G=NormalizeDouble((hival_G-loval_G)/3/Point,2);   // ?????? PipStep
     if (StepLots_G<DefaultPips/2) StepLots_G = DefaultPips/2;
     if (StepLots_G>DefaultPips*2) StepLots_G = DefaultPips*2;  // if dynamic pips fail, assign pips extreme value
   } else StepLots_G = DefaultPips;
  }

   double PrevCl_H;
   double CurrCl_H;

    double Step_HLot = NormalizeDouble((iDeMarker(NULL, 0, PeriodDeM, 1)),2)/3;

     if(MM==true)
   {if (MathCeil(AccountBalance ()) < 2000)  // MM = ???? ???? ?????? 2000, ?? ??? = Lots (0.01), ?????- % ?? ????
    {Lots_H = MinLots *100* Step_HLot;
     }  
     else
     {Lots_H = NormalizeDouble(0.00001 * MathCeil(AccountBalance ()) * Step_HLot,2);
     }
    }
     else Lots_H = MinLots *100* Step_HLot;

   double l_ord_lots_8_G;
   double l_ord_lots_16_G;
   double l_iclose_24_G;
   double l_iclose_32_G;

   if (UseTrailingStop_H) TrailingAlls_H(TrailStart_H, TrailStop_H, AveragePrice_H);
   if (UseTimeOut_H) {
      if (TimeCurrent() >= expiration_H) {
         CloseThisSymbolAll_H();
         Print("Closed All due to TimeOut");
      }
   }
   if (timeprev_H == Time[0]) return (0);
   timeprev_H = Time[0];
   double CurrentPairProfit_H = CalculateProfit_H();
   if (UseEquityStop_H) {
      if (CurrentPairProfit_H < 0.0 && MathAbs(CurrentPairProfit_H) > TotalEquityRisk_H / 100.0 * AccountEquityHigh_H()) {
         CloseThisSymbolAll_H();
         Print("Closed All due to Stop Out");
         NewOrdersPlaced_H = FALSE;
      }
   }
   total_H = CountTrades_H();
   if (total_H == 0) flag_H = FALSE;
   for (cnt_H = OrdersTotal() - 1; cnt_H >= 0; cnt_H--) {
      OrderSelect(cnt_H, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_H) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_H) {
         if (OrderType() == OP_BUY) {
            LongTrade_H = TRUE;
            ShortTrade_H = FALSE;
            break;
         }
      }
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_H) {
         if (OrderType() == OP_SELL) {
            LongTrade_H = FALSE;
            ShortTrade_H = TRUE;
            break;
         }
      }
   }
   if (total_H > 0 && total_H <= MaxTrades_H) {
      RefreshRates();
      LastBuyPrice_H = FindLastBuyPrice_H();
      LastSellPrice_H = FindLastSellPrice_H();
      if (LongTrade_H && LastBuyPrice_H - Ask >= PipStep_H * Point) TradeNow_H = TRUE;
      if (ShortTrade_H && Bid - LastSellPrice_H >= PipStep_H * Point) TradeNow_H = TRUE;
   }
   if (total_H < 1) {
      ShortTrade_H = FALSE;
      LongTrade_H = FALSE;
      TradeNow_H = TRUE;
      StartEquity_H = AccountEquity();
   }
   if (TradeNow_H) {
      LastBuyPrice_H = FindLastBuyPrice_H();
      LastSellPrice_H = FindLastSellPrice_H();
      if (ShortTrade_H) {
         NumOfTrades_H = total_H;
         iLots_H = NormalizeDouble(Lots_H * MathPow(LotExponent_H, NumOfTrades_H), lotdecimal_H);
         RefreshRates();
         ticket_H = OpenPendingOrder_H(1, iLots_H, Bid, slip_H, Ask, 0, 0, EAName_H + "-" + NumOfTrades_H, MagicNumber_H, 0, HotPink);
         if (ticket_H < 0) {
            Print("Error: ", GetLastError());
            return (0);
         }
         LastSellPrice_H = FindLastSellPrice_H();
         TradeNow_H = FALSE;
         NewOrdersPlaced_H = TRUE;
      } else {
         if (LongTrade_H) {
            NumOfTrades_H = total_H;
            iLots_H = NormalizeDouble(Lots_H * MathPow(LotExponent_H, NumOfTrades_H), lotdecimal_H);
            ticket_H = OpenPendingOrder_H(0, iLots_H, Ask, slip_H, Bid, 0, 0, EAName_H + "-" + NumOfTrades_H, MagicNumber_H, 0, Lime);
            if (ticket_H < 0) {
               Print("Error: ", GetLastError());
               return (0);
            }
            LastBuyPrice_H = FindLastBuyPrice_H();
            TradeNow_H = FALSE;
            NewOrdersPlaced_H = TRUE;
         }
      }
   }
   if (TradeNow_H && total_H < 1) {
      PrevCl_H = iHigh(Symbol(), 0, 1);
      CurrCl_H =  iLow(Symbol(), 0, 2);
      SellLimit_H = Bid;
      BuyLimit_H = Ask;
      if (!ShortTrade_H && !LongTrade_H) {
         NumOfTrades_H = total_H;
         iLots_H = NormalizeDouble(Lots_H * MathPow(LotExponent_H, NumOfTrades_H), lotdecimal_H);
         if (PrevCl_H > CurrCl_H) {

            if (iRSI(NULL, PERIOD_H1, 14, PRICE_CLOSE, 1) > 30.0) {
               ticket_H = OpenPendingOrder_H(1, iLots_H, SellLimit_H, slip_H, SellLimit_H, 0, 0, EAName_H + "-" + NumOfTrades_H, MagicNumber_H, 0, HotPink);
               if (ticket_H < 0) {
                  Print("Error: ", GetLastError());
                  return (0);
               }
               LastBuyPrice_H = FindLastBuyPrice_H();
               NewOrdersPlaced_H = TRUE;
            }
         } else {

            if (iRSI(NULL, PERIOD_H1, 14, PRICE_CLOSE, 1) < 70.0) {
               ticket_H = OpenPendingOrder_H(0, iLots_H, BuyLimit_H, slip_H, BuyLimit_H, 0, 0, EAName_H + "-" + NumOfTrades_H, MagicNumber_H, 0, Lime);
               if (ticket_H < 0) {
                  Print("Error: ", GetLastError());
                  return (0);
               }
               LastSellPrice_H = FindLastSellPrice_H();
               NewOrdersPlaced_H = TRUE;
            }
         }

if (ticket_H > 0) expiration_H = TimeCurrent() + 60.0 * (60.0 * MaxTradeOpenHours_H);
TradeNow_H = FALSE;
}
}
total_H = CountTrades_H();
AveragePrice_H = 0;
double Count_H = 0;
for (cnt_H = OrdersTotal() - 1; cnt_H >= 0; cnt_H--) {
OrderSelect(cnt_H, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_H) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_H) {
if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
AveragePrice_H += OrderOpenPrice() * OrderLots();
Count_H += OrderLots();
}
}
}
if (total_H > 0) AveragePrice_H = NormalizeDouble(AveragePrice_H / Count_H, Digits);
if (NewOrdersPlaced_H) {
for (cnt_H = OrdersTotal() - 1; cnt_H >= 0; cnt_H--) {
OrderSelect(cnt_H, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_H) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_H) {
if (OrderType() == OP_BUY) {
PriceTarget_H = AveragePrice_H + TakeProfit_H * Point;
BuyTarget_H = PriceTarget_H;
Stopper_H = AveragePrice_H - Stoploss_H * Point;
flag_H = TRUE;
}
}
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_H) {
if (OrderType() == OP_SELL) {
PriceTarget_H = AveragePrice_H - TakeProfit_H * Point;
SellTarget_H = PriceTarget_H;
Stopper_H = AveragePrice_H + Stoploss_H * Point;
flag_H = TRUE;
}
}
}
}
if (NewOrdersPlaced_H) {
if (flag_H == TRUE) {
for (cnt_H = OrdersTotal() - 1; cnt_H >= 0; cnt_H--) {
OrderSelect(cnt_H, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_H) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_H) OrderModify(OrderTicket(), AveragePrice_H, OrderStopLoss(), PriceTarget_H, 0, Yellow);
NewOrdersPlaced_H = FALSE;
}
}
}

   if (UseTrailing_G) TrailingAlls_G(TrailStart_G, TrailStop_G, g_price_292_G);

   if (gi_220_G) {
      if (TimeCurrent() >= gi_364_G) {
         CloseThisSymbolAll_G();
         Print("Closed All due to TimeOut");
      }
   }
   if (g_time_360_G == Time[0]) return (0);
   g_time_360_G = Time[0];
   double ld_0_G = CalculateProfit_G();
   if (SafeEquity_G) {
      if (ld_0_G < 0.0 && MathAbs(ld_0_G) > SafeEquityRisk_G / 100.0 * AccountEquityHigh_G()) {
         CloseThisSymbolAll_G();
         Print("Closed All due to Stop Out");
         gi_412_G = FALSE;
      }
   }
   gi_384_G = CountTrades_G();
   if (gi_384_G == 0) gi_348_G = FALSE;
   for (g_pos_380_G = OrdersTotal() - 1; g_pos_380_G >= 0; g_pos_380_G--) {
      OrderSelect(g_pos_380_G, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_G) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_G) {
         if (OrderType() == OP_BUY) {
            gi_400_G = TRUE;
            gi_404_G = FALSE;
            l_ord_lots_8_G = OrderLots();
            break;
         }
      }
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_G) {
         if (OrderType() == OP_SELL) {
            gi_400_G = FALSE;
            gi_404_G = TRUE;
            l_ord_lots_16_G = OrderLots();
            break;
         }
      }
   }
   if (gi_384_G > 0 && gi_384_G <= MaxCountOrders_G) {
      RefreshRates();
      gd_316_G = FindLastBuyPrice_G();
      gd_324_G = FindLastSellPrice_G();
      if (gi_400_G && gd_316_G - Ask >= StepLots_G * Point) gi_396_G = TRUE;
      if (gi_404_G && Bid - gd_324_G >= StepLots_G * Point) gi_396_G = TRUE;
   }
   if (gi_384_G < 1) {
      gi_404_G = FALSE;
      gi_400_G = FALSE;
      gi_396_G = TRUE;
      gd_268_G = AccountEquity();
   }
   if (gi_396_G) {
      gd_316_G = FindLastBuyPrice_G();
      gd_324_G = FindLastSellPrice_G();
      if (gi_404_G) {
         if (gi_252_G) {
            fOrderCloseMarket_G(0, 1);
            gd_372_G = NormalizeDouble(MultiLotsFactor_G * l_ord_lots_16_G, gd_240_G);
         } else gd_372_G = fGetLots_G(OP_SELL);
         if (gi_248_G) {
            gi_368_G = gi_384_G;
            if (gd_372_G > 0.0) {
               RefreshRates();
               gi_408_G = OpenPendingOrder_G(1, gd_372_G, Bid, slippage_G, Ask, 0, 0, gs_352_G + "-" + gi_368_G, MagicNumber_G, 0, HotPink);
               if (gi_408_G < 0) {
                  Print("Error: ", GetLastError());
                  return (0);
               }
               gd_324_G = FindLastSellPrice_G();
               gi_396_G = FALSE;
               gi_412_G = TRUE;
            }
         }
      } else {
         if (gi_400_G) {
            if (gi_252_G) {
               fOrderCloseMarket_G(1, 0);
               gd_372_G = NormalizeDouble(MultiLotsFactor_G * l_ord_lots_8_G, gd_240_G);
            } else gd_372_G = fGetLots_G(OP_BUY);
            if (gi_248_G) {
               gi_368_G = gi_384_G;
               if (gd_372_G > 0.0) {
                  gi_408_G = OpenPendingOrder_G(0, gd_372_G, Ask, slippage_G, Bid, 0, 0, gs_352_G + "-" + gi_368_G, MagicNumber_G, 0, Lime);
                  if (gi_408_G < 0) {
                     Print("Error: ", GetLastError());
                     return (0);
                  }
                  gd_316_G = FindLastBuyPrice_G();
                  gi_396_G = FALSE;
                  gi_412_G = TRUE;
               }
            }
         }
      }
   }
   if (gi_396_G && gi_384_G < 1) {
      l_iclose_24_G = iClose(Symbol(), 0, 2);
      l_iclose_32_G = iClose(Symbol(), 0, 1);
      g_bid_300_G = Bid;
      g_ask_308_G = Ask;
      if (!gi_404_G && !gi_400_G) {
         gi_368_G = gi_384_G;
         if (l_iclose_24_G > l_iclose_32_G) {
            gd_372_G = fGetLots_G(OP_SELL);
            if (gd_372_G > 0.0) {
               gi_408_G = OpenPendingOrder_G(1, gd_372_G, g_bid_300_G, slippage_G, g_bid_300_G, 0, 0, gs_352_G + " " + MagicNumber_G + "-" + gi_368_G, MagicNumber_G, 0, HotPink);
               if (gi_408_G < 0) {
                  Print(gd_372_G, "Error: ", GetLastError());
                  return (0);
               }
               gd_316_G = FindLastBuyPrice_G();
               gi_412_G = TRUE;
            }
         } else {
            gd_372_G = fGetLots_G(OP_BUY);
            if (gd_372_G > 0.0) {
               gi_408_G = OpenPendingOrder_G(0, gd_372_G, g_ask_308_G, slippage_G, g_ask_308_G, 0, 0, gs_352_G + " " + MagicNumber_G + "-" + gi_368_G, MagicNumber_G, 0, Lime);
               if (gi_408_G < 0) {
                  Print(gd_372_G, "Error: ", GetLastError());
                  return (0);
               }
               gd_324_G = FindLastSellPrice_G();
               gi_412_G = TRUE;
            }
         }
      }
      if (gi_408_G > 0) gi_364_G = TimeCurrent() + 60.0 * (60.0 * gd_224_G);
      gi_396_G = FALSE;
   }
   gi_384_G = CountTrades_G();
   g_price_292_G = 0;
   double ld_40_G = 0;
   for (g_pos_380_G = OrdersTotal() - 1; g_pos_380_G >= 0; g_pos_380_G--) {
      OrderSelect(g_pos_380_G, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_G) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_G) {
         if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
            g_price_292_G += OrderOpenPrice() * OrderLots();
            ld_40_G += OrderLots();
         }
      }
}
   if (gi_384_G > 0) g_price_292_G = NormalizeDouble(g_price_292_G / ld_40_G, Digits);
   if (gi_412_G) {
      for (g_pos_380_G = OrdersTotal() - 1; g_pos_380_G >= 0; g_pos_380_G--) {
         OrderSelect(g_pos_380_G, SELECT_BY_POS, MODE_TRADES);
         if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_G) continue;
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_G) {
            if (OrderType() == OP_BUY) {
               g_price_260_G = g_price_292_G + TakeProfit_G * Point;
               gd_unused_276_G = g_price_260_G;
               gd_388_G = g_price_292_G - g_pips_232_G * Point;
               gi_348_G = TRUE;
}
}
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_G) {
            if (OrderType() == OP_SELL) {
               g_price_260_G = g_price_292_G - TakeProfit_G * Point;
               gd_unused_284_G = g_price_260_G;
               gd_388_G = g_price_292_G + g_pips_232_G * Point;
               gi_348_G = TRUE;
}
}
}
}
   if (gi_412_G) {
      if (gi_348_G == TRUE) {
         for (g_pos_380_G = OrdersTotal() - 1; g_pos_380_G >= 0; g_pos_380_G--) {
            OrderSelect(g_pos_380_G, SELECT_BY_POS, MODE_TRADES);
            if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_G) continue;
            if (OrderSymbol() == Symbol(

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

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

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

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

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

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

Стоимость полного кода
3 055,20₽ ≈ $37.34