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

risk reward box.mq5

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

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

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

О программе

Индикатор для MetaTrader 4, отображающий на графике прямоугольные области двух цветов, обозначающие зоны риска и потенциальной прибыли. Области строятся на основе экстремумов цен за определённый период и могут перемещаться пользователем путём перетаскивания за границы. Нажатие кнопки «Reset» сбрасывает отображение и перерисовывает области заново. Индикатор поддерживает работу на текущем таймфрейме или на всех открытых графиках одновременно.

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

НастройкаОписание
Draw Box on all opened charts (DrawAllChart) Рисовать на всех графиках — Переключатель, определяющий, отображать ли прямоугольные области на всех открытых графиках или только на текущем.
Cart timeframe (TimeFrame) Таймфрейм — Выбор таймфрейма, на котором производятся расчёты экстремумов для построения областей.
Получить полный код

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

#property version   "1.1"

#property strict
#property indicator_chart_window

input    bool              DrawAllChart   =  false;      // Draw Box on all opened charts
input    ENUM_TIMEFRAMES   TimeFrame      =  PERIOD_CURRENT;  // Cart timeframe
string   OBJprefix         =  "Risk_Reward_Box";

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

void OnDeinit(const int reason)
 {
   EventKillTimer();
 }

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   if(id==CHARTEVENT_OBJECT_CLICK)
     {
      if(sparam=="Reset") // Pause forwarder
       {
         ChartClean();
         GlobalSet();
       }
     }
   if(id==CHARTEVENT_OBJECT_DRAG)
     {
      if(sparam==OBJprefix+".Risk_Reward_Green" )
       {
         double   price    =  ObjectGet(OBJprefix+".Risk_Reward_Green",OBJPROP_PRICE1); // low green
         int      time2    =  (int)ObjectGet(OBJprefix+".Risk_Reward_Green",OBJPROP_TIME2);
         int      time1    =  (int)ObjectGet(OBJprefix+".Risk_Reward_Green",OBJPROP_TIME1);

         ObjectSet(OBJprefix+".Risk_Reward_Pink",OBJPROP_PRICE2,price);    // top pink 
         ObjectSet(OBJprefix+".Risk_Reward_Pink",OBJPROP_TIME1,time1);     // mid
         ObjectSet(OBJprefix+".Risk_Reward_Pink",OBJPROP_TIME2,time2);     // mid
       }
      if(sparam==OBJprefix+".Risk_Reward_Pink" )
       {
         double   price1   =  ObjectGet(OBJprefix+".Risk_Reward_Pink",OBJPROP_PRICE1); // top pink
         double   price2   =  ObjectGet(OBJprefix+".Risk_Reward_Pink",OBJPROP_PRICE2); // top pink
         int      time2    =  (int)ObjectGet(OBJprefix+".Risk_Reward_Pink",OBJPROP_TIME2);
         int      time1    =  (int)ObjectGet(OBJprefix+".Risk_Reward_Pink",OBJPROP_TIME1);
         ObjectSet(OBJprefix+".Risk_Reward_Green",OBJPROP_PRICE1,price2);   // low green
         ObjectSet(OBJprefix+".Risk_Reward_Green",OBJPROP_TIME1,time1);
         ObjectSet(OBJprefix+".Risk_Reward_Green",OBJPROP_TIME2,time2);
         if( ObjectGet(OBJprefix+".Risk_Reward_Pink",OBJPROP_PRICE1) > ObjectGet(OBJprefix+".Risk_Reward_Pink",OBJPROP_PRICE2) )
          {
               double gapisze   =  MathAbs(ObjectGet(OBJprefix+".Risk_Reward_Green",OBJPROP_PRICE1)-ObjectGet(OBJprefix+".Risk_Reward_Green",OBJPROP_PRICE2));
               price1    =  ObjectGet(OBJprefix+".Risk_Reward_Green",OBJPROP_PRICE1);
               price2    =  ObjectGet(OBJprefix+".Risk_Reward_Green",OBJPROP_PRICE2); 
            ObjectSet(OBJprefix+".Risk_Reward_Green",OBJPROP_PRICE1,price1);
            ObjectSet(OBJprefix+".Risk_Reward_Green",OBJPROP_PRICE2,price1-gapisze);
          }
         if( ObjectGet(OBJprefix+".Risk_Reward_Pink",OBJPROP_PRICE1) < ObjectGet(OBJprefix+".Risk_Reward_Pink",OBJPROP_PRICE2) )
          {
               double gapisze   =  MathAbs(ObjectGet(OBJprefix+".Risk_Reward_Green",OBJPROP_PRICE1)-ObjectGet(OBJprefix+".Risk_Reward_Green",OBJPROP_PRICE2));
               price1    =  ObjectGet(OBJprefix+".Risk_Reward_Green",OBJPROP_PRICE1);
               price2    =  ObjectGet(OBJprefix+".Risk_Reward_Green",OBJPROP_PRICE2); 
            ObjectSet(OBJprefix+".Risk_Reward_Green",OBJPROP_PRICE1,price1);
            ObjectSet(OBJprefix+".Risk_Reward_Green",OBJPROP_PRICE2,price1+gapisze);
          }
       }
       GlobalSet();
     }
  }
void OnTimer()
 {
   ObjectSet(OBJprefix+".Risk_Reward_Pink",OBJPROP_TIME1,GlobalVariableGet(OBJprefix+".RiskRewardTime1"));
   ObjectSet(OBJprefix+".Risk_Reward_Pink",OBJPROP_TIME2,GlobalVariableGet(OBJprefix+".RiskRewardTime2"));
   ObjectSet(OBJprefix+".Risk_Reward_Green",OBJPROP_TIME1,GlobalVariableGet(OBJprefix+".RiskRewardTime1"));
   ObjectSet(OBJprefix+".Risk_Reward_Green",OBJPROP_TIME2,GlobalVariableGet(OBJprefix+".RiskRewardTime2"));

   ObjectSet(OBJprefix+".Risk_Reward_Pink",OBJPROP_PRICE1,GlobalVariableGet(OBJprefix+".Pink.LOW"));
   ObjectSet(OBJprefix+".Risk_Reward_Pink",OBJPROP_PRICE2,GlobalVariableGet(OBJprefix+".Pink.TOP"));
   ObjectSet(OBJprefix+".Risk_Reward_Green",OBJPROP_PRICE1,GlobalVariableGet(OBJprefix+".Green.LOW"));
   ObjectSet(OBJprefix+".Risk_Reward_Green",OBJPROP_PRICE2,GlobalVariableGet(OBJprefix+".Green.TOP"));

 }

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
      // код доступен только после оплаты
   }

void ChartDraw()
 {
   long     chart_ID             =  ChartFirst();
   string   symbl                =  "";
   ENUM_TIMEFRAMES chartperiod   =  0;
   if (DrawAllChart)
   while(chart_ID>=0)
     {
      symbl          =  ChartSymbol(chart_ID);
      chartperiod    =  ChartPeriod(chart_ID);
      string   name  =  OBJprefix+".Risk_Reward_Pink";
      double   top   =  iHigh(symbl,chartperiod,iHighest(symbl,chartperiod,MODE_HIGH,20,0));
      double   low   =  iLow(symbl,chartperiod,iLowest(symbl,chartperiod,MODE_LOW,20,0));
      double   mid   =  SymbolInfoDouble(symbl,SYMBOL_ASK);
      if (ObjectFind(chart_ID,name)<0)
      {
      ObjectCreate(chart_ID,name,OBJ_RECTANGLE,0,iTime(symbl,chartperiod,0),low,iTime(symbl,chartperiod,0)+PeriodSeconds()*25,mid);
      ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clrPink); 
      ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,STYLE_SOLID); 
      ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,2); 
      ObjectSetInteger(chart_ID,name,OBJPROP_FILL,true); 
      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,true); 
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,true); 
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,true);  
      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,false); 
      ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,0);
      }
      name  =  OBJprefix+".Risk_Reward_Green";
      if (ObjectFind(chart_ID,name)<0)
      {
      ObjectCreate(chart_ID,name,OBJ_RECTANGLE,0,iTime(symbl,chartperiod,0),mid,iTime(symbl,chartperiod,0)+PeriodSeconds()*25,top);
      ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clrMediumSeaGreen); 
      ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,STYLE_SOLID); 
      ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,2); 
      ObjectSetInteger(chart_ID,name,OBJPROP_FILL,true); 
      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,true); 
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,true); 
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,true);  
      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,false); 
      ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,0);
      }
      chart_ID = ChartNext(chart_ID);
     }
     else {
      chart_ID       =  0;
      symbl          =  Symbol();
      chartperiod    =  PERIOD_CURRENT;
      str

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

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

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

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

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

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

Стоимость полного кода
1 100,70₽ ≈ $13.45