![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Alcuni indicatori - modificati
Ciao,
a_ZZ e a_ZZInd - "High_Low v2 (ZigZag)" e altri (che ora non ricordo, &))
aDin - "ang_PR (Din)-v2"
Cosa ne pensi?
Grazie.
CroceMACD
Ciao a tutti,
Ho un'idea per un EA che utilizza il MACD 13,32,48 e PSAR Step 0.005 Max.0.05 o 0.006 e 0.06 H1 TF
Punto di entrata quando MACD Cross (Close Bar) e uscita PSAR o trailing stop opzionale.
Saluti
MFX
Migliore strategia giornaliera...
Ciao ragazzi,
sono felice di essere di nuovo qui tra voi. Sono stato via per un paio di giorni. Comunque vorrei chiedervi quali sono le migliori strategie giornaliere e a 4 ore che avete trovato, usato magari...
Grazie
RINGRAZIAMENTI
codersguru: potresti cambiare EMA per tripla media mobile esponenziale?
in EMACROSS EA.
è meglio di EMA.
Grazie.![](https://c.mql5.com/forextsd/smiles/regular_smile.png)
Miglior sistema per le coppie Cross
Ciao
Ho trovato un ottimo sistema che è molto buono per scambiare coppie cross.
È molto semplice e basato su SMA e EMA, ma molto efficace. Se qualcuno può sviluppare un EA per questo possiamo testarlo.
Verranno utilizzati 2 tipi di medie mobili della barra precedente
6 ema,12 sma
Il trend è al ribasso se 6ema<12ma
e la tendenza è verso l'alto se 6ema>12ma
segnale di acquisto o vendita
Vendere: se è tendenza al ribasso e vendere (offerta) H
Oppure
Comprare: se il trend è al rialzo e comprare(ask) L[Lowest(6,0)]
uscire:
se il trend è giù, short, L[Lowest(6,0)]
se tendenza al rialzo, long, H
invertire:
se il trend è al rialzo, short, L[Lowest(6,0)]
se il trend è al ribasso, long, H
------------------------------------------
Se qualche programmatore può fare un indicatore o un EA per questo sistema, tutti noi possiamo vedere il suo potenziale.
Mi dispiace, ma non ho capito le regole. Potete per favore elaborare o possibilmente usare qualche valore numerico per spiegare.
Grazie,
Maji
Breakout EA
Ciao esperti,
Vorrei attirare la vostra attenzione sul seguente thread, in particolare la discussione di fxengines. Ecco il link: http://www.strategybuilderfx.com/forums/showthread.php?t=11530&page=4&pp
La cosa più importante è che ha menzionato due sistemi nelle sue discussioni che sto copiando e incollando qui -
Esempio 1: Il segnale di entrata è un breakout a 60 minuti di 15 sopra il massimo dell'ultimo periodo, uscita limite di 30. La probabilità nella relazione per il trigger GBP 60 MIN 15 è dell'85,7%. Questo test ha reso l'84%, e ha fatto soldi.
"Questo motore ha avuto una performance netta di 1298 pip con un tasso di successo dell'84%. Se tutti i trade fossero usciti al massimo, il motore avrebbe avuto un valore di 2521 pip. Tuttavia, una media di 1,97 pip per trade è stata "restituita" dal massimo al punto in cui si è usciti. Il massimo drawdown per questo motore è stato di 454 pip, con 3 trade perdenti durante la peggiore striscia perdente e 46 vincitori durante la migliore striscia vincente".
ESEMPIO 2: Il segnale di entrata è un breakout a 60 minuti di 25 sul massimo dell'ultimo periodo, uscita limite di 30. La probabilità nella relazione per il trigger GBP 60 MIN 25 è del 95,2%. Questo test ha reso l'84%, e ha fatto soldi.
"Questo motore ha avuto una performance netta di 941 pip con un tasso di successo dell'84%. Se tutti i trade fossero usciti al massimo, il motore avrebbe avuto un valore di 1832 pip. Tuttavia, una media di 2,02 pips per trade è stata "restituita" dal massimo al punto in cui si è usciti. Il massimo drawdown per questo motore è stato di 452 pip, con 3 trade perdenti durante la peggiore striscia perdente e 25 vincitori durante la migliore striscia vincente".
Qualcuno ha scritto un EA per fare un backtest e verificare questa affermazione? Ho provato, ma non sono riuscito a duplicare i loro risultati o anche solo ad avvicinarmi, ma non sono un esperto. Spero che uno dei guru qui possa farlo.
Grazie,
Maji
Bisogno di aiuto per la codifica dell'EA
Ciao, ho scaricato il seguente EA e sembra funzionare abbastanza bene. Tuttavia non applica Trailingstop, takeprofit e stoploss. qualcuno potrebbe per favore correggere il codice. Qualsiasi aiuto è molto apprezzato. molte grazie
//+------------------------------------------------------------------+
//| SMC Autotrader Momentum.mq4 |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
extern double Lots = 1;
extern double InitialStop = 30
extern double TrailingStop = 20;
extern bool TakeProfitMode = True;
extern int TakeProfit = 10;
extern bool StopLossMode = True;
extern int StopLoss = 25;
datetime BarTime;
//################################################## ###################
int init()
{
//----
//----
return(0);
}
//################################################## ###################
int start()
{
int cnt, totale, ticket, MinDist, tmp;
doppio Spread;
//################################################## ##########################
se(Bars<100){
Print("barre inferiori a 100");
return(0);
}
//esci se non c'è una nuova barra
if(BarTime == Time[0]) {return(0);}
//nuova barra, aggiorna la barra
BarTime = Time[0];
//################################################## #######################################
//~~~~~~~~~~~~~~~~Cose varie di configurazione~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~
MinDist=MarketInfo(Symbol(),MODE_STOPLEVEL);
Spread=(Ask-Bid);
//################################################## #######################################
doppio SMAP1,SMAP2,MMAP1,MMAP2,LMAP1,LMAP2;
SMAP1=iMA(NULL,0,4,0,MODE_EMA,PRICE_CLOSE,1);
SMAP2=iMA(NULL,0,4,0,MODE_EMA,PRICE_CLOSE,2);
MMAP1=iMA(NULL,0,9,0,0,MODE_EMA,PRICE_CLOSE,1);
MMAP2=iMA(NULL,0,9,0,MODE_EMA,PRICE_CLOSE,2);
LMAP1=iMA(NULL,0,100,0,MODE_EMA,PRICE_CLOSE,1);
LMAP2=iMA(NULL,0,100,0,MODE_EMA,PRICE_CLOSE,2);
//################################################## ######################################
//################## CHIUSURA ORDINE ################################################## #
// Se gli ordini sono in vigore, controlla la chiusura rispetto alle tecniche LONG & SHORT
//Chiudi gli ordini LONG
total=OrdersTotal();
if(total>0)
{
for(cnt=0;cnt<totale;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
{
if(SMAP2 > MMAP2 && SMAP1 < MMAP2)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ; // chiude la posizione LONG
}}
//CHIUDERE LE POSIZIONI SHORT:
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_SELL && OrderSymbol()==Symbol()) // controlla il simbolo
{
if(SMAP2 MMAP2)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ; // chiude la posizione SHORT
}}
} // per il ciclo return
} // chiudere il 1° if
//################################################## ############################
//################## ORDINE DI ARRESTO IN TRAILING Regolazione #######################
//TRAILING STOP: LONG
if(0==1) //Si usa per attivare e disattivare il trailing stop
{
total=OrdersTotal();
if(total>0)
{
for(cnt=0;cnt<totale;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY && OrderSymbol()==Symbol()
&&
Bid-OrderOpenPrice()> (Point*TrailingStop)
&&
OrderStopLoss()<Bid-(Punto*TrailingStop)
)
{OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),1,White);
return(0);}
}}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//TRAILING STOP: SHORT
total=OrdiniTotali();
if(total>0)
{
for(cnt=0;cnt<totale;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_SELL && OrderSymbol()==Symbol()
&&
OrderOpenPrice()-Ask > (Point*TrailingStop)
&&
OrderStopLoss() > Ask+(Punto*TrailingStop)
)
{OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(P oint*TrailingStop),OrderTakeProfit(),0,Yellow);
return(0);}
}}
} // staffa finale per interruttore on/off
//################################################## ########################################
//~~~~~~~~~~~ FINE ORDINE Routine di chiusura e modifiche allo Stoploss ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//################################################## ########################################
//~~~~~~~~~~~~START of NEW ORDERS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//######################### NUOVE POSIZIONI ? ######################################
//Possibilmente aggiungere un timer per fermare entrate multiple nel periodo
// Controllare il margine disponibile
// SOLO UN ORDINE per SIMBOLO
// Loop around orders to check symbol doesn't appear more than once
// Controlla il tempo trascorso dall'ultima entrata per fermare entrate multiple sulla stessa barra
if (0==1) // interruttore per attivare/disattivare il controllo storico
{
total=HistoryTotal();
if(total>0)
{
for(cnt=0;cnt<totale;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY); //Necessita di essere il giorno successivo non come sotto
if(OrderSymbol()==Symbol()&& CurTime()- OrderCloseTime() < (Period() * 60 )
)
{
return(0);
}}}}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
total=OrdersTotal();
if(total>0)
{
for(cnt=0;cnt<totale;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol()) return(0);
}
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if(ContoFreeMargin()<(1000*Lotti))
{Print("Non abbiamo soldi. Margine libero = ", AccountFreeMargin());
return(0);}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//################################################## #######################################
//REGOLE DI ENTRATA: LONG
se(SMAP2 MMAP2)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0, "M axMin Long",16384,0,Orange); //Bid-(Point*(MinDist+2))
se(biglietto>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print("Ordine BUY aperto : ",OrderOpenPrice());
}
else Print("Errore nell'apertura dell'ordine BUY: ",GetLastError());
return(0);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//REGOLE DI ENTRATA: BREVE //################################
if(SMAP2 > MMAP2 && SMAP1 < MMAP2)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0," MaxMin Short",16384,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print("Ordine SELL aperto : ",OrderOpenPrice());
}
else Print("Errore nell'apertura dell'ordine SELL: ",GetLastError());
return(0);
}
//################################################## ##################################
//############ Fine del programma #########################
return(0);
}