Поиск пиков реализуется с помощью цикла. Я сделал это отдельной функцией. Она принимает в качестве параметра индекс бара, с которого начинается поиск пика. А возвращает смещение найденного пика.
int get_high_peak(int start)
{
double ao0=0,ao1=0,ao2=0;
int retn_shift=0;
for(int i=start;i<Bars;i++)
{
ao0=iAO(NULL,0,i);
ao1=iAO(NULL,0,i+1);
ao2=iAO(NULL,0,i+2);
if(ao0>0&&ao2>0&&ao0<ao1&&ao1>ao2)
{
retn_shift=0;
break;
}
}
return(retn_shift)
}
К примеру используется, так:
int high_peak1=get_high_peak(0);
int high_peak2=get_high_peak(high_peak1);
if(iAO(NULL,0,high_peak1)<iAO(NULL,0,high_peak2)
{
...............
}
Все это я написал для верхних пиков. Для нижних пиков и проверку на пересечение нулевой я думаю догадаешься сделать сам.
Всем привет. У меня возникла большая проблема в простой ситуации. Задача такая: имеются два разнонаправленных отложенных ордера (один байстоп другой селл стоп). Далее один из них срабатывает. Нужно удалить оставшейся отложенный ордер.
Я делал так и не только так но почему то ничего не получается:
for ( i=1; i<=OrdersTotal(); i++) if(OrderSelect(i-1,SELECT_BY_POS)==true) if(OrderType()==OP_SELL || OrderType()==OP_BUY) { for(i=OrdersTotal(); i+1>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) OrderDelete(OrderTicket()); } }
Коряво, но должно работать, а нефига. Прошу помочь.
Всем привет. У меня возникла большая проблема в простой ситуации. Задача такая: имеются два разнонаправленных отложенных ордера (один байстоп другой селл стоп). Далее один из них срабатывает. Нужно удалить оставшейся отложенный ордер.
Я делал так и не только так но почему то ничего не получается:
Коряво, но должно работать, а нефига. Прошу помочь.
У KimIV есть для этого библиотечная функция: DeleteOppositeOrders().
Всем привет. У меня возникла большая проблема в простой ситуации. Задача такая: имеются два разнонаправленных отложенных ордера (один байстоп другой селл стоп). Далее один из них срабатывает. Нужно удалить оставшейся отложенный ордер.
Я делал так и не только так но почему то ничего не получается:
Коряво, но должно работать, а нефига. Прошу помочь.
int k=0; for (int i=0;i<OrdersTotal();i++)//ищем открытые ордера бай и селл { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) { if (OrderType()<=1) k++; } } if (k>0)// если есть открытый ордер бай или селл { for (i=0;i<OrdersTotal();i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderType()>=2) { OrderDelete(OrderTicket()); } } } }что-то типа этого
if(OrdersTotal()>0) { int buy.ticket,sell.ticket; for(int i=0;i<=OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue; if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic_№) continue; if(OrderType()==OP_BUYSTOP) buy.ticket=OrderTicket(); if(OrderType()==OP_SELLSTOP) sell.ticket=OrderTicket(); } if(buy.ticket==0 && sell.ticket!=0) OrderDelete(sell.ticket); if(buy.ticket!=0 && sell.ticket==0) OrderDelete(buy.ticket); }
Всем привет. У меня возникла проблема в ходе построения ценового канала:
Попробую максимально чётко объяснить суть проблемы.
Как вы видете - построен нисходящий канал: верхняя его линия строится по максимальной цене High (диапазон поиска лежит между первой и второй точкой ), но некоторые бары выходят за пределы верхней линии канал (т.е. точка верхней линии канала найдена неправильно). Вопрос: как правильно найти верхнюю точку без перерисовки канала. (если с перерисовкой то мы просто идём в цикле по нисходящей наклонной максимальных цен и проверяя выходят ли бары за пределы канала).
Всем привет. У меня возникла проблема в ходе построения ценового канала:
Попробую максимально чётко объяснить суть проблемы.
Как вы видете - построен нисходящий канал: верхняя его линия строится по максимальной цене High (диапазон поиска лежит между первой и второй точкой ), но некоторые бары выходят за пределы верхней линии канал (т.е. точка верхней линии канала найдена неправильно). Вопрос: как правильно найти верхнюю точку без перерисовки канала. (если с перерисовкой то мы просто идём в цикле по нисходящей наклонной максимальных цен и проверяя выходят ли бары за пределы канала).
решал аналогичную проблему только с вилами эндрюса,
приходилось делать цикл, который находил разность(по разности максимумы/минимумы) и переставлял вилы заново... так сходился к максимумам.
Всем привет. У меня возникла проблема в ходе построения ценового канала:
Попробую максимально чётко объяснить суть проблемы.
Как вы видете - построен нисходящий канал: верхняя его линия строится по максимальной цене High (диапазон поиска лежит между первой и второй точкой ), но некоторые бары выходят за пределы верхней линии канал (т.е. точка верхней линии канала найдена неправильно). Вопрос: как правильно найти верхнюю точку без перерисовки канала. (если с перерисовкой то мы просто идём в цикле по нисходящей наклонной максимальных цен и проверяя выходят ли бары за пределы канала).
канал нарисован не правильно, надо две точки искать среди вершин, если тренд идет вниз и наоборот
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Сигнал на покупку (продажу) "два пика" индикатора Awesome Oscillator (AO) образуется, когда гистограмма находится ниже (выше) нулевой линии, и последнее донышко индикатора Awesome Oscillator выше (последний пик индикатора ниже) предыдущего. При этом между этими донышками (пиками) гистограмма не поднималась выше (не опускалась ниже) ноля (рис. 1).
В этом случае также выставляем отложенный ордер Buy Stop (Sell Stop) на 1 пипс выше максимума (ниже минимума) сигнального бара. В случае сигнала на покупку столбец "С" (сигнальный) всегда зеленый, а в случае сигнала на продажу – красный.
Помогите кто-нибудь!!!
(Заранее спасибо)