L'obiettivo di questa serie di lezioni è fornirti gli strumenti pratici per iniziare a programmare un Expert Advisor. In questa lezione imparerai le due funzioni che userai in quasi ogni EA: come leggere un indicatore tecnico e come aprire un'operazione.
L'Indicatore Tecnico più Semplice: la Media Mobile
L'indicatore più semplice con cui iniziare è la Media Mobile. Basta una sola riga di MQL4 per calcolarla:
double iMA(Symbol(), PERIOD_CURRENT, 20, 0, MODE_EMA, PRICE_OPEN, 0);
La parola chiave double prima di iMA() dichiara che il risultato è un numero in virgola mobile (un prezzo con decimali). Ogni parametro all'interno delle parentesi controlla un aspetto diverso del calcolo:
| Parametro | Valore nell'esempio | Significato |
|---|---|---|
| 1° — Simbolo | Symbol() | Lo strumento su cui effettuare il calcolo. NULL o Symbol() = simbolo del grafico corrente |
| 2° — Timeframe | PERIOD_CURRENT | Il timeframe. Può essere PERIOD_M1, PERIOD_H1, PERIOD_D1, ecc. |
| 3° — Periodo | 20 | Numero di candele usate per calcolare la media |
| 4° — MA shift | 0 | Scorrimento orizzontale della linea dell'indicatore (di solito 0) |
| 5° — Metodo | MODE_EMA | Metodo di calcolo: MODE_SMA, MODE_EMA, MODE_SMMA o MODE_LWMA |
| 6° — Prezzo applicato | PRICE_OPEN | Quale prezzo mediare: PRICE_CLOSE, PRICE_OPEN, PRICE_HIGH, PRICE_LOW, PRICE_MEDIAN, PRICE_TYPICAL, PRICE_WEIGHTED |
| 7° — Shift | 0 | Quante barre indietro leggere (0 = barra corrente, 1 = barra precedente) |
La Funzione OrderSend
Una volta che hai un indicatore che ti dice quando agire, hai bisogno di una funzione per aprire l'operazione:
int OrderSend(Symbol(), OP_BUY, 0.01, Ask, 50, 0, 0, "My order", 100, 0, clrGreen);
Questa funzione invia un ordine a mercato o pendente al broker. Ecco cosa fa ogni parametro:
| Parametro | Valore nell'esempio | Significato |
|---|---|---|
| 1° — Simbolo | Symbol() | Strumento su cui operare |
| 2° — Operazione | OP_BUY | Tipo di ordine: OP_BUY, OP_SELL, OP_BUYLIMIT, OP_SELLLIMIT, OP_BUYSTOP, OP_SELLSTOP |
| 3° — Lotti | 0.01 | Dimensione della posizione in lotti. Più piccola = meno capitale a rischio |
| 4° — Prezzo | Ask | Prezzo di ingresso. Usa Ask per gli acquisti, Bid per le vendite |
| 5° — Slippage | 50 | Slippage massimo accettabile in punti. L'ordine viene eseguito solo se il prezzo effettivo è entro questo range rispetto al prezzo richiesto |
| 6° — Stop loss | 0 | Livello di stop loss (0 = nessuno) |
| 7° — Take profit | 0 | Livello di take profit (0 = nessuno) |
| 8° — Commento | "My order" | Etichetta testuale visibile nel terminale e nel report del backtest |
| 9° — Magic number | 100 | Identificatore univoco per gli ordini di questo EA. Fondamentale per il recupero dopo un riavvio della piattaforma — l'EA usa il magic number per riconoscere quali posizioni aperte gli appartengono |
| 10° — Scadenza | 0 | Tempo di scadenza per gli ordini pendenti. Non utilizzato per gli ordini a mercato |
| 11° — Colore freccia | clrGreen | Colore della freccia di ingresso disegnata sul grafico. Usa CLR_NONE per nasconderla (utile in produzione; tienila visibile durante il backtesting) |
Mettere Tutto Insieme
Ora hai i due elementi fondamentali di cui ogni EA ha bisogno:
iMA()— legge il valore di un indicatore tecnico su qualsiasi barra e timeframeOrderSend()— apre un ordine a mercato o pendente con pieno controllo su dimensione, prezzo e parametri di rischio
Nella Lezione 3, combinerai queste due funzioni con variabili e istruzioni if per costruire da zero un Expert Advisor completo basato sul crossover di medie mobili.