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

benefitea.mq4

Вы автор или правообладатель?

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

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

О программе

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

Включает систему виртуального тейк-профита (VTP) с функцией трейлинга, систему снижения риска (RRS), отслеживающую достижение целевой прибыли в процентах от баланса, а также сервисные ордера для закрытия сетки. Рассчитывает точки безубыточности для множественных позиций и позволяет задавать цветовую маркировку уровней. Содержит функцию отладки с точкой останова.

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

НастройкаОписание
_0_ Базовые настройки — Группа настроек: базовые параметры
New_Cycle Новый цикл — Разрешение запуска нового торгового цикла при отсутствии текущих позиций
Auto_Detect_5_Digit_Brokers Автоопределение 5-значных брокеров — Автоматическое определение 5-значных брокеров (корректирует расчёты для 3- и 5-значных котировок)
MAGIC Магический номер — Магический номер для идентификации ордеров советника
Slippage Проскальгивание — Допустимое проскальгивание при открытии и закрытии ордеров
Max_Trades Максимальное количество сделок — Максимальное количество одновременных сделок (проверяется при открытии)
Max_Lot Максимальный лот — Максимально допустимый размер лота для всех ордеров
_1_ Настройки времени — Группа настроек: фильтрация по времени
Time_Filters Фильтр времени — Включение/выключение фильтрации по времени торговли
Trading_Time_1_Start Начало периода 1 — Время начала первого разрешённого торгового периода (формат ЧЧ:ММ)
Trading_Time_1_End Конец периода 1 — Время окончания первого разрешённого торгового периода (формат ЧЧ:ММ)
Trading_Time_2_Start Начало периода 2 — Время начала второго разрешённого торгового периода (формат ЧЧ:ММ)
Trading_Time_2_End Конец периода 2 — Время окончания второго разрешённого торгового периода (формат ЧЧ:ММ)
_2_ Настройки тейк-профита — Группа настроек: тейк-профит
TP Тейк-профит — Основной тейк-профит для ордеров (в пунктах с учётом коррекции)
TP1 Дополнительный тейк-профит — Дополнительный тейк-профит для ордеров (в пунктах с учётом коррекции)
VTP Виртуальный тейк-профит — Включение/выключение виртуального тейк-профита с трейлингом
Tral_Start Начало трейлинга VTP — Начальная дистанция трейлинга для виртуального тейк-профита (в пунктах с учётом коррекции)
Tral_Size Размер трейлинга VTP — Размер трейлинга для виртуального тейк-профита (в пунктах с учётом коррекции)
_3_ Настройки RRS — Группа настроек: система снижения риска
RRS Система снижения риска — Включение/выключение системы снижения риска (Risk Reduction System)
RRS_nOrder Количество ордеров RRS — Количество ордеров, при котором активируется RRS-трейлинг лота
RRS_TP Тейк-профит RRS — Расстояние тейк-профита для RRS-линий (в пунктах с учётом коррекции)
RRS_Tral_Start Начало трейлинга RRS — Начальная дистанция трейлинга для RRS-линий (в пунктах с учётом коррекции)
RRS_Tral_Size Размер трейлинга RRS — Размер трейлинга для RRS-линий (в пунктах с учётом коррекции)
RRS_Profit_Percent Процент прибыли RRS — Процент прибыли от баланса для срабатывания RRS-закрытия позиций
_4_ Настройки Buy — Группа настроек: параметры Buy
Step_Buy Шаг Buy — Базовый шаг цены для открытия следующего Buy-ордера (в пунктах)
Step_Coef_Buy Коэффициент нарастания шага Buy — Коэффициент нарастания шага Buy (используется как степенной коэффициент)
Step_Coef_Start_Order_Buy Начальный ордер коэффициента Buy — Номер ордера, начиная с которого применяется коэффициент нарастания шага Buy
Step_Mass_Buy Масштаб шагов Buy — Перечень шагов Buy через запятую (альтернатива коэффициентному нарастанию)
Min_Lot_Buy Минимальный лот Buy — Минимальный размер лота для Buy-ордеров
Lot_Exp_Buy Экспонента лота Buy — Экспонента для расчёта лота Buy (используется в формуле Min_Lot_Buy * Lot_Exp_Buy^(orderNumber-2))
_5_ Настройки Sell — Группа настроек: параметры Sell
Step_Sell Шаг Sell — Базовый шаг цены для открытия следующего Sell-ордера (в пунктах)
Step_Coef_Sell Коэффициент нарастания шага Sell — Коэффициент нарастания шага Sell (используется как степенной коэффициент)
Step_Coef_Start_Order_Sell Начальный ордер коэффициента Sell — Номер ордера, начиная с которого применяется коэффициент нарастания шага Sell
Step_Mass_Sell Масштаб шагов Sell — Перечень шагов Sell через запятую (альтернатива коэффициентному нарастанию)
Min_Lot_Sell Минимальный лот Sell — Минимальный размер лота для Sell-ордеров
Lot_Exp_Sell Экспонента лота Sell — Экспонента для расчёта лота Sell (используется в формуле Min_Lot_Sell * Lot_Exp_Sell^(orderNumber-2))
_6_ Настройки цветов — Группа настроек: цвета
Buy_BE_Color Цвет безубыточности Buy — Цвет горизонтальной линии безубыточности для Buy-позиций
Sell_BE_Color Цвет безубыточности Sell — Цвет горизонтальной линии безубыточности для Sell-позиций
Buy_TP_Color Цвет тейк-профита Buy — Цвер горизонтальной линии тейк-профита для Buy-позиций
Sell_TP_Color Цвет тейк-профита Sell — Цвет горизонтальной линии тейк-профита для Sell-позиций
Buy_Trall_Color Цвет трейлинга Buy — Цвет горизонтальной линии трейлинга для Buy-позиций (VTP)
Sell_Trall_Color Цвет трейлинга Sell — Цвет горизонтальной линии трейлинга для Sell-позиций (VTP)
Buy_LOT_Trall_Color Цвет трейлинга лота Buy — Цвет линии трейлинга лота для Buy-позиций (RRS)
Sell_LOT_Trall_Color Цвет трейлинга лота Sell — Цвет линии трейлинга лота для Sell-позиций (RRS)
RRS_Color_Sell Цвет RRS Sell — Цвет линии безубыточности лота для Sell-позиций в режиме RRS
RRS_Color_Buy Цвет RRS Buy — Цвет линии безубыточности лота для Buy-позиций в режиме RRS
Получить полный код

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

#define MB_YESNO		0x00000004
#define IDYES			6

bool   ECN=true;//set true if using ECN broker. If true then EA will open orders with SL=0 and TP=0 and will modify these parameters after order(including pending) is executed
extern string _0_="================ Base settings ================";
extern bool   New_Cycle=true;
extern bool   Auto_Detect_5_Digit_Brokers=false;
extern int    MAGIC=222;
extern double Slippage=3;
extern double Max_Trades=17;
extern double Max_Lot=100;

extern string _1_ = "================ Time filter settings ================";
extern bool   Time_Filters=false;
extern string Trading_Time_1_Start="00:00";
extern string Trading_Time_1_End="06:00";
extern string Trading_Time_2_Start="13:00";
extern string Trading_Time_2_End="13:00";

extern string _2_ = "================ TP settings ================";
extern double TP=50;
extern double TP1=50;
extern bool   VTP=true;
extern double Tral_Start=10;
extern double Tral_Size=5;

extern string _3_            =  "================ Risk Reduction System ================";
extern bool   RRS            =  false;
extern int    RRS_nOrder         =  5;
extern double RRS_TP          =  50;
extern double RRS_Tral_Start  =  10;
extern double RRS_Tral_Size   =  5;
extern double RRS_Profit_Percent  =  15;

extern string _4_            =  "================ Buy settings ================";
extern double Step_Buy=5;
extern double Step_Coef_Buy=0;
extern int    Step_Coef_Start_Order_Buy=4;
extern string Step_Mass_Buy="60,60,60,60,60,60,80,80,90,120,120,120,150,150,150,200";
extern double Min_Lot_Buy=0.01;
extern double Lot_Exp_Buy=1.8;

extern string _5_            =  "================ Sell settings ================";
extern double Step_Sell=5;
extern double Step_Coef_Sell=0;
extern int    Step_Coef_Start_Order_Sell=4;
extern string Step_Mass_Sell="60,60,60,60,60,60,80,80,90,120,120,120,150,150,150,200";
extern double Min_Lot_Sell=0.01;
extern double Lot_Exp_Sell=1.8;

extern string _6_            =  "================ Color settings ================";
extern color  Buy_BE_Color=RoyalBlue;
extern color  Sell_BE_Color=Tomato;
extern color  Buy_TP_Color=DarkBlue;
extern color  Sell_TP_Color=Red;
extern color  Buy_Trall_Color=Yellow;
extern color  Sell_Trall_Color=Magenta;
extern color  Buy_LOT_Trall_Color=Yellow;
extern color  Sell_LOT_Trall_Color=Magenta;
extern color  RRS_Color_Sell   =  Purple;
extern color  RRS_Color_Buy    =  OrangeRed;

 double SL=0;

int x=1;
double Orders[2][100][10];// first dimension: 0 - buys, 1 - sells

int TotalOrders[2];
double lastPriceBuy, lastPriceSell;
double TrallBuys=-1, TrallSells=-1, LotTrallBuys=-1, LotTrallSells=-1;
double BuysBE, SellsBE, BuysTP, SellsTP, LOTBuysBE, LOTSellsBE, LOTBuysTP, LOTSellsTP;

bool ObjectCreateEx(string objname,int YOffset, int XOffset=0,int objType=23,int corner=0, bool background=false)
{
   bool needNUL=false;
   if(ObjectFind(objname)==-1)
   {
      needNUL=true;
      ObjectCreate(objname,objType,0,0,0,0,0);
   }

   ObjectSet(objname,103,YOffset);
   ObjectSet(objname,102,XOffset);
   ObjectSet(objname,101,corner);
   ObjectSet(objname, OBJPROP_BACK, background);
   if(needNUL) ObjectSetText(objname,"",14,"Tahoma",Gray);
}

int BuyObj[2], SellObj[2];

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

bool MyBreakPointFlag=false;

void MyBreakPoint()
{
   if(!IsVisualMode())return;
   MyBreakPointFlag=true;
   if(ObjectFind("MyBreakPointLabel")<0)
   {
      ObjectCreate("MyBreakPointLabel",23,0,0,0,0,0);
      ObjectSet("MyBreakPointLabel",103,2*(20)+28);
      ObjectSet("MyBreakPointLabel",102,10*(20)+28);
      ObjectSetText("MyBreakPointLabel","BreakPoint at "+TimeToStr(TimeCurrent())+". Delete this text to continue.",14,"Tahoma",Red);
   }

  while(ObjectFind("MyBreakPointLabel")!=-1)Sleep(100);
}

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

   double sl,tp,op,lot;
   int magic, ticket, i, j;
   ObjectSetText("_Benefit_error","",14,"Tahoma",Gray);
   double Level=MathMax(MarketInfo(Symbol(),MODE_FREEZELEVEL),MarketInfo(Symbol(),MODE_STOPLEVEL))*Point*x;

   ArrayInitialize(Orders,-1);
   ArrayInitialize(TotalOrders,0);
   int NeedCloseAll=-1;
   lastPriceBuy=0; lastPriceSell=0;
   double highestBuy=-1, lowestBuy=-1, highestSell=-1, lowestSell=-1;
   double profitBuys=0, profitSells=0;
   int buys=0, sells=0;
   double lotsBuys=0, lotsSells=0;
   int firstBuyTime=-1, firstSellTime=-1;

   for(i=OrdersTotal()-1;i>=0;i--)
     if(OrderSelect(i,SELECT_BY_POS) && OrderSymbol()==Symbol())
     {
        if(OrderMagicNumber()==MAGIC+1)
        {
           NeedCloseAll=OrderTicket();
           continue;
        }

        if(OrderMagicNumber()!=MAGIC) continue;

        int index=0;
        if(OrderType()==1)
          index=1;

        if(NO(lastPriceBuy)==0 && OrderType()==0) lastPriceBuy=OrderOpenPrice();
        if(NO(lastPriceSell)==0 && OrderType()==1) lastPriceSell=OrderOpenPrice();

        if(OrderType()==0)
        {
           if(NO(highestBuy)<0 || NO(OrderOpenPrice())>NO(highestBuy)) highestBuy=OrderOpenPrice();
           if(NO(lowestBuy)<0 || NO(OrderOpenPrice())<NO(lowestBuy)) lowestBuy=OrderOpenPrice();
           profitBuys+=(OrderProfit()+OrderCommission()+OrderSwap());
           lotsBuys+=OrderLots();
           buys++;
           if(firstBuyTime<0 || OrderOpenTime()<firstBuyTime) firstBuyTime=OrderOpenTime();
        }
        if(OrderType()==1)
        {
           if(NO(highestSell)<0 || NO(OrderOpenPrice())>NO(highestSell)) highestSell=OrderOpenPrice();
           if(NO(lowestSell)<0 || NO(OrderOpenPrice())<NO(lowestSell)) lowestSell=OrderOpenPrice();
           profitSells+=(OrderProfit()+OrderCommission()+OrderSwap());
           lotsSells+=OrderLots();
           sells++;
           if(firstSellTime<0 || OrderOpenTime()<firstSellTime) firstSellTime=OrderOpenTime();
        }

        Orders[index][TotalOrders[index]][0]=OrderTicket();
        Orders[index][TotalOrders[index]][1]=OrderType();
        Orders[index][TotalOrders[index]][2]=OrderLots();
        Orders[index][TotalOrders[index]][3]=OrderOpenPrice();
        Orders[index][TotalOrders[index]][4]=OrderStopLoss();
        Orders[index][TotalOrders[index]][5]=OrderTakeProfit(); 
        Orders[index][TotalOrders[index]][6]=PointCost(OrderLots());
        TotalOrders[index]++;
     }

     if(TotalOrders[0]<1)
     {
        LotTrallBuys=-1;
        TrallBuys=-1;
     }

     if(TotalOrders[1]<1)
     {
        LotTrallSells=-1;
        TrallSells=-1;
     }

   bool NeedReturn=false;
   if(NeedCloseAll>=0 && OrderSelect(NeedCloseAll,SELECT_BY_TICKET))
   {
      index=-1;
      if(OrderType()==4 && TotalOrders[0]>0) index=0;
      if(OrderType()==5 && TotalOrders[1]>0) index=1;
      if(OrderType()==2 && TotalOrders[1]+TotalOrders[0]>0) index=2;

      if(index==0 || index==2)
      {
         for(i=0;i<TotalOrders[0];i++)
         {
            if(Orders[0][i][0]<0) continue;
            if(!OrderSelect(StrToInteger(DoubleToStr(Orders[0][i][0],0)),SELECT_BY_TICKET))continue;
            if(OrderSymbol()!=Symbol())continue;
            color col2=DarkBlue;
            if(OrderType()==1) col2=Red;
            if(OrderType()<2)OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3, col2);
            if(OrderType()>1)OrderDelete(OrderTicket());
         }

         NeedReturn=true;
      }

      if(index==1 || index==2)
      {
         for(i=0;i<TotalOrders[1];i++)
         {
            if(Orders[1][i][0]<0) continue;
            if(!OrderSelect(StrToInteger(DoubleToStr(Orders[1][i][0],0)),SELECT_BY_TICKET))continue;
            if(OrderSymbol()!=Symbol())continue;
            if(OrderType()<2)OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3);
            if(OrderType()>1)OrderDelete(OrderTicket());
         }

         NeedReturn=true;
      }

      if(NeedReturn)
        return;
   }

   if(NeedCloseAll>=0)
   {
      OrderDelete(NeedCloseAll);
      return;
   }

   int closeBuys=0, closeSells=0;
   double historyProfitBuys=0, historyProfitSells=0;
   bool countBuys=true, countSells=true;
   double dayProfit=0, weekProfit=0;

   for(int tr=OrdersHistoryTotal()-1;tr>=0;tr--)
   { 
      if(!OrderSelect(tr,SELECT_BY_POS,MODE_HISTORY)) 
        {Alert("!!!Can\'t select history order!!!");return(-100500);}
      if(OrderSymbol()!=Symbol()) 
        continue;

      if(OrderMagicNumber()!=MAGIC && OrderMagicNumber()!=MAGIC+1)
        continue;

      if(OrderMagicNumber()==MAGIC+1)
      {
         if(OrderType()==4) countBuys=false;
         if(OrderType()==5) countSells=false;
      }

      if(OrderOpenTime()>=iTime(NULL, 1440, 0))
        dayProfit+=(OrderProfit()+OrderCommission()+OrderSwap());

      if(OrderOpenTime()>=iTime(NULL, 10080, 0))
        weekProfit+=(OrderProfit()+OrderCommission()+OrderSwap());

      if(!countSells && !countBuys && OrderOpenTime()<iTime(NULL, 10080, 0)) break;  

      if(OrderType()==0 && countBuys)
      {
         closeBuys++;
      }

      if(OrderType()==1 && countSells)
      {
         closeSells++;
      }

      if(OrderType()==0 && OrderOpenTime()>firstBuyTime && firstBuyTime>-1) 
        historyProfitBuys=historyProfitBuys+(OrderProfit()+OrderCommission()+OrderSwap());

      if(OrderType()==1 && OrderOpenTime()>firstSellTime && firstSellTime>-1) 
        historyProfitSells=historyProfitSells+(OrderProfit()+OrderCommission()+OrderSwap());

   }

  /* if(closeBuys>0 || closeSells>0)
   {
      if(closeBuys>0) int ortype=4;
      if(closeSells>0) ortype=5;
      if(closeSells>0 && closeBuys>0) ortype=2;
      PutServiceOrder(ortype, MAGIC+1);

      return;
   }*/

   bool Buy=false, Sell=false;
   j=TotalOrders[0]-Step_Coef_Start_Order_Buy+2;
   if(j<0) j=0;
   double buystep=Step_Buy*MathPow(Step_Coef_Buy, j);
   if(NO(Step_Coef_Buy)==0) buystep=ParseStepMass(TotalOrders[0], 0);

   Buy=(((TotalOrders[0]==0 && NO(Close[2])>NO(Open[2]) && NO(Close[1])>NO(Open[1])) || TotalOrders[0]>0) 
        && (!ThereIsOrderOnThisBar(Time[0], 0) && (lastPriceBuy-Ask>=buystep*Point*x || NO(lastPriceBuy)==0)));

   j=TotalOrders[1]-Step_Coef_Start_Order_Sell+2;
   if(j<0) j=0;
   double sellstep=Step_Sell*MathPow(Step_Coef_Sell, j);
   if(NO(Step_Coef_Sell)==0) sellstep=ParseStepMass(TotalOrders[1], 1);

   Sell=(((TotalOrders[1]==0 && NO(Close[2])<NO(Open[2]) && NO(Close[1])<NO(Open[1])) || TotalOrders[1]>0) 
        && (!ThereIsOrderOnThisBar(Time[0], 1) && (Bid-lastPriceSell>=sellstep*Point*x || NO(lastPriceSell)==0)));

   if(TotalOrders[0]<1 && (!New_Cycle || !TradeWasInTime(TimeCurrent()))) Buy=false;
   if(TotalOrders[1]<1 && (!New_Cycle || !TradeWasInTime(TimeCurrent()))) Sell=false;

   if(ObjectGet("_Benefit_OpenBuy", OBJPROP_XDISTANCE)!=BuyObj[0] || ObjectGet("_Benefit_OpenBuy", OBJPROP_YDISTANCE)!=BuyObj[1])
   {
      if(MessageBox("?? ????????????? ?????? ??????? ????????? ?????? Buy ????? "+DoubleToStr(GetLot(0, TotalOrders[0]+1), 2)+"?", "???????????", MB_YESNO)==IDYES)
        Buy=true;
      ObjectSet("_Benefit_OpenBuy", OBJPROP_XDISTANCE, BuyObj[0]);
      ObjectSet("_Benefit_OpenBuy", OBJPROP_YDISTANCE, BuyObj[1]);
   }

   if(ObjectGet("_Benefit_OpenSell", OBJPROP_XDISTANCE)!=SellObj[0] || ObjectGet("_Benefit_OpenSell", OBJPROP_YDISTANCE)!=SellObj[1])
   {
      if(MessageBox("?? ????????????? ?????? ??????? ????????? ?????? Sell ????? "+DoubleToStr(GetLot(1, TotalOrders[1]+1), 2)+"?", "???????????", MB_YESNO)==IDYES)
        Sell=true;
      ObjectSet("_Benefit_OpenSell", OBJPROP_XDISTANCE, SellObj[0]);
      ObjectSet("_Benefit_OpenSell", OBJPROP_YDISTANCE, SellObj[1]);
   }

   SellsTP=0; BuysTP=0;

   double TheSumm=0, TheSumm2=0, dTemp=0;
   BuysBE=0; SellsBE=0; LOTSellsBE=-1; LOTBuysBE=-1;
   ObjectSet("_Benefit_BuyBE",OBJPROP_PRICE1,0);
   if(TotalOrders[0]>0) 
   {
      for(int cikl=0;cikl<=(highestBuy-lowestBuy)/Point;cikl++)
      {
         BuysBE=lowestBuy+cikl*Point;
         TheSumm=0;
         TheSumm2=0;
         for(i=0;i<TotalOrders[0];i++)
         {
            dTemp=(BuysBE-Orders[0][i][3])/Point*Orders[0][i][6];
            TheSumm=TheSumm+dTemp;
            if(i<2) TheSumm2=TheSumm2+dTemp;
         }

         if(NO(TheSumm2)>=0.0 && LOTBuysBE<0) LOTBuysBE=BuysBE;

         if(NO(TheSumm)>=0.0)
         {
            ObjectSet("_Benefit_BuyBE",OBJPROP_PRICE1,BuysBE);
            if(NO(TP1)!=0.0) BuysTP=BuysBE+TP1; else BuysTP=0;
            if(TotalOrders[0]>1 && NO(TP)!=0.0) BuysTP=BuysBE+TP;
            break;
         }
      }
   }

    ObjectSet("_Benefit_SellBE",OBJPROP_PRICE1,0);
    if(TotalOrders[1]>0) 
    {
       for(cikl=(highestSell-lowestSell)/Point;cikl>=0;cikl--)
       {
          SellsBE=lowestSell+cikl*Point;
          TheSumm=0;
          TheSumm2=0;
          for(i=0;i<TotalOrders[1];i++)
          {
             dTemp=(Orders[1][i][3]-SellsBE)/Point*Orders[1][i][6];
             TheSumm=TheSumm+dTemp;
             if(i<2) TheSumm2=TheSumm2+dTemp;

          }

          if(NO(TheSumm2)>=0.0 && LOTSellsBE<0) LOTSellsBE=SellsBE;

          if(NO(TheSumm)>=0.0)
          {
             ObjectSet("_Benefit_SellBE",OBJPROP_PRICE1,SellsBE);
             if(NO(TP1)!=0.0) SellsTP=SellsBE-TP1; else SellsTP=0;
             if(TotalOrders[1]>1 && NO(TP)!=0.0) SellsTP=SellsBE-TP;
             break;
          }
       }
    }

    LOTBuysTP=LOTBuysBE+RRS_TP;
    LOTSellsTP=LOTSellsBE-RRS_TP;

    ObjectSet("_Benefit_LotTPBuy",OBJPROP_PRICE1,0);
    ObjectSet("_Benefit_LotTPSell",OBJPROP_PRICE1,0);

    ObjectSet("_Benefit_BuyTP",OBJPROP_PRICE1,0);
    ObjectSet("_Benefit_SellTP",OBJPROP_PRICE1,0);

    if(NO(BuysTP)>0) ObjectSet("_Benefit_BuyTP",OBJPROP_PRICE1,BuysTP);
    if(NO(SellsTP)>0) ObjectSet("_Benefit_SellTP",OBJPROP_PRICE1,SellsTP);

    if(LOTBuysBE>0 && TotalOrders[0]>=RRS_nOrder && RRS) ObjectSet("_Benefit_LotTPBuy",OBJPROP_PRICE1,LOTBuysTP);
    if(LOTSellsBE>0 && TotalOrders[1]>=RRS_nOrder && RRS) ObjectSet("_Benefit_LotTPSell",OBJPROP_PRICE1,LOTSellsTP);

   double maxlot=AccountFreeMargin()/MarketInfo(Symbol(), MODE_MARGINREQUIRED);

   if(!IsTesting() || (IsTesting() && IsVisualMode()))
   {
      int Yt[3]={50, 350, 200}, Xt[3]={110, 110, 110};
      color textColor=White;
      ObjectCreateEx("_Benefit_t1_body", Yt[0]-30, Xt[0]-5, 23, 0, true);
      ObjectSetText("_Benefit_t1_body", "ggg", 110, "Webdings", C'62,62,62'); //???? ??????? ????
      ObjectCreateEx("_Benefit_t1_Header", Yt[0]-25, Xt[0]+110, 23, 0);
      ObjectSetText("_Benefit_t1_Header", "BUY-SIDE", 16, "Dungeon", White); //????????? Buy

      ObjectCreateEx("_Benefit_t1_1_1", Yt[0], Xt[0], 23, 0);
      ObjectSetText("_Benefit_t1_1_1", "???????: "+DoubleToStr(buys, 0), 10, "Courier New", textColor);
      ObjectCreateEx("_Benefit_t1_1_2", Yt[0]+15, Xt[0], 23, 0);
      ObjectSetText("_Benefit_t1_1_2", "?????: "+DoubleToStr(lotsBuys, 2), 10, "Courier New", textColor);
      ObjectCreateEx("_Benefit_t1_1_3", Yt[0]+15*2, Xt[0], 23, 0);
      ObjectSetText("_Benefit_t1_1_3", "??????? ??: "+DoubleToStr(BuysTP, Digits), 10, "Courier New", textColor);
      ObjectCreateEx("_Benefit_t1_1_4", Yt[0]+15*3, Xt[0], 23, 0);
      ObjectSetText("_Benefit_t1_1_4", "??????? LTP:"+DoubleToStr(LOTBuysTP, Digits), 10, "Courier New", textColor);

      ObjectCreateEx("_Benefit_t1_2_1", Yt[0]+15*0, Xt[0]+160, 23, 0);
      ObjectSetText("_Benefit_t1_2_1", "Profit: "+DoubleToStr(profitBuys, 2), 10, "Courier New", tex

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

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

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

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

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

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

Стоимость полного кода
3 048,60₽ ≈ $37.26