Одно условие = один ордер. Как это сделать?

 
Добрый день. Наверное многие сталкивались при написании советников с такой проблемой, как последовательное или продолжительное открытие ордеров при одном условии. Что имею ввиду? Например, мы пишем условие если МА1>МА2, то открываем ордер на покупку. В реале такой ордер откроется, но после его закрытия (тэйк, стоп) откроется очередной ордер, т.к. условие всё ещё выполняется! Кто может подсказать, как этого можно избежать?
 

Очень просто.....

Открывать позицию если нет открытых ордиров.

Если Тотал трейд равен 0... Только тогда открываем.... 

 

Хммм.., спасибо! Это понятно) Но я имел ввиду другое) Пока есть условие открывается ордер, спустя 300 п. он закрывается по тейку, но условие пересечения 2-х МА ещё продолжается и открывается 2-й ордер! Второй лишний!

 
Romantic_:

Хммм.., спасибо! Это понятно) Но я имел ввиду другое) Пока есть условие открывается ордер, спустя 300 п. он закрывается по тейку, но условие пересечения 2-х МА ещё продолжается и открывается 2-й ордер! Второй лишний!

запомните в глобальную переменную, что было пересечение в эту сторону,

и удалите глобальную переменную, когда условие удалится или поменяется на противоположное.

перед открытием ордера проверьте существование переменной. если она есть - значит вход уже был, ждем пока глобальная переменная не удалится

 
Romantic_:

Хммм.., спасибо! Это понятно) Но я имел ввиду другое) Пока есть условие открывается ордер, спустя 300 п. он закрывается по тейку, но условие пересечения 2-х МА ещё продолжается и открывается 2-й ордер! Второй лишний!

 

Можно проверять тип последнего закрытого ордера, чтобы не открывать подряд второй ордер того же направления.
 
Romantic_:
Добрый день. Наверное многие сталкивались при написании советников с такой проблемой, как последовательное или продолжительное открытие ордеров при одном условии. Что имею ввиду? Например, мы пишем условие если МА1>МА2, то открываем ордер на покупку. В реале такой ордер откроется, но после его закрытия (тэйк, стоп) откроется очередной ордер, т.к. условие всё ещё выполняется! Кто может подсказать, как этого можно избежать?
bool trade;

   if(trade && MA1>MA2)

     {

       Buy;

       trade = false; 

     }

   if( MA1<MA2) trade = true;
 
if(МА1[0] > МА2[0] && MA1[1] < MA2[1])  BUY;
или так можно, но при маленьком периоде МА, возможен дребезг
 
int m=0;

if (ma1>ma2 && m==0) {m=1; покупаем продаем}

т.е. используем маркеры. :)
 
Romantic_:

Хммм.., спасибо! Это понятно) Но я имел ввиду другое) Пока есть условие открывается ордер, спустя 300 п. он закрывается по тейку, но условие пересечения 2-х МА ещё продолжается и открывается 2-й ордер! Второй лишний!

 


Ищите поиском в гугле на этом сайте типа: "Как правильно задать условие пересечения двух МА". 

Это бред (не правильное решение пересечения МА): "... но условие пересечения 2-х МА ещё продолжается..."

Вот пример. 

 
Roman.:

Это бред (не правильное решение пересечения МА): 

в самом деле не правильно? 

if (fast0>slow0 && fast1<slow1) Print("Пересечение ВВЕРХ");    //  Вот Ваш же пример. 
if(МА1[0] > МА2[0] && MA1[1] < MA2[1])  BUY;



Причина обращения: