Может кто ответит?
Вот здесь какие-то пробелы стоят
Variables: Ma8Current(0),Ma8Previous(0),Ma8 Previous2(0); Variables: Ma13Current(0),Ma13Previous(0),Ma13 Previous2(0);
так и надо?
Компилятор не ругается?
If CurTime-LastTradeTime < 30 Then Begin
Print(«Wait up to 30 seconds please»);
WasClosedBuy=False;
If IsCrossDown Then Begin
SetOrder(OP_SELL,1,Bid,3,0,0,RED);
Exit;
End;
End;
Проблема здесь - Вы пытаетесь выставить ордер если не прошло достаточно времени с момента последней транзакции. Остальная часть кода аналогична как я понял. А компилятор должен ругаться - уберите пробелы в переменных, например.
Можно так :
If CurTime-LastTradeTime < 30 Then Begin
Print(«Wait up to 30 seconds please»);
WasClosedBuy=False;
Exit;
End;
If IsCrossDown Then Begin
SetOrder(OP_SELL,1,Bid,3,0,0,RED);
Exit;
End;
Удачи.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
дающий сигналы(на покупку/продажу) при пересечении двух moving average, на
основе анализа предъидущего бара.
Эта программа мне кажется очень удачной, но я не могу добиться её работы. Советник был проверен на ошибки. Он запускается(есть смайлик в верхнем правом углу), но сделки не
совершаются(хотя условия заключения сделок выполняются). Самое интересное,
что советник даже при тестировании не делает сделок (хотя тестирование идёт).
Может не выполняется какое-то условие?
Текст советника:
Name :=MA8-13 cross
Author := Copyright
Link := https://www.metaquotes.net/
Lots := 1.00
Stop Loss := 0
Take Profit := 0
Trailing Stop := 0
Variables: PrevTime(0);
Variables: Ma8Current(0),Ma8Previous(0),Ma8 Previous2(0);
Variables: Ma13Current(0),Ma13Previous(0),Ma13 Previous2(0);
Variables: cnt(0),WasClosedSell(False),WasClosedBuy(False);
Variables: IsCrossDown(False), IsCrossUp(False);
If PrevTime=Time And WasClosedSell=False And WasClosedBuy=False Then
Exit;
PrevTime=Time;
Ma8Current=iMA(8,MODE_SMA,1);
Ma8Previous=iMA(8, MODE_SMA,2);
Ma8Previous2=iMA(8, MODE_SMA,3);
Ma13Current=iMA(13, MODE_SMA,1);
Ma13Previous=iMA(13, MODE_SMA,2);
Ma13 Previous2=iMA(13, MODE_SMA,3);
IsCrossDown=Ma8Current<Ma13current And Ma8Previous>=Ma13Previous And Ma8Previous2>Ma13Previous2;
IsCrossUp = Ma8Current>Ma13current And Ma8Previous<=Ma13Previous And
Ma8Previous2<Ma13Previous2;
If IsCrossDown Or WasClosedBuy=True Then Begin
For cnt=1 To TotalTrades Begin
If OrderValue(cnt,VAL_SYMBOL)=Symbol And
OrderValue(cnt,VAL_TYPE)=OP_BUY Then Begin
CloseOrder(OrderValue(cnt,VAL_TICKET), OrderValue(cnt,VAL_LOTS),
Ask,3,Violet);
WasClosedBuy=True;
Exit;
End;
End;
If CurTime-LastTradeTime < 30 Then Begin
Print(«Wait up to 30 seconds please»);
WasClosedBuy=False;
If IsCrossDown Then Begin
SetOrder(OP_SELL,1,Bid,3,0,0,RED);
Exit;
End;
End;
If IsCrossUp Or WasClosedSell=True Then Begin
For cnt=1 To TotalTrades Begin
If OrderValue(cnt,VAL_SYMBOL)=Symbol And
OrderValue(cnt,VAL_TYPE)=OP_SELL Then Begin
CloseOrder(OrderValue(cnt,VAL_TICKET), OrderValue(cnt,VAL_LOTS),
Bid,3,Violet);
WasClosedSell=True;
Exit;
End;
End;
If CurTime-LastTradeTime < 30 Then Begin
Print(«Wait up to 30 seconds please»);
WasClosedSell=True;
Exit;
End;
WasClosedSell=False;
If IsCrossUp Then SetOrder(OP_BUY,Lots,Ask,3,0,0,Green);
End;
End.