- 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+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования