Замени
if((MA1>MA3 && (MA1-MA2)>=0.0001 && MA1p<MA2 && revers==0) || // условие БАЙ
на
if(OrdersTotal()==0&&(MA1>MA3 && (MA1-MA2)>=0.0001 && MA1p<MA2 && revers==0) || // условие БАЙ
Флаги нужны (bool FLAG=true или false):
- открытие SELL
- открытие BUY
- закрытие SELL
- закрытие BUY
В общем - 4 штуки. При выполнении операции - переключать. Тогда всё заблокируется как Вам нужно.
Замени
if((MA1>MA3 && (MA1-MA2)>=0.0001 && MA1p<MA2 && revers==0) || // условие БАЙ
на
if(OrdersTotal()==0&&(MA1>MA3 && (MA1-MA2)>=0.0001 && MA1p<MA2 && revers==0) || // условие БАЙ
Привет. Поменяла строки . БАЙ ордер теперь один в рынке так как надо, а СЕЛЛ по прежнему много ордеров. посмотрите пожалуйста что надо исправить?
Привет. Поменяла строки . БАЙ ордер теперь один в рынке так как надо, а СЕЛЛ по прежнему много ордеров. посмотрите пожалуйста что надо исправить?
аналогично для селла :)
добавте в условие для села OrdersTotal()==0
Неправильно поменяли, надо было во втором выражении добавить условие:
if(OrdersTotal()==0&&(MA1>MA3 && (MA1-MA2)>=0.0001 && MA1p<MA2 && revers==0) || // условие БАЙ (MA1<MA3 && (MA2-MA1)>=0.0001 && MA1p>MA2 && revers==1) ) // условие СЕЛЛ { Print("BUY MA1 = ",MA1 ," MA2 = ", MA2 ," MA1p = ",MA1p); if(OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss_Buy*Point,Ask+TakeProfit_Buy *Point,"Покупаем",16384,0,Green)<0) {Print("Oшибка: ",ErrorDescription(GetLastError()),", Цена= ",Ask);} } if(OrdersTotal()==0&&(MA1<MA3 && (MA2-MA1)>=0.0001 && MA1p>MA2 && revers==0) || // условие СЕЛЛ (MA1>MA3 && (MA1-MA2)>=0.0001 && MA1p<MA2 && revers==1) ) // условие БАЙ
Неправильно поменяли, надо было во втором выражении добавить условие:
Спасибо.Всё работает отлично.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Может кто нибудь потратит своё драгоценное время и поможет поправить код. СПАСИБО.