Здравствуйте.
Заинтересовал Ваш индикатор. Но мне нужно чтобы линии "TL_Support" и "TL_Resistance" строились не по двум последним фракталам, а по последнему и по следующему более высокому/низкому .
Я внес изменеия в код. В онлайне работает замечательно, а вот в тестере отказывается. Делает первое построение и отмораживается. Подскажите плиз, как сделать чтобы индикатор с изменениями заработал в тестере МТ5.
Код процитирую ниже, внесённые изменения выделю жёлтым.
//+------------------------------------------------------------------+ //| Search for fractal values | //+------------------------------------------------------------------+ // --- Search for the first upper fractal for(n=0; n<Bars(Symbol(),base_tf); n++) { // --- if a non-empty value, terminate the loop if(FractalUp_base[n]!=EMPTY_VALUE) break; } UpFractal_1_base=FractalUp_base[n];// --- write the price value of the first fractal in the variable UpperFractal_1_base=n;// --- write the index of the first fractal in the variable // --- // --- Search for the second upper fractal for(n=UpperFractal_1_base+1; n<Bars(Symbol(),base_tf); n++) { // --- if a non-empty value, terminate the loop if( FractalUp_base[n]!=EMPTY_VALUE && FractalUp_base[n]>UpFractal_1_base ) break; } UpFractal_2_base=FractalUp_base[n]; // --- write the price value of the second fractal in the variable UpperFractal_2_base=n;// --- write the index of the second fractal in the variable // --- // --- Search for the first lower fractal for(n=0; n<Bars(Symbol(),base_tf); n++) { // --- if a non-empty value, terminate the loop if(FractalDown_base[n]!=EMPTY_VALUE) break; } LowFractal_1_base=FractalDown_base[n];// --- write the price value of the first fractal in the variable LowerFractal_1_base=n;// --- write the index of the first fractal in the variable // --- // --- Search for the second lower fractal for(n=LowerFractal_1_base+1; n<Bars(Symbol(),base_tf); n++) { // --- if a non-empty value, terminate the loop if( FractalDown_base[n]!=EMPTY_VALUE && FractalDown_base[n]<LowFractal_1_base ) break; } LowFractal_2_base=FractalDown_base[n];// --- write the price value of the second fractal in the variable LowerFractal_2_base=n;// --- write the index of the second fractal in the variable //---
Сам не проверял, но попробуйте лучше добавить условие на черчение самих линий, там где создаются объекты. Например для линии поддержки:
//--- Create support line if (LowFractal_1_base<LowFractal_2_base)//если цена первого найденного фрактала ниже цены второго найденного фрактала, тогда чертим линию { ObjectCreate(0,"TL_Support",OBJ_TREND,0,LowFractalTime_2_base[0],LowFractal_2_base,LowFractalTime_1_base[0],LowFractal_1_base); ObjectSetInteger(0,"TL_Support",OBJPROP_RAY_RIGHT,true); ObjectSetInteger(0,"TL_Support",OBJPROP_COLOR,Support_Color); ObjectSetInteger(0,"TL_Support",OBJPROP_STYLE,Support_Style); ObjectSetInteger(0,"TL_Support",OBJPROP_WIDTH,Support_Width); }
Сам не проверял, но попробуйте лучше добавить условие на черчение самих линий, там где создаются объекты. Например для линии поддержки:
Добрый день, спасибо за комментарий. Идея хорошая, правда для линий поддержки условие должно быть (по логике, которую я пытаюсь воплотить) обратным, лоу второго найденного фрактала должно быть ниже первого, все кандидаты на должность второго фрактала, лоу которых выше первого, должны быть проигнорированы
И еще, если пойти по этому пути, придется переделывать блок рисования, собственно и все остальное следом тоже. Красивый, ИМХО код потеряет свою изящность.
Есть и еще один фактор, почему я написал комментарий к этому посту - программка то отлично работает, на реальных котировках все отлично отрисовывается, вовремя, без багов, а в тестере не хочет. А когда что-то непонятно, это настораживает и напрягает, вот и хочу разобраться.
Файл подредактированного кода прилагаю, буду крайне благодарен, если более грамотные товарищи укажут на причину такого поведения тестера.
Добрый день, спасибо за комментарий. Идея хорошая, правда для линий поддержки условие должно быть (по логике, которую я пытаюсь воплотить) обратным, лоу второго найденного фрактала должно быть ниже первого, все кандидаты на должность второго фрактала, лоу которых выше первого, должны быть проигнорированы
И еще, если пойти по этому пути, придется переделывать блок рисования, собственно и все остальное следом тоже. Красивый, ИМХО код потеряет свою изящность.
Есть и еще один фактор, почему я написал комментарий к этому посту - программка то отлично работает, на реальных котировках все отлично отрисовывается, вовремя, без багов, а в тестере не хочет. А когда что-то непонятно, это настораживает и напрягает, вот и хочу разобраться.
Файл подредактированного кода прилагаю, буду крайне благодарен, если более грамотные товарищи укажут на причину такого поведения тестера.
По всей видимости возникает конфликт с массивом FractalDown_base[]. Странно, что он не возникает для верхних фракталов. В общем, я немного изменил ваше сравнение:
for(n=LowerFractal_1_base+1; n<Bars(Symbol(),base_tf); n++) { // --- if a non-empty value, terminate the loop if(FractalDown_base[n]!=EMPTY_VALUE && FractalDown_base[n]<Low_base_tf[LowerFractal_1_base] ) break; }
То есть я добавил определение High и Low и сравниваю уже с ними. Так все работает в тестере нормально. Измененный файл прилагаю.
По всей видимости возникает конфликт с массивом FractalDown_base[]. Странно, что он не возникает для верхних фракталов. В общем, я немного изменил ваше сравнение:
То есть я добавил определение High и Low и сравниваю уже с ними. Так все работает в тестере нормально. Измененный файл прилагаю.
Добрый день, спасибо за уделенное время и внимание. Загрузил приложенный Вами файл. К сожалению тестер по прежнему работает неверно, Индикатор делает первое построение и больше не перестраивает линии сопративления и поддержки, не отображает фракталы. Для проверки вывел в комент High_base_tf[UpperFractal_1_base] и Low_base_tf[LowerFractal_1_base]. Считается верно, с логикой тоесть все в порядке. Видимо сбой притаился где-то в рисовании.
Скан экрана, на котором видно что новые фракталы образовались, а линии не перестроились - прилагаю по ссылке.
***
Там-же видно строчки Low_base_tf[LowerFractal_1_base] и их значения, которые можно сравнить со значениями LowFractal_1_base (для лоу значений, для Хай аналогично). Все считается верно, но новых построений НЕТ.
Скан экрана, на котором видно что новые фракталы образовались, а линии не перестроились - прилагаю по ссылке.
***
К сожалению ссылку удалили.
К сожалению ссылку удалили.
Ссылки на сторонние сайты запрещены.
Ссылки на сторонние сайты запрещены.
Как мне разместить скан экрана тестера? Вытащить его получается только в PDF, а этот формат на форуме я так понял, не принимается.
Как мне разместить скан экрана тестера? Вытащить его получается только в PDF, а этот формат на форуме я так понял, не принимается.
Скриншот - это рисунок. Причём здесь pdf? Сохранит скриншот в формате рисунка png и вставьте рисунок в сообщение.
Ссылки на сторонние сайты запрещены.
Владимир, добрый вечер. Вы опытный програмист судя по Вашим публикациям и работам. Подскажите плиз по сути этой ветки - програмка не работает в тестере, на онлайн графиках работает исправно. Автор не отзывается, видимо занят.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Fractal_TL:
Индикатор для автоматического рисования трендовых линий по фракталам на заданном таймфрейме.
Автор: Almat Kaldybay