По мере изучения MQL и перевода своих стратегий на код сталкиваюсь с некоторыми типовыми задачами, решение которых планирую выкладывать в данной группе.
Итак, первое, с чем я столкнулся — это необходимость открытия только одной сделки в текущем баре. Т.е. получили сигнал в текущем баре и после открытия сделки больше в этом баре новых сделок не открываем.
Есть разные способы решения задачи. От использования предопределенной переменной Bars в данном случае предостерегают, т.к. Bars может изменяться, например, при докачке истории.
Выбрал следующий способ.
1.Добавляем функцию IfOrderYetOpen
//+------------------------------------------------------------------+
//| Проверяет был ли открыт уже ордер на этой же свече |
//+------------------------------------------------------------------+
bool IfOrderYetOpen(int magic = 0, int typ = -1,string symb = "",int per = 0){
if(symb == ""){symb = Symbol();}
if(per==0){per=Period();}
for(int i = OrdersTotal(); i>=0; i--){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()!=symb){continue;}
if(OrderType()==typ||typ==-1){
if(OrderMagicNumber()==magic||magic==0){
if(OrderOpenTime()>iTime(symb,per,0)){return(true);}
}
}
}
}
return(false);
}
2. Затем в начале start делаем проверку
if(IfOrderYetOpen()) return;
Таким образом добиваемся поставленной цели — если ордер на текущем баре открыт, то терминируем start.
Комментарии (20)
15 kick Сообщений: 853
9 amyrgan145 Сообщений: 428 - Амыр
1 uskov34 Сообщений: 7
Входные параметры моего эксперта были такими:
вот такое выдает в тестере:
9 amyrgan145 Сообщений: 428 - Амыр
47 Kaur Автор Сообщений: 1327 - Руслан Каюмов
9 amyrgan145 Сообщений: 428 - Амыр
Так переменные:
абсолютно равнозначные
Зато вспоминать какая переменная к чему относится гораздо легче
9 amyrgan145 Сообщений: 428 - Амыр
1 vahe777 Сообщений: 2 - Ваэ
11 pilot Сообщений: 410
1 vahe777 Сообщений: 2 - Ваэ
1 Forex-Viewer Сообщений: 1
17 vis Сообщений: 200 - ♫♪♫♪
20 alex30774 Сообщений: 748
17 vis Сообщений: 200 - ♫♪♫♪
20 alex30774 Сообщений: 748
20 alex30774 Сообщений: 748
17 vis Сообщений: 200 - ♫♪♫♪
20 alex30774 Сообщений: 748
Было. Теперь нет. Редактирован: 3 октября 2019, 19:49
24 ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.
1 Sel7 Сообщений: 3
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий