Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1266

 
Подскажите пожалуйста как настраиваются уровни фибо при автопостроении
 
VVT:
Подскажите пожалуйста как настраиваются уровни фибо при автопостроении

Пример в коде Fibonaci RR - 

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   long chart_id=ChartID();
   datetime time1=ChartTimeOnDropped();
   double price1=ChartPriceOnDropped();
   if(ObjectFind(chart_id,InpFiboName)<0)
      FiboLevelsCreate(chart_id,InpFiboName,0,time1,price1,time1+InpAddSecond,price1-InpStopLoss*Point(),InpColor);
   else
     {
      ObjectDelete(chart_id,InpFiboName);
      ChartRedraw(chart_id);
      FiboLevelsCreate(chart_id,InpFiboName,0,time1,price1,time1+InpAddSecond,price1-InpStopLoss*Point(),InpLevelsColor);
     }
//---
   int               levels   = 6;                                                                    // number of level lines
   double            values[6]= {1.0,0.0,2.0,3.0,4.0,5.0};                                            // values of level lines
   color             colors[6];                                                                       // color of level lines
   for(int i=0; i<6; i++)
      colors[i]=InpLevelsColor;
   ENUM_LINE_STYLE   styles[6];                                                                       // style of level lines
   for(int i=0; i<6; i++)
      styles[i]=InpLevelsStyles;
   int               widths[6]= {2.0,2.0,2.0,2.0,2.0,2.0};                                            // width of level lines
   string            texts[6] = {"BREAK EVEN","STOP LOSS","TP1 1.1","TP2 2.1","TP3 3.1","TP4 4.1"};   // text of level lines
//---
   FiboLevelsSet(levels,values,colors,styles,widths,texts,chart_id,InpFiboName);
  }


можно задать для уровней: количество линий, значение линий, цвет линий, стиль линий, ширину линий, текст линий.

 
int OnInit()
  {
//---
   ChartSetInteger(ChartID(), CHART_EVENT_OBJECT_CREATE, true);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  }
//+------------------------------------------------------------------+

/***********************OnChartEvent function************************/
void OnChartEvent(const int id,         // идентификатор события
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam  // параметр события типа string
                 )
  {
   if(id == CHARTEVENT_OBJECT_CREATE)
     {
      I++;
      string result[];      //  массив для получения строк
      StringSplit(sparam, ' ', result); //  получим из имени созданного объекта подстроки
      ulong timeCreate = ObjectGetInteger(0, sparam, OBJPROP_CREATETIME); //  получим время создания объекта
      string newName = result[0]+" "+result[1]+" "+string(I); //  сформируем новое имя объекта
      ObjectSetString(0, sparam, OBJPROP_NAME, newName);  //  переименуем объект

      //----------------------------------------------------------------------------------------
      double   Level_0= ObjectGetDouble(
                                0,          // идентификатор графика
                                newName,              // имя объекта
                                OBJPROP_PRICE,           // идентификатор свойства
                                0     // модификатор свойства
                             );


      double   Level_1= ObjectGetDouble(
                                0,          // идентификатор графика
                                newName,              // имя объекта
                                OBJPROP_PRICE,           // идентификатор свойства
                                1     // модификатор свойства
                             );
      //------------------------------------------------------------------------------------------------------
      if(Level_0 > Level_1)
        {
         ObjectSetInteger(0,newName,OBJPROP_COLOR,clrDeepSkyBlue);
        }
      else
        {
         ObjectSetInteger(0,newName,OBJPROP_COLOR,clrYellow);
        }
     }/******************************************************************/
  }

Привет! Не подскажите почему при дебагинге, проходя код пошагово линии перекрашиваются в оба цвета в зависимости от значений координат. А кидая эксперт на график, линии условие if(Level_0 > Level_1) никогда не истинно ?
 
Kira27:

Привет! Не подскажите почему при дебагинге, проходя код пошагово линии перекрашиваются в оба цвета в зависимости от значений координат. А кидая эксперт на график, линии условие if(Level_0 > Level_1) никогда не истинно ?

Очень большая вероятность того, что после переименования объекта он ещё недоступен для обращения к нему. Можно попробовать после переименования поставить ChartRedraw. Если не поможет, то надо как-то иначе строить последовательность.

ps; Ещё вариант: сначала перекрасить с именем sparam и потом переименовать.
 
Alexey Viktorov:

Очень большая вероятность того, что после переименования объекта он ещё недоступен для обращения к нему. Можно попробовать после переименования поставить ChartRedraw. Если не поможет, то надо как-то иначе строить последовательность.

ps; Ещё вариант: сначала перекрасить с именем sparam и потом переименовать.

И снова спасибо!!!  Что бы я без вас делал?))))

 
Vladimir Karputov:

Пример в коде Fibonaci RR - 

Спасибо за пример, но это просто настройка торговых уровней. Меня интересует настройка уровней Фибоначчи как например: 0,0%, 23,6%, 38,2%, 50%, 61,8%, 100%, 161,8%, 261,8%...

https://www.metatrader5.com/ru/terminal/help/objects/fibo/fibo_retracement

Индикатор авто строит по умолчанию и по стандартным уровням фибо. Должен же быть в терминале исходник фибо инструментов, который можно было бы изменить или скопировать из него метод построения уровней... Немогу найти, если знаете где то подскажите пожалуйста.

Или, как добавить в пользовательский индикатор уровни: 0,0%, 23,6%, 38,2%, 50%, 61,8%, 100%, 161,8%, 261,8%...

   ObjectCreate(chart_id,name,OBJ_EXPANSION,nwin,time1,price1,time2,price2,time3,price3);
   ObjectSetInteger(chart_id,name,OBJPROP_COLOR,Color);
   ObjectSetInteger(chart_id,name,OBJPROP_STYLE,style);
   ObjectSetInteger(chart_id,name,OBJPROP_WIDTH,width);

   if(ray>0)ObjectSetInteger(chart_id,name,OBJPROP_RAY_RIGHT,true);
   if(ray<0)ObjectSetInteger(chart_id,name,OBJPROP_RAY_LEFT,true);

   if(ray==0)
     {
      ObjectSetInteger(chart_id,name,OBJPROP_RAY_RIGHT,false);
      ObjectSetInteger(chart_id,name,OBJPROP_RAY_LEFT,false);
     }

   ObjectSetString(chart_id,name,OBJPROP_TEXT,text);
   ObjectSetInteger(chart_id,name,OBJPROP_BACK,true);

   for(int numb=0; numb<10; numb++)
     {
      ObjectSetInteger(chart_id,name,OBJPROP_LEVELCOLOR,numb,Color);
      ObjectSetInteger(chart_id,name,OBJPROP_LEVELSTYLE,numb,style);
      ObjectSetInteger(chart_id,name,OBJPROP_LEVELWIDTH,numb,width);
     }

Подскажите пожалуйста

 
Kira27:

И снова спасибо!!!  Что бы я без вас делал?))))

Может быть научился-бы логически мыслить.)))

 
VVT:

Спасибо за пример, но это просто настройка торговых уровней. Меня интересует настройка уровней Фибоначчи как например: 0,0%, 23,6%, 38,2%, 50%, 61,8%, 100%, 161,8%, 261,8%...

https://www.metatrader5.com/ru/terminal/help/objects/fibo/fibo_retracement

Индикатор авто строит по умолчанию и по стандартным уровням фибо. Должен же быть в терминале исходник фибо инструментов, который можно было бы изменить или скопировать из него метод построения уровней... Немогу найти, если знаете где то подскажите пожалуйста.

Или, как добавить в пользовательский индикатор уровни: 0,0%, 23,6%, 38,2%, 50%, 61,8%, 100%, 161,8%, 261,8%...

Подскажите пожалуйста

пример выше я дал - там как раз есть задание уровней. Если спрашиваете, то потрудитесь открыть код и проверить.

 
Vladimir Karputov:

пример выше я дал - там как раз есть задание уровней. Если спрашиваете, то потрудитесь открыть код и проверить.

Спасибо, да, есть, немного запутанно но я стараюсь понять) спасибо

 

 Как в Mql5 будет выглядеть код


extern int    StartHour   = 12;    //Час начала торговли(терминальное время)

int start()
{
if  (Hour()==StartHour)
    {
     OrderSend(Symbol(),OP_BUY,Lot,Ask,0,Ask-StopLoss*Point,Bid+TakeProfit*Point,"советник",MAGIC,expiration,Blue);
    }  
return(0);
}