MetaTrader4
Esempio di Heiken Ashi con Multi Time Frame (MTF) per MetaTrader 4
Descrizione
In questo articolo vedremo un esempio di utilizzo delle candele Heiken Ashi.
Utilizza solo ordini pendenti (Buy-Limit e Sell-Limit).
È possibile effettuare hedging (utilizzando numeri magici diversi).
È possibile applicare filtri (utilizzando due time frame come mostrato nel codice sottostante).
Scopriamo l'idea principale di questo sistema trading attraverso le seguenti due funzioni:
int AshiUp(int TF=PERIOD_CURRENT)
{
double haLowHigh_1 = iCustom(Symbol(),TF,"Heiken Ashi",Red,White,Red,White,0,1);
double haOpen_1 = iCustom(Symbol(),TF,"Heiken Ashi",Red,White,Red,White,2,1);
double haClose_1 = iCustom(Symbol(),TF,"Heiken Ashi",Red,White,Red,White,3,1);
double haLowHigh_0 = iCustom(Symbol(),TF,"Heiken Ashi",Red,White,Red,White,0,0);
double haOpen_0 = iCustom(Symbol(),TF,"Heiken Ashi",Red,White,Red,White,2,0);
double haClose_0 = iCustom(Symbol(),TF,"Heiken Ashi",Red,White,Red,White,3,0);
if((haClose_0>haOpen_0 && haOpen_0==haLowHigh_0) &&
(haClose_1>haOpen_1 && haOpen_1!=haLowHigh_1))
return(1);
else return(0);
}
int AshiDown(int TF=PERIOD_CURRENT)
{
double haLowHigh_1 = iCustom(Symbol(),TF,"Heiken Ashi",Red,White,Red,White,0,1);
double haOpen_1 = iCustom(Symbol(),TF,"Heiken Ashi",Red,White,Red,White,2,1);
double haClose_1 = iCustom(Symbol(),TF,"Heiken Ashi",Red,White,Red,White,3,1);
double haLowHigh_0 = iCustom(Symbol(),TF,"Heiken Ashi",Red,White,Red,White,0,0);
double haOpen_0 = iCustom(Symbol(),TF,"Heiken Ashi",Red,White,Red,White,2,0);
double haClose_0 = iCustom(Symbol(),TF,"Heiken Ashi",Red,White,Red,White,3,0);
if((haClose_0<haOpen_0 && haOpen_0==haLowHigh_0) &&
(haClose_1<haOpen_1 && haOpen_1!=haLowHigh_1))
return(1);
else return(0);
}
Vediamo ora il codice per rilevare un acquisto:
//--- Trading
if(TotalOrdersCount(MagicNumberBuy)<1)
if(AshiUp(1440)==1 && AshiUp()==1)
BuyExecute();
Inoltre, non è consentito operare con metalli come vedrai nel codice qui sotto:
//+------------------------------------------------------------------+
//| Funzione di inizializzazione dell'Expert
//+------------------------------------------------------------------+
int OnInit()
{
Comment(" ");
if(Symbol()=="Gold" || Symbol()=="GOLD" || Symbol()=="gold" || Symbol()=="XAUUSD" || Symbol()=="AUCMDUSD"
|| Symbol() == "Silver" || Symbol() == "SILVER" || Symbol() == "silver" || Symbol() == "XAGUSD" || Symbol() == "E_SI"
|| Symbol() == "Copper" || Symbol() == "COPPER" || Symbol() == "copper" || Symbol() == "CUCMDUSD"
|| Symbol() == "XAUEUR" || Symbol() == "Gold.Euro" || Symbol() == "Gold.Eur"
|| Symbol() == "XAGEUR" || Symbol() == "Silver.Euro" || Symbol() == "Silver.Eur"
|| Symbol() == "USOil" || Symbol() == "USOIL" || Symbol() == "UKOil" || Symbol() == "UKOIL"
|| Symbol() == "NGAS" || Symbol() == "NGas" || Symbol() == "Bund" || Symbol() == "BUND" || Symbol() == "bund"
|| Symbol() == "Oil" || Symbol() == "Brent" || Symbol() == "BRENT" || Symbol() == "brent" || Symbol() == "Crude" || Symbol() == "COPPER" || Symbol() == "BRENTCMDUSD"
|| Symbol() == "WTI" || Symbol() == "Light" || Symbol() == "LIGHT" || Symbol() == "LIGHTCMDUSD" || Symbol() == "COPPER"
|| Symbol() == "Palladium" || Symbol() == "PALLADIUM" || Symbol() == "palladium" || Symbol() == "PDCMDUSD"
|| Symbol() == "Platinum" || Symbol() == "PLATINUM" || Symbol() == "platinum" || Symbol() == "PTCMDUSD" )
{
Comment(SymbolErr);
Alert(SymbolErr);
return(INIT_FAILED);
}
.
.
.
}
Immagine
Raccomandazioni
Questo codice esempio è solo per programmatori/trader che sono interessati a codici gratuiti per apprendere/modificare in futuro.
Non utilizzarlo per trading con denaro reale.
Utilizzalo solo in Demo o nel Tester di Strategia.
Puoi rimuovere le righe (dalla 55 alla 70) per provarlo sui metalli.
Buona fortuna!
2017.04.11