Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Per acquisire esperienza in questo settore, scriverò 25 EAs gratuitamente per le vostre idee e strategie interessanti
19 EAs rimasti
Ho un problema simile, ho già un EA e funziona bene, il problema è con il blocco di trailing stop. In qualche modo non funziona, non è impostato quando faccio trading. Ecco l'EA stesso. Forse avete un'idea di cosa c'è di sbagliato nel trailing stop? Non ho idea di cosa fare senza.
Ishimoku - MACD.mq4 |
//| TO |
//| http://www.forex-tradexperts-to.narod.ru |
//+------------------------------------------------------------------+
#proprietà copyright "TO"
#proprietà link "http://www.forex-tradexperts-to.narod.ru"
#include <WinUser32.mqh>
extern string Parameters=" Ichimoku";
extern intern tenkan_sen=3;
extern intern kijun_sen=48;
extern intern senkou_span_b=52;
extern string Parameters="Moving Average";
extern int maPeriod=4;
extern int ma_method=1;
extern int applied_price=3;
extern string Parameters=" MACD";
extern int FastEMA=22;
extern int SlowEMA=52;
extern int SignalEMA=9;
extern string Parameters=" EA";
extern int TP=200;
extern int SL=500;
extern int slippage=3;
extern double lot=0.1;
extern bool Add1/*(TENKANSEN resp. KIJUNSEN)*/ =true;
extern bool Add2/*(TENKANSEN revised Ma)*/=true;
extern bool trailing=true;
extern double trailingStop=200;
extern int zashita=1;
bool buy1=false,buy2=false,buy3=false,buy4=false;
bool sell1=false,sell2=false,sell3=false,sell4=false,sell22=false; buy22=false;
int ticket=0;
int i;
datetime t1=0,t2=1,t3=1,t4=1,t5=1,t7=1,t8=1;
int init()
{
ritorno(0);
}
int deinit()
{
ritorno(0);
}
int start()
{
t1=Tempo[0];
double MACDRED1=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,PRICE_CLOSE,MODE_MAIN,1);
double MACDRED2=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,PRICE_CLOSE,MODE_MAIN,2);
double MACDBLUE1=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,PRICE_CLOSE,MODE_SIGNAL,1);
double MACDBLUE2=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,PRICE_CLOSE,MODE_SIGNAL,2);
double IshRed1=iIchimoku(NULL,0,tenkan_sen,kijun_sen,senkou_span_b,MODE_TENKANSEN,1);
double IshRed2=iIchimoku(NULL,0,tenkan_sen,kijun_sen,senkou_span_b,MODE_TENKANSEN,2);
double IshBlue1=iIchimoku(NULL,0,tenkan_sen,kijun_sen,senkou_span_b,MODE_KIJUNSEN,1);
double IshBlue2=iIchimoku(NULL,0,tenkan_sen,kijun_sen,senkou_span_b,MODE_KIJUNSEN,2);
double MA1=iMA(NULL,0,maPeriod,0,ma_method,applied_price,1);
double MA2=iMA(NULL,0,MaPeriod,0,ma_method,applied_price,2);
if(MACDRED1>MACDBLUE1 && MACDRED2<MACDBLUE2 && t3!=t1)
{ // segnale MACD BUY
buy1=true;sell1=false;t3=Time[0];
}
if(MACDRED1<MACDBLUE1 && MACDRED2>MACDBLUE2 && t3!=t1)
{ // segnale MACD SELL
sell1=true;buy1=false;t3=Time[0];
}
if(IshRed1>MA1 && IshRed2<=MA2 && t4!=t1)
{ // Il segnale Ishimoku attraversa la MA su BUY
buy2=true;sell2=false;t4=Time[0];
}
if(IshRed1<MA1 && IshRed2>=MA2 && t4!=t1)
{ // Il segnale Ishimoku incrocia la MA su SELL
sell2=true;buy2=false;t4=Time[0];
}
if(IshRed1>IshBlue1 && IshRed2<IshBlue2 && t5!=t1)
{ // Il segnale Ishimoku attraversa Fast e Slow per COMPRARE
buy3=true;sell3=false;t5=Time[0];
}
if(IshRed1<IshBlue1 && IshRed2>IshBlue2 && t5!=t1)
{ // Segnale su Ishimoku Fast incrocia Slow su SELL
sell3=true;buy3=false;t5=Time[0];
}
if(Add1==true && buy3==true && buy4==true && t1!=t8)
{ //aprire le aggiunte
PlaySound("Alert.wav");
int=MessageBox("Aggiungere un ordine all'acquisto?",MB_YESNO|MB_ICONQUESTION);
if(ret==6){ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,Bid-SL*Point,Ask+TP*Point,NULL,0,0,Blue);if(ticket>0)PlaySound("ok.wav");if(ticket<0)Alert("Ordine non impostato!!! errore - "+GetLastError()+"impostato manualmente");}
t8=Time[0];buy3=false;buy4=false;
}
if(Add1==true && sell3==true && sell4==true && t1!=t7)
{ //aprire le aggiunte
PlaySound("Alert.wav");
int ret2=MessageBox("Aggiungere un ordine di vendita?",MB_YESNO|MB_ICONQUESTION);
if(ret2==6){ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,slippage,Ask-SL*Point,Bid+TP*Point,NULL,0,0,Red);if(ticket>0)PlaySound("ok.wav");if(ticket<0)Alert("Ordine non impostato!!! errore - "+GetLastError()+"impostato manualmente");}
t7=Time[0];sell3=false;sell4=false;
}
for(i=OrdiniTotali()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY)
{
buy1=falso; buy2=falso; buy22=vero;
pausa;
}
}
if(Add2==true && buy22 && IshRed1>MA1 && IshRed2<=MA2 && t4!=t1)
{ // Aggiungendo da Ma e Tenkan_sen per comprare
PlaySound("Alert.wav");
int ret3=MessageBox("Aggiungere un ordine all'acquisto?",MB_YESNO|MB_ICONQUESTION);
if(ret3==6){ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,Bid-SL*Point,Ask+TP*Point,NULL,0,0,Blue);if(ticket>0)PlaySound("ok.wav");if(ticket<0)Alert("Ordine non impostato!!! errore - "+GetLastError()+"impostato manualmente");}
t4=Time[0];buy22=false;
}
if(Add2==true && sell22 && IshRed1<MA1 && IshRed2>=MA2 && t4!=t1)
{ // Aggiungendo da Ma e Tenkan_Sen a Sell
PlaySound("Alert.wav");
int ret4=MessageBox("Aggiungere un ordine per vendere?",MB_YESNO|MB_ICONQUESTION);
if(ret4==6){ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,slippage,Ask-SL*Point,Bid+TP*Point,NULL,0,0,Red);if(ticket>0)PlaySound("ok.wav");if(ticket<0)Alert("Ordine non impostato!!! errore - "+GetLastError()+"impostato manualmente");}
t4=Time[0];sell22=false;
}
if(buy1==true && buy2==true && t1!=t2)
{ //aprire gli ordini iniziali
for(i=OrdiniTotali()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_SELL)OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Gold);
}
PlaySound("Alert.wav");
ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,Bid-SL*Point,Ask+TP*Point,NULL,0,0,Blue);
if(ticket>0)PlaySound("ok.wav");
if(ticket<0)Alert("Ordine non impostato!!! errore - "+GetLastError()+"impostato manualmente");
t2=Time[0];buy1=falso;buy2=falso;buy4=vero;
}
for(i=OrdiniTotali()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_SELL)
{
sell1=falso; sell2=falso; sell22=vero;
pausa;
}
}
if(sell1==true && sell2==true && t1!=t2)
{ //aprire gli ordini iniziali
for(i=OrdiniTotali()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Gold);
}
PlaySound("Alert.wav");
ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,slippage,Ask+SL*Point,Bid-TP*Point,NULL,0,0,Red);
if(ticket>0)PlaySound("ok.wav");
if(ticket<0)Alert("Ordine non impostato!!! errore - "+GetLastError()+"impostato manualmente");
t2=Time[0];sell1=false;sell2=false;sell4=true;buy22=false;
}
//Ferma di trascinamento
doppio SL, TP, openprice, profitto;
int ticketOrder, zamok, tipo;
stringa comm;
for(i=OrdiniTotali();i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(trailing==true && OrderProfit()/MarketInfo(Symbol(),MODE_TICKVALUE)>0 && MathFloor(OrderProfit()/MarketInfo(Symbol(),MODE_TICKVALUE)/trailingStop)!=0 && (OrderProfit()/MarketInfo(Symbol(),MODE_TICKVALUE))>=trailingStop*MathFloor(OrderProfit()/MarketInfo(Symbol(),MODE_TICKVALUE)/trailingStop))
{
if(OrderType()==0){SL=Bid-trailingStop*Point;if(SL==OrderOpenPrice())SL+=zashita*Point;}
if(OrderType()==1){SL=Ask+trailingStop*Point;if(SL==OrderOpenPrice())SL-=zashita*Point;}
TP=OrderTakeProfit();
if(OrderType()==0)if(SL>=OrderStopLoss()+trailingStop*Point)OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0);
if(OrderType()==1)if(SL<=OrderStopLoss()-trailingStop*Point)OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0);
}
}
ritorno(0);
}
Non risponderò a tutti, ma è sicuramente un bug:
L'ultimo ordine è OrdersTotal()-1.
puoi scrivere un multi EA gratuitamente?
Il manichino è disponibile.
Salve, vorrei chiedervi aiuto per prescrivere T/P e Magic_Number nel mio EA. Saluti Timofey.
Buon pomeriggio.
come scriveresti un pezzo come questo?
doppio a; //
double b; // sia a che b possono prendere assolutamente qualsiasi valore: numeri, letture di indicatori, numero di tick per 500 candele ecc.
doppio X; // valore di deviazione +-X
se
(a+x e a-x) rientra nel campo di valori (b+x e b-x)
{action}
else
{return 0}
Buon pomeriggio.
come scriveresti un pezzo come questo?
doppio a; //
double b; // sia a che b possono prendere assolutamente qualsiasi valore: numeri, letture di indicatori, numero di tick per 500 candele ecc.
doppio X; // valore di deviazione +-X
se
(a+x e a-x) rientra nel campo di valori (b+x e b-x)
{action}
else
{return 0}
Se x è lo stesso valore in tutti i casi, state essenzialmente confrontando due numeri a e b. Non c'è dubbio che qui si entra in un intervallo.
Per esempio, prendiamo a = 10, b = 11. Quindi vuoi che l'intervallo da 12 a 8 cada nell'intervallo da 13 a 9?
Se x è lo stesso in tutti i casi, state essenzialmente confrontando due numeri a e b. Non si parla di alcun intervallo.
Per esempio, prendiamo a = 10, b = 11. Quindi vuoi che l'intervallo da 12 a 8 cada nell'intervallo da 13 a 9?
Proprio così.