Autore dell'idea — Hazem, autore del codice MQL5 — barabashkakvn.
Una delle sfide principali del codice è confrontare i valori di iCCI e iMACD con la variabile "Buy Sell Level". I valori degli indicatori possono differire anche di decine di volte.
Prendiamo ad esempio i simboli EURUSD, USDJPY e USDSEK, oltre a tutti i valori di periodo disponibili in MetaTrader 5:
Come puoi notare, iCCI offre letture piuttosto stabili, mentre iMACD è molto dipendente dal prezzo del simbolo. Per risolvere questo problema, possiamo moltiplicare i valori di iMACD per un rapporto:
void OnTick()
{
//----
m_ext_lot=NormalizeDouble(m_account.Balance()/50001.0,2);
if(m_ext_lot<0.1)
m_ext_lot=0.1;
m_cci=iCCIGet(0);
m_macd=iMACDGet(MAIN_LINE,0)*1000000;
m_buy_total=0;
m_sell_total=0;
{
//----
m_ext_lot=NormalizeDouble(m_account.Balance()/50001.0,2);
if(m_ext_lot<0.1)
m_ext_lot=0.1;
m_cci=iCCIGet(0);
m_macd=iMACDGet(MAIN_LINE,0)*1000000;
m_buy_total=0;
m_sell_total=0;

Consiglio: Si consiglia di utilizzare EURUSD M30.
Risultati dal 08.01.2016 al 06.11.2016, EURUSD M30, deposito iniziale — 10 000:
Commento 0