Здравствуйте господа. не могу понять что не так ордер открывается только в одном направлении и один раз.
Файлы:
k.mq4
3 kb
- не открывается ордер
- нужна помощь
- при знаке в свойстве эксперта long&short ордер открывается только в short
Так будет работать:
//+------------------------------------------------------------------+ //| k.mq4 | //| Димарик | //| http//dimarik0000@yandex.ru | //+------------------------------------------------------------------+ #property copyright "Димарик" #property link "http//dimarik0000@yandex.ru" extern double lot=0.1; extern double SL=300; extern double TP=900; extern double TS=200; extern int total=1; double MA_Slow_1, MA_Slow_2, MA_Slow_3, MA_Fast_1, MA_Fast_2, MA_Fast_3; int ticket; int type=0; int start() { MA_Slow_1=NormalizeDouble(iMA(NULL,0,200,0,MODE_EMA,PRICE_CLOSE,0),Digits); MA_Slow_2=NormalizeDouble(iMA(NULL,0,200,0,MODE_EMA,PRICE_CLOSE,1),Digits); MA_Slow_3=NormalizeDouble(iMA(NULL,0,200,0,MODE_EMA,PRICE_CLOSE,2),Digits); MA_Fast_1=NormalizeDouble(iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,0),Digits); MA_Fast_2=NormalizeDouble(iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,1),Digits); MA_Fast_3=NormalizeDouble(iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,2),Digits); // учёт ордеров for(int i = 0; i <= OrdersTotal(); i++)// цыкл перебора ордеров { if (OrderSelect(OrderTicket(),SELECT_BY_TICKET, MODE_TRADES)) { if(total<=0) return(-1); } else { if(total>=0) // есть один открытый ордер break; } } total=OrdersTotal()-1; if(total<0) { // проверка возможности открытия Buy if ( (MA_Slow_3 > MA_Fast_3) && (MA_Slow_1 < MA_Fast_1) ) { OrderSend(Symbol(),OP_BUY,lot,Ask ,3,NormalizeDouble(Bid-SL*Point,Digits), NormalizeDouble(Ask+TP*Point,Digits), "Покупаем ",0,0,Blue); PlaySound("alert.wav"); { Print ("При открытии произошла ошибка ", GetLastError()); return; } } if ( (MA_Slow_3 < MA_Fast_3) && (MA_Slow_1 > MA_Fast_1) ) { OrderSend(Symbol(),OP_SELL,lot,Bid ,3,NormalizeDouble(Ask+SL*Point,Digits), NormalizeDouble(Bid-TP*Point,Digits), "Покупаем ",0,0,Blue); PlaySound("alert.wav"); { Print ("При открытии произошла ошибка ", GetLastError()); return; } } } }
Удалены жесткие условия в центрах строк:
if ( (MA_Slow_3 > MA_Fast_3) && (MA_Slow_1 < MA_Fast_1) )
Такие условия работать не будут:
&& (MA_Slow_2 == MA_Fast_2) &&
DmitriyN:
Так будет работать:
Удалены жесткие условия в центрах строк:
Такие условия работать не будут:
&& (MA_Slow_2 == MA_Fast_2) &&
Спасибо!
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь