Вообще что-либо рисовать в индикаторах нужно не ранее первого события в OnCalculate() - такой подход будет гарантировать создание графика и корректную работу с объектами.
Примерно так - на первом тике создаём, А НА СЛЕДУЮЩЕМ ЗАПРАШИВАЕМ РАЗМЕР:
//+------------------------------------------------------------------+//| TestIndicator1.mq4 |//| Copyright 2015, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2015, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"#property strict#property indicator_chart_windowstring name="probe";
bool first_tick=false; // false - ещё не было тиков//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- indicator buffers mapping//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---staticint count;
if(count>3)
return(rates_total); // после трёх Алертов выходим. Не за чем слух портить.if(!first_tick)
{
ObjectCreate(0,name,OBJ_LABEL,0,0,0);
ObjectSetString(0,name,OBJPROP_TEXT,name);
first_tick=true;
}
else
{
string text=ObjectGetString(0,name,OBJPROP_TEXT);
int text_sizeX=int(ObjectGetInteger(0,name,OBJPROP_XSIZE));
Alert(text," ",text_sizeX);
}
count++;
//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+//| Deinit |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
ObjectDelete(name);
EventKillTimer();
}
//+------------------------------------------------------------------+
Вообще что-либо рисовать в индикаторах нужно не ранее первого события в OnCalculate() - такой подход будет гарантировать создание графика и корректную работу с объектами.
Примерно так - на первом тике создаём, А НА СЛЕДУЮЩЕМ ЗАПРАШИВАЕМ РАЗМЕР:
Раньше встречал проблему передачи string через то что поменялась кодировка ansi в unicode и надо стрингове переменные преобразовывать в char массивы.
Почему тогда индикатор работает?
эта функция отвечает за открытие интернет адреса и к Вашей проблеме не имеет никакого отношения, Вам уже несколько раз по разному обьяснили в чем у Вас проблема, а Вы не успокаиваетесь.
Обьект еще не нарисован, а Вы уже хотите знать его размер, Вы хотите узнать размер того чего еще нет / не нарисовано.
эта функция отвечает за открытие интернет адреса и к Вашей проблеме не имеет никакого отношения, Вам уже несколько раз по разному обьяснили в чем у Вас проблема, а Вы не успокаиваетесь.
Обьект еще не нарисован, а Вы уже хотите знать его размер, Вы хотите узнать размер того чего еще нет / не нарисовано.
Не помагает.
Вообще что-либо рисовать в индикаторах нужно не ранее первого события в OnCalculate() - такой подход будет гарантировать создание графика и корректную работу с объектами.
Примерно так - на первом тике создаём, А НА СЛЕДУЮЩЕМ ЗАПРАШИВАЕМ РАЗМЕР:
Вообще что-либо рисовать в индикаторах нужно не ранее первого события в OnCalculate() - такой подход будет гарантировать создание графика и корректную работу с объектами.
Примерно так - на первом тике создаём, А НА СЛЕДУЮЩЕМ ЗАПРАШИВАЕМ РАЗМЕР:
Хорошо. На выходных сэмулирую пару тиков.
А есть функция которая возвращала бы отрисовался ли объект?
а WindowRedraw не поможет что бы не ждать тика?
#import "wininet.dll"
int InternetOpenW( string sAgent
...
Это в индикаторе новостей. И он работает.
Раньше встречал проблему передачи string через то что поменялась кодировка ansi в unicode и надо стрингове переменные преобразовывать в char массивы.
Почему тогда индикатор работает?
#import "wininet.dll"
int InternetOpenW( string sAgent
...
Это в индикаторе новостей. И он работает.
Раньше встречал проблему передачи string через то что поменялась кодировка ansi в unicode и надо стрингове переменные преобразовывать в char массивы.
Почему тогда индикатор работает?
эта функция отвечает за открытие интернет адреса и к Вашей проблеме не имеет никакого отношения, Вам уже несколько раз по разному обьяснили в чем у Вас проблема, а Вы не успокаиваетесь.
Обьект еще не нарисован, а Вы уже хотите знать его размер, Вы хотите узнать размер того чего еще нет / не нарисовано.
эта функция отвечает за открытие интернет адреса и к Вашей проблеме не имеет никакого отношения, Вам уже несколько раз по разному обьяснили в чем у Вас проблема, а Вы не успокаиваетесь.
Обьект еще не нарисован, а Вы уже хотите знать его размер, Вы хотите узнать размер того чего еще нет / не нарисовано.
гыгыыгыгыгы...
Это новая проблема.