Объекты создаются в списке объектов, но на графике не отображаются. В чем причина не пойму, голову сломал. Тот же код в скрипте работает.
- Мульти-эксперт - как отобразить сразу несколько графиков в тестере стратегий?
- Почему не видно объект?
- Обсуждение статьи "Видео: Как работают торговые сигналы на платформе MetaTrader"
Ivan Kornaukhov:
Объекты создаются в списке объектов, но на графике не отображаются. В чем причина не пойму, голову сломал. Тот же код в скрипте работает.
Объекты создаются в списке объектов, но на графике не отображаются. В чем причина не пойму, голову сломал. Тот же код в скрипте работает.
А где тогда не работает? Нужно больше подробностей.
Ihor Herasko:
А где тогда не работает? Нужно больше подробностей.
тьфу, забыл написать, что это в индикаторе не отображаются
Ivan Kornaukhov:
тьфу, забыл написать, что это в индикаторе не отображаются
Покажите выдержку из кода, как создаете объекты. Код вставляется через кнопку "</>" или Alt+S
Ihor Herasko:
Покажите выдержку из кода, как создаете объекты. Код вставляется через кнопку "</>" или Alt+S
#property copyright "Copyright 2018, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property indicator_chart_window //---- для расчёта и отрисовки индикатора использовано ноль буферов #property indicator_buffers 0 //---- использовано всего ноль графических построений #property indicator_plots 0 extern string startTradeTime= "00:00"; extern string endTradeTime = "8:59"; input color Color = Red; input int Size = 20; input string Font = "Verdana"; //+---------------------------------- //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit() { return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ 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[]) { MqlDateTime dt; int i=0,first=0; double MaxRange=0,MinRange=0; if(prev_calculated==0) // Первое выполнение функции OnCalculate() после запуска индикатора { first=0; //номер первого бара, с которого начинается подсчет i=rates_total; //кол-во баров, необходимых для копирования из индикатора } else { first=prev_calculated-1; // -1 нужна для постоянного пересчета последнего бара //+------------------------------------------------------------------+ //| если бар не новый то rates_total = prev_calculated, значит для копирования из индикатора необходимо еще 1 бар | //+------------------------------------------------------------------+ i=rates_total-prev_calculated+1; // +1 нужен для копирования из индикаторного буффера, если rates_total = prev_calculated } for(i=first;i<rates_total;i++) { TimeToStruct(time[i],dt); if(dt.hour>0 && dt.hour<9) { if(MaxRange<high[i]) { MaxRange=high[i]; } if(MinRange<low[i]) { MinRange=low[i]; } } if(dt.hour==9) { Line(time[i],MaxRange); Line(time[i],MinRange); Write(DoubleToString(MaxRange),time[i],MaxRange,i); } } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ void Write(string str,datetime time,double price,int i) { string name="PriceAction "+IntegerToString(i); ObjectCreate(0,name,OBJ_TEXT,0,time,price); ObjectSetString(0,name,OBJPROP_TEXT,str); ObjectSetInteger(0,name,OBJPROP_COLOR,clrRed); ObjectGetInteger(0,name,OBJPROP_SELECTABLE,true); ObjectSetInteger(0,name,OBJPROP_SELECTED,true); ObjectSetInteger(0,name,OBJPROP_HIDDEN,false); // Только для чтения } //+------------------------------------------------------------------+ void Line(datetime time,double price) { price = NormalizeDouble(price,_Digits); string name="Range:"+TimeToString(time,TIME_DATE)+" price:"+DoubleToString(price); datetime timeGo = StringToTime(TimeToString(time,TIME_DATE) + " 00:00"); datetime timeEnd = StringToTime(TimeToString(time,TIME_DATE) + " 09:00"); ObjectCreate(0,name,OBJ_TREND,0,timeGo,price,timeEnd,price); ObjectSetInteger(0,name,OBJPROP_COLOR,clrRed); //--- установим стиль отображения линии ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_DASH); //--- установим толщину линии ObjectSetInteger(0,name,OBJPROP_WIDTH,2); //--- отобразим на переднем (false) или заднем (true) плане ObjectSetInteger(0,name,OBJPROP_BACK,false); //--- включим (true) или отключим (false) режим перемещения линии мышью //--- при создании графического объекта функцией ObjectCreate, по умолчанию объект //--- нельзя выделить и перемещать. Внутри же этого метода параметр selection //--- по умолчанию равен true, что позволяет выделять и перемещать этот объект ObjectSetInteger(0,name,OBJPROP_SELECTABLE,true); ObjectSetInteger(0,name,OBJPROP_SELECTED,true); //--- включим (true) или отключим (false) режим продолжения отображения линии влево ObjectSetInteger(0,name,OBJPROP_RAY_LEFT,false); //--- включим (true) или отключим (false) режим продолжения отображения линии вправо ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false); //--- скроем (true) или отобразим (false) имя графического объекта в списке объектов ObjectSetInteger(0,name,OBJPROP_HIDDEN,false); //--- установим приоритет на получение события нажатия мыши на графике ObjectSetInteger(0,name,OBJPROP_ZORDER,0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ObjectsDeleteAll(0,"PriceAction",-1,-1); } //+------------------------------------------------------------------+

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь