Вы смешали в одну кучу обработку баров и работа с нулевым баром.
Попробуйте начать так:
if(curtime1==Time[0])return(0);
а потом в конце
curtime1=Time[0];
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Доброго времени суток. Столкнулся с проблемой многократного срабатывания сигнала на 0 баре, возможные варианты решения данной проблемы пришедшие мне в голову а также найденные на сайте результата не дают. Суть вычислений сводится к поиску 4 разворотных точек движения цены ( текущего и предыдущего вверх и в низ) Разворотные точки обязательно чередуются, чередования отслеживается через сравнение времени образования сигнала. Одним из вариантов образования разворотной точки есть при пробитии ценой лоу разворотной точки в верх, без предворительного образования разворотной точки вниз, поиск бара с наибольшим хаем, который и становится текущей разворотной точкой в низ. Так вот проблемма заключается в затирании времени предыдущее разворотной точки, тоесть время текущего и предыщего экстремумов становятся идентичными, что в последствии приводит к неверным вычислениям последующих опорных точек. Вот собственно сама часть проблемного кода, возможно у кого нить есть какие либо здравые идеи. Заранее благодарен за толковые мысли.
//-----------------------------------------------------------------------------------------
if(curtime1!=Time[i])
find=true;
//_____________________________нетепичный экстрем 1 хай____________________________
if(mastime[0,1]>mastime[0,0]&& //если т экстрем лоу текущ больше т экстрем хай текущ
Low[i]<Low[iBarShift(NULL,0,mastime[0,1],FALSE)]&&//и лоу текущего бара меньше лоу текущ экстрем лоу
find==true) //и поиск разрешен
{
mastime[1,0]=mastime[0,0]; //текущее время экстр хай становится предыдущим ЗАТИРАЕТСЯ ДАННОЕ ЗНАЧЕНИЕ
icurL=iBarShift(NULL,0,mastime[0,1],FALSE); //поиск смещения текущего экстрем лоу по времени
hprom=0;
for(n=icurL;n>=i;n--)
{
if(hprom<High[n])
{
hprom=High[n];
mastime[0,0]=Time[n]; // ВОЗМОЖОЕ МЕСТО ПРОБЛЕМЫ
}
}
ExtnetipH1[iBarShift(NULL,0,mastime[0,0],FALSE)]=High[iBarShift(NULL,0,mastime[0,0],FALSE)]+10*Point;
curh=High[iBarShift(NULL,0,mastime[0,0],FALSE)];
find=false; //запрещаем дальнейший поиск
curtime1=Time[i];
}
//_____________________________нетепичный экстрем 1 лоу____________________________