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

i-UrovenZero

i_urovenzero_v.2.0._.mq4
Вы автор или правообладатель?

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

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

О программе

Индикатор i-UrovenZero v.2.0 — это пользовательский индикатор для MetaTrader 4, предназначенный для мониторинга уровня маржи и отображения критических ценовых уровней на графике. Он рассчитывает и отображает горизонтальные линии для цен безубыточности, нулевого уровня маржи и уровня стоп-аута на основе открытых позиций.

Индикатор поддерживает несколько режимов расчёта в зависимости от режима свободной маржи счёта, отображая различную информацию для хеджевых и неттинговых аккаунтов. При критическом снижении уровня маржи индикатор выводит визуальные предупреждения — метки LOCK и DEAD ZONE.

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

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

НастройкаОписание
CALC_Bar_0 Текстовый разделитель-заголовок для блока расчёта.
CALC_0 Включает или отключает отображение блока расчёта взаимосвязи прибыли, расстояния и лотов на графике.
?????? ???????? ?????? ???? (Lots_R) Количество лотов для расчётов в блоке CALC.
?????? ???????? ????????? ? ??????? (Rastojanie_R) Расстояние (в ценовых пунктах) для расчётов в блоке CALC.
?????? ???????? ???????/?????? ? ?????? (Pribyl_R) Прибыль (в денежном выражении) для расчётов в блоке CALC.
???? ???????? ??????? ?????? (cvet_CALC_0) Цвет текста в блоке расчёта CALC для основных параметров.
???? ??????? ?????????? ???????? (cvet_CALC_R) Цвет текста в блоке расчёта CALC для результатов.
????????? ?? ??????? (Ugol_0) Угол привязки объектов блока расчёта CALC на графике (0-3).
???????? ????????? ?? ??????????? (MP_X_0) Горизонтальное смещение (в пикселях) от угла графика для блока расчёта CALC.
???????? ????????? ?? ????????? (MP_Y_0) Вертикальное смещение (в пикселях) от угла графика для блока расчёта CALC.
Shrift_Bar Текстовый разделитель-заголовок для блока настроек шрифта.
RazmerShrifta Размер шрифта для текстовых меток на графике.
ZeroProfit_Block Текстовый разделитель-заголовок для блока настроек уровня безубыточности.
ZeroProfit Включает или отключает отображение горизонтальной линии уровня безубыточности по всем позициям.
Colour_ZP Цвет горизонтальной линии уровня безубыточности по всем позициям.
0,1,2,3,4 (Style_ZP) Стиль линии уровня безубыточности (0-4).
0,1,2,3,4 (Width_ZP) Толщина линии уровня безубыточности.
ZeroBUY_Block Текстовый разделитель-заголовок для блока настроек нулевого уровня BUY.
ZeroBUY Включает или отключает отображение горизонтальной линии нулевого уровня для позиций BUY.
Colour_ZB Цвет горизонтальной линии нулевого уровня для позиций BUY.
0,1,2,3,4 (Style_ZB) Стиль линии нулевого уровня для позиций BUY (0-4).
0,1,2,3,4 (Width_ZB) Толщина линии нулевого уровня для позиций BUY.
ZeroSELL_Block Текстовый разделитель-заголовок для блока настроек нулевого уровня SELL.
ZeroSELL Включает или отключает отображение горизонтальной линии нулевого уровня для позиций SELL.
Colour_ZS Цвет горизонтальной линии нулевого уровня для позиций SELL.
0,1,2,3,4 (Style_ZS) Стиль линии нулевого уровня для позиций SELL (0-4).
0,1,2,3,4 (Width_ZS) Толщина линии нулевого уровня для позиций SELL.
ZeroMargin_Block Текстовый разделитель-заголовок для блока настроек уровня нулевой свободной маржи.
ZeroMargin Включает или отключает отображение горизонтальной линии уровня нулевой свободной маржи.
Colour_ZM Цвет горизонтальной линии уровня нулевой свободной маржи.
0,1,2,3,4 (Style_ZM) Стиль линии уровня нулевой свободной маржи (0-4).
0,1,2,3,4 (Width_ZM) Толщина линии уровня нулевой свободной маржи.
ZeroMarginPr_Block Текстовый разделитель-заголовок для блока настроек процентного уровня маржи.
ZeroMarginPr Включает или отключает отображение горизонтальной линии процентного уровня маржи.
???????? ?? ?????? ?????? ??? ?????????????? (Procent_ZM) Процентное значение порога уровня маржи для срабатывания звуковых уведомлений и отображения меток LOCK/DEAD ZONE.
0,1,2,3,4 (Style_ZM_Procent) Стиль линии процентного уровня маржи (0-4).
0,1,2,3,4 (Width_ZM_Procent) Толщина линии процентного уровня маржи.
Zona_LOCK_Param Текстовый разделитель-заголовок для блока настроек зоны LOCK.
Cvet_zony_LOCK_p Включает или отключает отображение цветной зоны LOCK на графике.
???? ???? LOCK (Cvet_zony_LOCK) Цвет зоны LOCK (область между уровнем маржи и уровнем блокировки).
ZeroFull_Block Текстовый разделитель-заголовок для блока настроек уровня полной нулевой маржи.
ZeroFull Включает или отключает отображение горизонтальной линии уровня полной нулевой маржи (StopOut).
Colour_ZF Цвет горизонтальной линии уровня полной нулевой маржи (StopOut).
0,1,2,3,4 (Style_ZF) Стиль линии уровня полной нулевой маржи (0-4).
0,1,2,3,4 (Width_ZF) Толщина линии уровня полной нулевой маржи.
ZeroFull_Pr_Block Текстовый разделитель-заголовок для блока настроек уровня стоп-аута в процентах.
ZeroFull_Pr Включает или отключает отображение горизонтальной линии уровня стоп-аута в процентах.
0,1,2,3,4 (Style_ZF_Procent) Стиль линии уровня стоп-аута в процентах (0-4).
0,1,2,3,4 (Width_ZF_Procent) Толщина линии уровня стоп-аута в процентах.
Zona_dDZ_Param Текстовый разделитель-заголовок для блока настроек зоны DEAD ZONE.
Cvet_zony_dDZ_f Включает или отключает отображение цветной зоны DEAD ZONE на графике.
???? ???? DEAD ZONE (Cvet_zony_dDZ) Цвет зоны DEAD ZONE (область между уровнем полной маржи и нулевой маржи).
INFO_Bar_1 Текстовый разделитель-заголовок для первого блока информации.
INFO_1 Включает или отключает первый блок информационных меток на графике (уровни маржи, безубыточность, стоп-аут).
????????? ?? ??????? (Ugol) Угол привязки текстовых меток первого блока информации на графике (0-3).
???????? ????????? ?? ??????????? (MP_X) Горизонтальное смещение (в пикселях) от угла графика для первого блока информационных меток.
???????? ????????? ?? ????????? (MP_Y) Вертикальное смещение (в пикселях) от угла графика для первого блока информационных меток.
INFO_Bar_2 Текстовый разделитель-заголовок для второго блока информации.
INFO_2 Включает или отключает второй блок информационных меток на графике (баланс, минимальный/максимальный лот, спред, свопы).
???? ????. ?????? 2 (cvet_dop_info) Цвет текста дополнительной информации во втором блоке меток.
????????? ?? ??????? (Ugol_2) Угол привязки текстовых меток второго блока информации на графике (0-3).
???????? ????????? ?? ??????????? (MP_X_2) Горизонтальное смещение (в пикселях) от угла графика для второго блока информации.
???????? ????????? ?? ????????? (MP_Y_2) Вертикальное смещение (в пикселях) от угла графика для второго блока информации.
INFO_Bar_3 Текстовый разделитель-заголовок для третьего блока информации.
????????? ?? ??????? ????. ?????? 3 (Ugol_3) Угол привязки меток LOCK и DEAD ZONE на графике (0-3).
Sound_Bar Текстовый разделитель-заголовок для блока звуковых настроек.
SoundPlay_Menshe Включает или отключает воспроизведение звука при снижении уровня маржи ниже заданного порога.
Sound_Alert Файл звукового уведомления, воспроизводимого при снижении уровня маржи ниже порога.
SoundPlay_Bolshe Включает или отключает воспроизведение звука при превышении уровня маржи заданного порога.
Sound_OK Файл звукового уведомления, воспроизводимого при превышении уровня маржи порога.
Получить полный код

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

#property indicator_chart_window

extern string CALC_Bar_0         = "=== ?????? ???????? ===";
extern bool    CALC_0            = false;

extern double  Lots_R            = 1.0;      // ?????? ???????? ?????? ????
extern double  Rastojanie_R      = 100.0;    // ?????? ???????? ????????? ? ???????
extern double  Pribyl_R          = 0.0;      // ?????? ???????? ???????/?????? ? ??????

extern color   cvet_CALC_0       = Violet;   //???? ???????? ??????? ??????
extern color   cvet_CALC_R       = Yellow;   //???? ??????? ?????????? ????????
extern int     Ugol_0            = 2;        // ????????? ?? ???????
extern int     MP_X_0            = 10;       // ???????? ????????? ?? ??????????? 
extern int     MP_Y_0            = 10;       // ???????? ????????? ?? ?????????

extern string Shrift_Bar         = "=== ?????? ?????? ===";
extern int     RazmerShrifta     = 9;

extern string ZeroProfit_Block   = "=== ?????. ?????? ????????? ===";
extern bool    ZeroProfit        = true;
extern color   Colour_ZP         = DarkTurquoise;
extern int     Style_ZP          = 1;        //0,1,2,3,4
extern int     Width_ZP          = 2;        //0,1,2,3,4

extern string ZeroBUY_Block      = "=== ?????. ????????? ??? BUY ===";
extern bool    ZeroBUY           = true;
extern color   Colour_ZB         = DarkTurquoise;
extern int     Style_ZB          = 2;        //0,1,2,3,4
extern int     Width_ZB          = 1;        //0,1,2,3,4

extern string ZeroSELL_Block     = "=== ?????. ????????? ??? SELL ===";
extern bool    ZeroSELL          = true;
extern color   Colour_ZS         = DarkTurquoise;
extern int     Style_ZS          = 2;        //0,1,2,3,4
extern int     Width_ZS          = 1;        //0,1,2,3,4

extern string ZeroMargin_Block   = "=== ?????. ??????? ????? ===";
extern bool    ZeroMargin        = true;
extern color   Colour_ZM         = Yellow;
extern int     Style_ZM          = 0;        //0,1,2,3,4  
extern int     Width_ZM          = 2;        //0,1,2,3,4

extern string ZeroMarginPr_Block = "=== ?????. % ??????? ????? ===";
extern bool    ZeroMarginPr      = true;
extern int     Procent_ZM        = 150;      // ???????? ?? ?????? ?????? ??? ??????????????
extern int     Style_ZM_Procent  = 2;        //0,1,2,3,4 
extern int     Width_ZM_Procent  = 1;        //0,1,2,3,4 

extern string Zona_LOCK_Param    = "=== ?????. ???? LOCK ===";
extern bool    Cvet_zony_LOCK_p  = false;  
extern color   Cvet_zony_LOCK    = C'70,70,00';   // ???? ???? LOCK

extern string ZeroFull_Block     = "=== ?????. ??????? ????? ===";
extern bool    ZeroFull          = true;
extern color   Colour_ZF         = Red;
extern int     Style_ZF          = 0;        //0,1,2,3,4  
extern int     Width_ZF          = 2;        //0,1,2,3,4

extern string ZeroFull_Pr_Block  = "=== StopOut/??????.????.??????? ===";
extern bool    ZeroFull_Pr       = true;
extern int     Style_ZF_Procent  = 2;        //0,1,2,3,4  
extern int     Width_ZF_Procent  = 1;        //0,1,2,3,4  

extern string Zona_dDZ_Param     = "=== ?????. ??????? ???? ===";
extern bool    Cvet_zony_dDZ_f   = false;
extern color   Cvet_zony_dDZ     = C'70,00,00';   // ???? ???? DEAD ZONE

extern string INFO_Bar_1         = "=== ?????? ?????????? 1 ===";
extern bool    INFO_1            = true;
extern int     Ugol              = 3;        // ????????? ?? ???????
extern int     MP_X              = 10;       // ???????? ????????? ?? ??????????? 
extern int     MP_Y              = 10;       // ???????? ????????? ?? ?????????

extern string INFO_Bar_2         = "=== ?????? ?????????? 2 ===";
extern bool    INFO_2            = false;
extern color   cvet_dop_info     = Silver;   // ???? ????. ?????? 2
extern int     Ugol_2            = 3;        // ????????? ?? ???????
extern int     MP_X_2            = 10;       // ???????? ????????? ?? ??????????? 
extern int     MP_Y_2            = 10;       // ???????? ????????? ?? ?????????

extern string INFO_Bar_3         = "=== ?????? ?????????? 3 ===";
extern int     Ugol_3            = 1;        // ????????? ?? ??????? ????. ?????? 3

extern string Sound_Bar          = "=== ??????????????? ????? ===";
extern bool    SoundPlay_Menshe  = true;
extern string  Sound_Alert       = "Alert.wav";
extern bool    SoundPlay_Bolshe  = false;
extern string  Sound_OK          = "clock.wav";

string comment = "";

   ObjectDelete ("??????? ??????? ?????");
   ObjectDelete ("??????? ?????");

   ObjectDelete ("LOCK");
   ObjectDelete ("DEAD ZONE");
   ObjectDelete ("DEAD ZONE =");
   ObjectDelete ("DEAD ZONE = 2");
   ObjectDelete ("GAME OVER");
   ObjectDelete ("GAME OVER 2");
   ObjectDelete ("GAME OVER 3");
   ObjectDelete ("????????? 1 ?? ??? 1 ???? - ????");

   ObjectDelete ("???????? ?? ?????? ??????? ?????");
   ObjectDelete ("??????? ??????????????? ???????? ??????? ?? / StopOut");
   ObjectDelete ("????? ??????? ?????????");
   ObjectDelete ("??????? ????????? BUY");
   ObjectDelete ("??????? ????????? SELL");
   ObjectDelete ("?????????? ?? ?????? ?????? ????????? - ????");
   ObjectDelete ("????? ??????? ????????? - ????");
   ObjectDelete ("?????????? ?? ??????? ????? - ????");
   ObjectDelete ("??????? ??????? ????? - ????");
   ObjectDelete ("??????? ????? - ????");
   ObjectDelete ("??????? ???? - ????");
   ObjectDelete ("??????? ???? - ????");
   ObjectDelete ("???? LOCK - ????"); 
   ObjectDelete ("??????? ??????????????? ???????? ??????? ?? / StopOut - ????");

   ObjectDelete ("????? ?????? ????? - ????");
   ObjectDelete ("????? ?? ?????????? ??? - ????");
   ObjectDelete ("??????????? ??? - ????");
   ObjectDelete ("???????????? ??? - ????");
   ObjectDelete ("?????, ?? - ????");
   ObjectDelete ("???? BUY, ?? - ????");
   ObjectDelete ("???? SELL, ?? - ????");

   ObjectDelete ("??????? - ??????");
   ObjectDelete ("?????????? - ??????");
   ObjectDelete ("????? ???? - ??????");
   ObjectDelete ("?????? ??????? - ??????");
   ObjectDelete ("??????????? - ??????");

   ObjectDelete ("ZeroLevel");
   ObjectDelete ("ZeroLevel_BUY");
   ObjectDelete ("ZeroLevel_SELL");

   Comment("");

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

   double i, total = OrdersTotal();
      double lots=0.0, shift, shift_ZLB, shift_ZLS;
      Comment_("----------------------------"); 
      Comment_(" " + AccountName());
      string type = "????"; if (IsDemo()) type = "????";
      Comment_(" ??? ?????: " + type + " - ?: " + AccountNumber());
      Comment_(" ?????: 1/" + AccountLeverage());
      Comment_("----------------------------"); 

      double minlot = MarketInfo(Symbol(),MODE_MINLOT);           //?????? ???????????? ????
      double maxlot = MarketInfo(Symbol(),MODE_MAXLOT);           //?????? ???????????? ????
      double lot_cena = MarketInfo(Symbol(),MODE_MARGINREQUIRED); //???? 1.0 ????
      double lot_zalog = MarketInfo(Symbol(),MODE_MARGININIT);    //????? ?? 1.0 ???
      double min_balans = (lot_cena + lot_zalog) * minlot;        //?????? ????????? ???????????? ????
      double lotsss = AccountFreeMargin()*minlot/min_balans;      //?????????? ????? ??????? ????? ??????
      double pp_cena = MarketInfo(Symbol(),MODE_TICKVALUE);       //???? ?????? ??????
      double swap_long = MarketInfo(Symbol(),MODE_SWAPLONG);      //???? ??? BUY ? ???????
      double swap_short = MarketInfo(Symbol(),MODE_SWAPSHORT);    //???? ??? SELL ? ???????
      double spread = MarketInfo(Symbol(),MODE_SPREAD);           //?????? ??????
      double sredsva = AccountEquity();                           //????????? ?? ????? ????????

         if (AccountBalance() < min_balans)
         {
            if (AccountEquity() < min_balans)
            {
               if (OrderProfit() < min_balans)
               {
         ObjectDelete("GAME OVER");
         if(ObjectFind("GAME OVER") != 0)
         {
         ObjectCreate("GAME OVER", OBJ_LABEL, 0, 0, 0);         
         ObjectSetText("GAME OVER", "GAME OVER", RazmerShrifta*4, "Verdana", Colour_ZF);
         ObjectSet("GAME OVER", OBJPROP_CORNER, Ugol);
         ObjectSet("GAME OVER", OBJPROP_XDISTANCE, MP_X+3);
         ObjectSet("GAME OVER", OBJPROP_YDISTANCE, MP_Y+RazmerShrifta*2);
         }

         ObjectDelete("GAME OVER 2");
         if(ObjectFind("GAME OVER 2") != 0)
         {           
         ObjectCreate("GAME OVER 2", OBJ_LABEL, 0, 0, 0);         
         ObjectSetText("GAME OVER 2", "???????? ??? ??? ?? ?????? ???????????", RazmerShrifta, "Verdana", Yellow);
         ObjectSet("GAME OVER 2", OBJPROP_CORNER, Ugol);
         ObjectSet("GAME OVER 2", OBJPROP_XDISTANCE, MP_X);
         ObjectSet("GAME OVER 2", OBJPROP_YDISTANCE, MP_Y+RazmerShrifta+2);
         }

         ObjectDelete("GAME OVER 3");
         if(ObjectFind("GAME OVER 3") != 0)
         {
         ObjectCreate("GAME OVER 3", OBJ_LABEL, 0, 0, 0);        
         ObjectSetText("GAME OVER 3", "???????? ?????? ? ??????? ? ?????? :)", RazmerShrifta-1, "Verdana", Gray);
         ObjectSet("GAME OVER 3", OBJPROP_CORNER, Ugol);
         ObjectSet("GAME OVER 3", OBJPROP_XDISTANCE, MP_X+43);
         ObjectSet("GAME OVER 3", OBJPROP_YDISTANCE, MP_Y);
         WindowRedraw();
         }
               }
            }        
         }

   double lots_bzu = 0;
   double sum_bzu = 0;
   for (double i_bzu = 0; i_bzu < OrdersTotal(); i_bzu++)
    {
      if ( !OrderSelect ( i_bzu , SELECT_BY_POS , MODE_TRADES )) break;
      if ( OrderSymbol () != Symbol()) continue;
      if ( OrderType () == OP_BUY)
      {
         lots_bzu = lots_bzu + OrderLots ();
         sum_bzu = sum_bzu + OrderLots () * OrderOpenPrice ();
      }
      if ( OrderType () == OP_SELL )
    {
         lots_bzu = lots_bzu - OrderLots ();
         sum_bzu = sum_bzu - OrderLots () * OrderOpenPrice ();
   }

   double price_bzu = 0;
   if (lots_bzu != 0 )

   price_bzu = sum_bzu / lots_bzu;                                  // ??????? ?????? ?????????
   }

   double lots_bzu_B = 0;
   double sum_bzu_B = 0;
   for (double i_bzu_B = 0; i_bzu_B < OrdersTotal(); i_bzu_B++)
   {
      if ( !OrderSelect ( i_bzu_B , SELECT_BY_POS , MODE_TRADES )) break;
      if ( OrderSymbol () != Symbol()) continue;
      if ( OrderType () == OP_BUY)
      {
         lots_bzu_B = lots_bzu_B + OrderLots ();
         sum_bzu_B = sum_bzu_B + OrderLots () * OrderOpenPrice ();
      }

   double price_bzu_B = 0;
   if (lots_bzu_B != 0 )

   price_bzu_B = sum_bzu_B / lots_bzu_B;                                  // ??????? ????????? BUY

   }

   double lots_bzu_S = 0;
   double sum_bzu_S = 0;
   for (double i_bzu_S = 0; i_bzu_S < OrdersTotal(); i_bzu_S++)
   {
      if ( !OrderSelect ( i_bzu_S , SELECT_BY_POS , MODE_TRADES )) break;
      if ( OrderSymbol () != Symbol()) continue;
      if ( OrderType () == OP_SELL)
      {
         lots_bzu_S = lots_bzu_S + OrderLots ();
         sum_bzu_S = sum_bzu_S + OrderLots () * OrderOpenPrice ();
      }

   double price_bzu_S = 0;
   if (lots_bzu_S != 0 )

   price_bzu_S = sum_bzu_S / lots_bzu_S;                                  // ??????? ????????? SELL

   }

      if (ZeroProfit == true)
      {
         ObjectDelete("????? ??????? ?????????");
         ObjectCreate("????? ??????? ?????????", OBJ_HLINE, 0, 0, price_bzu);
         ObjectSet("????? ??????? ?????????", OBJPROP_COLOR, Colour_ZP);
         ObjectSet("????? ??????? ?????????", OBJPROP_STYLE, Style_ZP);
         ObjectSet("????? ??????? ?????????", OBJPROP_WIDTH, Width_ZP);
      }
      else {Comment_("????.-?????.?????????");}

      if (ZeroBUY == true)
      {
         ObjectDelete("??????? ????????? BUY");
         ObjectCreate("??????? ????????? BUY", OBJ_HLINE, 0, 0, price_bzu_B);
         ObjectSet("??????? ????????? BUY", OBJPROP_COLOR, Colour_ZB);
         ObjectSet("??????? ????????? BUY", OBJPROP_STYLE, Style_ZB);
         ObjectSet("??????? ????????? BUY", OBJPROP_WIDTH, Width_ZB);
      }
      else {Comment_("????.-???????.SELL=0");}

      if (ZeroSELL == true)
      {
         ObjectDelete("??????? ????????? SELL");
         ObjectCreate("??????? ????????? SELL", OBJ_HLINE, 0, 0, price_bzu_S);
         ObjectSet("??????? ????????? SELL", OBJPROP_COLOR, Colour_ZS);
         ObjectSet("??????? ????????? SELL", OBJPROP_STYLE, Style_ZS);
         ObjectSet("??????? ????????? SELL", OBJPROP_WIDTH, Width_ZS);
      }
      else {Comment_("????.-???????.BUY=0");}

   if(AccountFreeMarginMode() == 0)
      Comment_(" v.0"); // + " - ??????????????? ???????/?????? ?? ????????????. \n ????????? ????? ?? ??????? ?? ???. ????.");

   else if(AccountFreeMarginMode() == 2)
      Comment_(" v.2"); // + " - ??????????????? ?????? ?? ????????????. \n ????????? ????? ?? ??????????? ??? ????????? ???. ????.");

   else if(AccountFreeMarginMode() == 1)
   {
      Comment_(" v.1"); // + " - ??? ??????? ????????? ??????? ???????????? ??? ??????????????? ???????, \n ??? ? ?????? ?? ???????? ???????? ?? ??????? ?????.");
      for(i=0; i<total; i++)
      {
         OrderSelect(i, SELECT_BY_POS);
         if(OrderSymbol() == Symbol() && OrderType() == OP_BUY)
            lots += OrderLots();   
         else if(OrderSymbol() == Symbol() && OrderType() == OP_SELL)
            lots -= OrderLots();
      }

      if(lots == 0.0)
      {
         ObjectDelete("ZeroLevel");
         Comment_(" ??? ????????? ???????." ); //"All Postions Are Locked. Calculations cancelled."
         Comment_(" ??? ??????? ??? ??????." );
         Comment_("----------------------------");  
      }

      else
      {
         Comment_(" ???????..."); 
         Comment_("----------------------------");    

         double u_shift, shift22;

         ObjectDelete("??????? ??????? ?????");

         shift = AccountFreeMargin() / (MarketInfo(Symbol(), MODE_TICKVALUE) * lots);  //????????? ?? ???? ?? ??????? ?????

         u_shift = Bid - shift*Point; 

         if (ZeroMargin == true)
         {
         ObjectCreate("??????? ??????? ?????", OBJ_HLINE, 0, 0, u_shift);
         ObjectSet("??????? ??????? ?????", OBJPROP_COLOR, Colour_ZM);
         ObjectSet("??????? ??????? ?????", OBJPROP_STYLE, Style_ZM);
         ObjectSet("??????? ??????? ?????", OBJPROP_WIDTH, Width_ZM);
         }
         else {Comment_("????.-???????.?=0");}

         double   d_shift_3, u_shift_3, dDZ, OMarginLevel; // 

         OMarginLevel = AccountEquity()/AccountMargin()*100; //??????? ??????? ?? ?????

         d_shift_3 = AccountEquity() / (MarketInfo(Symbol(), MODE_TICKVALUE) * lots); 

         u_shift_3 = Bid - d_shift_3*Point;  // ??????? ??????? ?????

         dDZ = d_shift_3 - shift; // ??????? ????

         ObjectDelete("??????? ?????");
         if (ZeroFull == true)
         {
         ObjectCreate("??????? ?????", OBJ_HLINE, 0, 0, u_shift_3);
         ObjectSet("??????? ?????", OBJPROP_COLOR, Colour_ZF);
         ObjectSet("??????? ?????", OBJPROP_STYLE, Style_ZF);
         ObjectSet("??????? ?????", OBJPROP_WIDTH, Width_ZF);
         }
         else {Comment_("????.-???????.?????");}

         double d_pZM, ur_pZM;         
         d_pZM = d_shift_3 - dDZ*Procent_ZM/100;  //????????? ?? ???? ? % ?? ??????? ?????
         ur_pZM = Bid - d_pZM*Point;              // ??????? % ?? ??????? ?????

         ObjectDelete("???????? ?? ?????? ??????? ?????");

      if (ZeroMarginPr == true)
      {
         ObjectCreate("???????? ?? ?????? ??????? ?????", OBJ_HLINE, 0, 0, ur_pZM);
         ObjectSet("???????? ?? ?????? ??????? ?????", OBJPROP_COLOR, Colour_ZM);
         ObjectSet("???????? ?? ?????? ??????? ?????", OBJPROP_STYLE, Style_ZM_Procent);
         ObjectSet("???????? ?? ?????? ??????? ?????", OBJPROP_WIDTH, Width_ZM_Procent);
      }
      else {Comment_("????.- %.??.?=0");}  

         if (SoundPlay_Menshe == true)
         {
         if (OMarginLevel <= Procent_ZM)   PlaySound(Sound_Alert);
         }
         else {Comment_("????.???-????.<.%?=0");}

         if (SoundPlay_Bolshe == true)   
         {
         if (OMarginLevel > Procent_ZM)   PlaySound(Sound_OK);
         }
         else {Comment_("????.???-????.>.%?=0");}

         if (OMarginLevel <= Procent_ZM)
         {
           if (OMarginLevel > 100)
           {
           ObjectDelete("LOCK");
           if(ObjectFind("LOCK") != 0)

           ObjectCreate("LOCK", OBJ_LABEL, 0, 0, 0);        
           ObjectSetText("LOCK", "LOCK", RazmerShrifta*5, "Verdana", Colour_ZM);
           ObjectSet("LOCK", OBJPROP_CORNER, Ugol_3);
           ObjectSet("LOCK", OBJPROP_XDISTANCE, MP_X);
           ObjectSet("LOCK", OBJPROP_YDISTANCE, MP_Y);
           }
         }

         if (OMarginLevel <= 100)
         {
         ObjectDelete("DEAD ZONE");
         if(ObjectFind("DEAD ZONE") != 0)

         ObjectCreate("DEAD ZONE", OBJ_LABEL, 0, 0, 0);        
         ObjectSetText("DEAD ZONE", "DEAD ZONE", RazmerShrifta*2.3, "Verdana", Colour_ZF);
         ObjectSet("DEAD ZONE", OBJPROP_CORNER, Ugol_3);
         ObjectSet("DEAD ZONE", OBJPROP_XDISTANCE, MP_X+4);
         ObjectSet("DEAD ZONE", OBJPROP_YDISTANCE, MP_Y+RazmerShrifta*2.3);
         }

         double d_pZF, ur_pZF, Afto_Procent_ZF;

         Afto_Procent_ZF = AccountStopoutLevel(); //Stop Out (?????????????? ???????? ???????)

         d_pZF = d_shift_3 - dDZ*Afto_Procent_ZF/100; //????????? ?? ?????? ???????? ??

         ur_pZF = Bid - d_pZF*Point;

         ObjectDelete ("??????? ??????????????? ???????? ??????? ?? / StopOut");

      if (ZeroFull_Pr == true)
      {
         ObjectCreate("??????? ??????????????? ???????? ??????? ?? / StopOut", OBJ_HLINE, 0, 0, ur_pZF);
         ObjectSet("??????? ??????????????? ???????? ??????? ?? / StopOut", OBJPROP_COLOR, Colour_ZF);
         ObjectSet("??????? ??????????????? ???????? ??????? ?? / StopOut", OBJPROP_STYLE, Style_ZF_Procent);
         ObjectSet("??????? ??????????????? ???????? ??????? ?? / StopOut", OBJPROP_WIDTH, Width_ZF_Procent);
      }
      else {Comment_("????.- ????.%.????.??");}  

 double  dZM, price_bzu2, dZP, Znakov, Znak_Z;

   Znak_Z = MarketInfo(Symbol(),MODE_DIGITS);

   dZM = -shift;
   Znakov = MathPow ( 10 , Znak_Z );

   if (lots < 0) {  price_bzu2 = (Ask - pri

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

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

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

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

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

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

Стоимость полного кода
2 704,90₽ ≈ $33.06