Здравствуйте,
создал советник, который автоматически рисует волны в чарте.
[-> ObjectCreate(obj_name, OBJ_TREND, 0, zeit1, preis1, zeit2, preis2);]
как теперь тоже самое сделать с помощью индикатора - не приложу ума.
Такое вообще возможно? Может кто подскажет? И как? хотя бы в общих чертах.
спасибо заранее!
Сергей
Конечно возможно. Разница между индикатором и советником в том, что в индикаторе нельзя использовать торговые функции, а в советнике - функции для рисования. Объекты можно создавать/настраивать/удалять и в советнике и в индикаторе, для этого используются одни и те же функции.
спасибо большое за ответ!
я так понял, что актуальное значение индикатора передаётся окну чарта через Buffer и это могут быть только сплошная линия, гистограмма или символ.
https://docs.mql4.com/ru/customind/SetLevelStyle
https://docs.mql4.com/ru/constants/drawstyles
+++++++++++++++++++++++
double IndPuffer1[];
....
SetIndexBuffer(0,IndPuffer1);
....
// пример со средними
IndPuffer1[i]=iMA(NULL,0,sma_periode,0,MODE_SMMA,PRICE_MEDIAN,i);
....
+++++++++++++++++++++++
а как я могу передать через буффер в окно чарта Объект с параметрами [ObjectCreate(obj_name, OBJ_TREND, 0, time1, price1, time2, price2);]
? или же я не до конца понял как работает индикатор?
мог бы мне кто-нибудь объяснить?
заранее благодарю.
П.С.
=========================================
моя собственно говоря проблема:
=========================================
для того что бы нарисовать волны в чарте, мне нужно прогнать код программы с историческими данными в тесторе.
а я бы хотел это делать точно так же как с нормальным Аллигатор- или же индикатором средних. Просто загружаешь в терминал, и всё. И расчёт идёт не от последнего тика, а для всей линии чарта.
Может попробовать в буфер индикатора занести значения контрольных точек, по которым Вы создаете линию тренда (preis1 и т.д.), а тип отрисовки задать в виде ломаной линии (SetIndexStyle(0,DRAW_SECTION))
я так понял, что актуальное значение индикатора передаётся окну чарта через Buffer и это могут быть только сплошная линия, гистограмма или символ.
https://docs.mql4.com/ru/customind/SetLevelStyle
https://docs.mql4.com/ru/constants/drawstyles
а как я могу передать через буффер в окно чарта Объект с параметрами [ObjectCreate(obj_name, OBJ_TREND, 0, time1, price1, time2, price2);]
? или же я не до конца понял как работает индикатор?
мог бы мне кто-нибудь объяснить?
А индикаторные буферы в этом случае вообще не задействуются, считайте, что их нет :))
спасибо большое за подсказки!
@mInvIn: ваше предложение наверное тоже работает, но у меня пока нет идей по этому теме. попробую пока сделать то, что я себе лучше представить могу.
@granit77
"цикл" и "пробежаться по истории" - это мне конечно же о чём то говорит. попробую сегодня вечером
позже отчитаюсь.
С уважением,
Сергей
опять не разберусь ;-(
как я из фор-цикла могу передать окну чарта объект?
например:
--------------------------------------------------------------
int limit;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for(int i=0; i<limit; i++)
{
string s_obj_name1 = "Tag_"+TimeCurrent();
ObjectCreate(s_obj_name1, OBJ_TEXT, 0, TimeCurrent(),Close[0]+20*Point);
ObjectSetText(s_obj_name1, DoubleToStr(DayOfWeek(),0), 16, "Times New Roman", Yellow);
}
return(0);
-----------------------------------------------------------
всё работает, но только от последнего тика. "пробежаться по истории" не получается !!
по истории пробeгается только через буфер ;-(
может кто подскажет?
спасибо заранее!
Конечно возможно. Разница между индикатором и советником в том, что в индикаторе нельзя использовать торговые функции, а в советнике - функции для рисования. Объекты можно создавать/настраивать/удалять и в советнике и в индикаторе, для этого используются одни и те же функции.
------------------------------------------------------------------------------------------
string s_obj_name1 = "Tag_"+iTime(NULL,0,i);
ObjectCreate(s_obj_name1, OBJ_TEXT, 0, iTime(NULL,0,i),Close[i]+20*Point);
ObjectSetText(s_obj_name1, DoubleToStr(DayOfWeek(),0), 16, "Times New Roman", Yellow);
------------------------------------------------------------------------------------------
а вот так выглядит уже лучше !!
всё, заработало!
"принцип действия" я уже в принципе изложил выше. (конечно же не без ваших подсказок! спасибо!)
примечание, для начинающих разработчиков которые будут конструировать подобные индикаторы:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
любой индикатор, который должен быть загружен в окно терминала и "пробегает по истории", работает с барами и поэтому
не может быть таким точным как работа с тестером на тиковом уровне. чем мельче таймфрэйм, тем точнее такой индикатор.
Идеальный вариант был бы по этому 1бар = 1тик, но в метатрэдере такого не бывает.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте,
создал советник, который автоматически рисует волны в чарте.
[-> ObjectCreate(obj_name, OBJ_TREND, 0, zeit1, preis1, zeit2, preis2);]
как теперь тоже самое сделать с помощью индикатора - не приложу ума.
Такое вообще возможно? Может кто подскажет? И как? хотя бы в общих чертах.
спасибо заранее!
Сергей