Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Хочешь изучить язык MQL5? 300 статей помогут тебе!
Alexander Zalesskiy
297
Alexander Zalesskiy 2013.05.28 17:31 
Добрый день. Наверное многие сталкивались при написании советников с такой проблемой, как последовательное или продолжительное открытие ордеров при одном условии. Что имею ввиду? Например, мы пишем условие если МА1>МА2, то открываем ордер на покупку. В реале такой ордер откроется, но после его закрытия (тэйк, стоп) откроется очередной ордер, т.к. условие всё ещё выполняется! Кто может подсказать, как этого можно избежать?
Mihail Marchukajtes
3295
Mihail Marchukajtes 2013.05.28 17:53  

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

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

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

Alexander Zalesskiy
297
Alexander Zalesskiy 2013.05.28 18:02  

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

o_O
Модератор
23311
o_O 2013.05.28 18:10  
Romantic_:

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

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

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

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

khorosh
8048
khorosh 2013.05.28 18:40  
Romantic_:

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

 

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

   if(trade && MA1>MA2)

     {

       Buy;

       trade = false; 

     }

   if( MA1<MA2) trade = true;
pako
3341
pako 2013.05.28 20:36  
if(МА1[0] > МА2[0] && MA1[1] < MA2[1])  BUY;
или так можно, но при маленьком периоде МА, возможен дребезг
elllfix
303
elllfix 2013.05.31 09:42  
int m=0;

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

т.е. используем маркеры. :)
Роман
7939
Роман 2013.05.31 11:49  
Romantic_:

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

 


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

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

Вот пример. 

pako
3341
pako 2013.05.31 18:03  
Roman.:

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

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

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



/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий