ObjectCreate работает только с текущим графиком, а нужен другой график другого таймфрейма
как вариант
PostMessageA(hwnd, WM_COMMAND, i, 0);
но нужную команду на форуме не нашел.
команда 33244 - горизонтальная линия --- соотв не подходит, она просто эмулирует нажатие кнопки
а мне надо чтобы горизонтальная линия нарисовалась из советника
bool ObjectCreate( |
какая то путаница получается
в ObjectSet не указывать что-ли идентификатор
в документации такие тонкости н указаны
// установка флага видимости объекта. Объект будет отрисован только на 15-минутном и 1-часовом периодах графика
ObjectSet("MyObject", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15 | OBJ_PERIOD_H1);
только надо дополнить как брать chart_id, // идентификатор графика
chart_id = WindowHandle (_Symbol, PERIOD_M5);
Разработчики учитесь писать документацию нормально
Разработчики учитесь писать документацию нормально
Учитесь читать документацию.
MQL4 был изменён, и синтаксис стал, как у MQL5. Для установки свойств объекта на чужом графике используйте функции ObjectSetDouble, ObjectSetInteger, ObjectSetString
какая то путаница получается
в ObjectSet не указывать что-ли идентификатор
в документации такие тонкости н указаны
// установка флага видимости объекта. Объект будет отрисован только на 15-минутном и 1-часовом периодах графика
ObjectSet("MyObject", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15 | OBJ_PERIOD_H1);
только надо дополнить как брать chart_id, // идентификатор графика
chart_id = WindowHandle (_Symbol, PERIOD_M5);
Разработчики учитесь писать документацию нормально
Рисует в первом графике, в главном окне, с любого другого:
void OnStart() { long ch=ChartFirst(); if(!ObjectCreate(ch,"rr1",OBJ_VLINE,0,Time[0],Open[0])) Print("Err. obj. create - ",GetLastError()); }
сделал так, сканирую как в примере документации и рисую
И ВСЕ РАВНО НЕ РИСУТ!!
потом понял, что если кликнуть мышью по окну М30 то линия появляется
получается надо еще как-то обновить окно программно???
long currChart,prevChart=ChartFirst(); int i=0,limit=100; Print("ChartFirst = ",ChartSymbol(prevChart)," ID = ",prevChart); while(i<limit)// у нас наверняка не больше 100 открытых графиков { currChart=ChartNext(prevChart); // на основании предыдущего получим новый график if(currChart<0) break; // достигли конца списка графиков if (_Symbol==ChartSymbol(currChart)) { Print("i=",i," period=",ChartPeriod(currChart)," ID =",currChart); if (ChartPeriod(currChart) == 15) descriptM15=currChart; if (ChartPeriod(currChart) == 30) descriptM30=currChart; if (ChartPeriod(currChart) == 240) descriptH4=currChart; } prevChart=currChart;// запомним идентификатор текущего графика для ChartNext() i++;// не забудем увеличить счетчик }
//========= И РИСУЮ ========== if(!ObjectCreate(descriptM30,"SLgrafM30",OBJ_HLINE,0,0, price)) Print("Err. obj. create - ",GetLastError()); else {Print ("М30 создан ok ");} ObjectSet("SLgrafM30", OBJPROP_PRICE1, price ); ObjectSet("SLgrafM30", OBJPROP_PRICE2, price ); ObjectSet("SLgrafM30", OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15 | OBJ_PERIOD_M30); ObjectSet("SLgrafM30", OBJPROP_STYLE, STYLE_DASH); ObjectSet("SLgrafM30", OBJPROP_COLOR, Red );
получается надо еще как-то обновить окно программно??
попробовал в иницилизации советника удалить уже нарисованные линии с именами SLgrafM30 и SLgrafM15
ObjectDelete("SLgrafM30"); ObjectDelete("SLgrafM15"); Sleep(1000); ChartRedraw(descriptM30); ChartRedraw(descriptM15); Sleep(1000);
к сожалению не удаляет
все хорошо работает только на локальном графику
на других графиках с построениями какие то проблемы
или я не знаю каких-то тонкостей
попробовал в иницилизации советника удалить уже нарисованные линии с именами SLgrafM30 и SLgrafM15
к сожалению не удаляет
все хорошо работает только на локальном графику
на других графиках с построениями какие то проблемы
или я не знаю каких-то тонкостей
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
ObjectCreate работает только с текущим графиком, а нужен другой график другого таймфрейма
как вариант
PostMessageA(hwnd, WM_COMMAND, i, 0);
но нужную команду на форуме не нашел.
команда 33244 - горизонтальная линия --- соотв не подходит, она просто эмулирует нажатие кнопки
а мне надо чтобы горизонтальная линия нарисовалась из советника