Все не так просто, посмотрите код индикатора 'Fractals', функционально он сопоставим с тем, что Вы пытаетесь сделать.
А один потому, что надо в цикле проходить все бары от 0 до Bars, а Вы ищите фрактал исключительно на 3м баре.
Потомучто у вас жесткое условие по определению только фрактала на первых шести свечах:
if(High[1]<High[3]&&
High[2]<High[3]&&
High[3]>High[4]&&
High[3]>High[5])
Тоесть ваш индикатор не ищет фракталы дальше шестой свечи.
Потомучто у вас жесткое условие по определению только фрактала на первых шести свечах:
if(High[1]<High[3]&&
High[2]<High[3]&&
High[3]>High[4]&&
High[3]>High[5])
Тоесть ваш индикатор не ищет фракталы дальше шестой свечи.
При появлении новых данных индексы баров сдвигаются и разве start не должен снова проверять условия уже на новых данных?
При появлении новых данных индексы баров сдвигаются и разве start не должен снова проверять условия уже на новых данных?
Кажется я понял, что Вы хотите сделать, типа искать фракталы онлайн, а не на истории. Так работает, думается Вы сами поймете в чем была ошибка.
int start() { double C; datetime B; string A="Fractal"; //---- if (High[1]<High[3]&& High[2]<High[3]&& High[3]>High[4]&& High[3]>High[5]) { B=Time [3]; C=High [3]; ObjectCreate(A+B, OBJ_ARROW, 0, B,C); ObjectSet(A+B, OBJPROP_ARROWCODE, C); } //---- if (Low[1]>Low[3]&& Low[2]>Low[3]&& Low[3]<Low[4]&& Low[3]<Low[5]) { B=Time [3]; C=Low [3]; ObjectCreate(A+B, OBJ_ARROW, 0, B, C); ObjectSet(A+B, OBJPROP_ARROWCODE, C); } //---- //---- return; }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Написала советник для определения фракталов.
Он определил фрактал, но пометил только один.
Не могу понять, почему он не отметил все фракталы на графике.
Подскажите пожалуста, кто знает.
int start()
{
double C;
datetime B;
int A;
//----
if
(High[1]<High[3]&&
High[2]<High[3]&&
High[3]>High[4]&&
High[3]>High[5])
{
A++;
B=Time [c];
C=High [c];
ObjectCreate("A", OBJ_ARROW, 0, B,C);
ObjectSet("A", OBJPROP_ARROWCODE, C);
}
//----
if
(Low[1]>Low[3]&&
Low[2]>Low[3]&&
Low[3]<Low[4]&&
Low[3]<Low[5])
{
A++;
B=Time [3];
C=Low [3];
ObjectCreate("A", OBJ_ARROW, 0, B, C);
ObjectSet("A", OBJPROP_ARROWCODE, C);
}
//----
//----
return;
}