- MT4. Открытие сделки на четвертом баре.
- MQL4. Открытие противоположной сделки после стопа
- Открытие сделки по сигналу
Нужны подробности: что за советник (прикрепите весь файл mq4 или приведите участок кода), что подразумевается под "открывает сделки с четвертого"?
Пока представляется такая картина: при запуске советник ждет 4 бара, а только потом, если есть сигнал, открывает сделку. До этого наличие сигнала не приводит к открытию сделки.
Здравствуйте. Подскажите, пожалуйста, как в советнике прописать открытие и закрытие сделки с первого бара. У меня советник открывает сделки с четвертого.
long T0; void OnInit(){T0=(long)Time[0];} void OnTick(){ if (T0<Time[0]){T0=(long)Time[0];// обращение к торговым функциям } }
Здравствуйте. Открывать и закрывать сделки можно только по ценам текущего-нулевого бара.
Прикрепляю код.
int start() { int cnt,tiket,total; total=OrdersTotal(); if(total<1) { if(GetSignal()==1 && Time[0]!=LastTime) { tiket=OrderSend(Symbol(),OP_BUY,Lot,Ask,30,0,0,"",Magic,0,clrGreen); if(tiket>0)LastTime=Time[0]; return(0); } if(GetSignal()==-1 && Time[0]!=LastTime) { tiket=OrderSend(Symbol(),OP_SELL,Lot,Bid,30,0,0,"",Magic,0,clrRed); if(tiket>0)LastTime=Time[0]; return(0); } return(0); } for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); if(OrderType()<=OP_SELL && OrderSymbol()==Symbol()) { if(OrderType()==OP_BUY) { if(GetSignal()==-1) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position return(0); } } else { if(GetSignal()==1) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position return(0); } } } } return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double GetSignal() { double Buf0=iCustom(Symbol(),0,"MARSI",ARSI_Period,AMA_Period,0,0); double Buf1=iCustom(Symbol(),0,"MARSI",ARSI_Period,AMA_Period,0,1); double Buf2=iCustom(Symbol(),0,"MARSI",ARSI_Period,AMA_Period,0,2); double Buf3=iCustom(Symbol(),0,"MARSI",ARSI_Period,AMA_Period,0,3); double Val0=iCustom(Symbol(),0,"MACD AlertArrow",Fast_MA_Period,Slow_MA_Period,Signal_MA_Period,0,0); int vSig=0; if(Buf2<50 && Buf0<50 && Val0>0.0)vSig=1; else if(Buf1>50 && Buf3>50 && Val0<0.0)vSig=-1; return(vSig); }
Еще потребуются коды индикаторов MARSI и MACD AlertArrow.
Хотя уже есть некоторая догадка: сигналы от индикатора MARSI для открытия сделки берутся по данным последних четырех баров. В итоге сигнал открытия запаздывает. Но это, к сожалению, суть всех индикаторов: они все запаздывают, т. к. рассчитываются по уже имеющимся данным. Они не могут использовать данные, которые только будут в будущем. ))
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования