MetaTrader 5 / Sistemi Esperti

Smart Trend Follower - sistema esperto per MetaTrader 5

123
(12)
1. Tipi di enum (enumJnsSignal, enumOrderType)
- enumJnsSignal Questo enum definisce il tipo di segnale utilizzato nell'EA. Esistono due opzioni di segnale:
- `eTypeCrossMA`: Utilizza il segnale di Cross 2 MA(l'incrocio di due medie mobili).
- `eTypeTrend`: Segue il trend utilizzando le medie mobili e lo stocastico.
- enumOrderType Questo enum definisce il tipo di ordine:
- `eBuy`: Un ordine di acquisto .
- `eSell`: Un ordine di vendita .
- `eNone`: Nessun ordine eseguito.

2. Parametri di ingresso
- inMagicNumber Un numero magico unico utilizzato per distinguere gli ordini di questo EA.
- inLotSize La dimensione iniziale del lotto per ogni ordine.
- inMultiply Il fattore moltiplicatore utilizzato nella strategia di dimensione del lotto.
- inJarakLayer La distanza in pip tra le posizioni di trading nella strategia a griglia/strato.
- inMAPeriodFast & inMAPeriodSlow I periodi per le medie mobili veloci e lente.
- inSTOKPeriod, inSTODPeriod, inSTOSlowing Parametri per l'oscillatore stocastico.
- inTakeProfit & inStopLoss Impostazioni per il Take Profit e lo Stop Loss.

3. Struct dataTrades
- Questa struct è utilizzata per memorizzare i dati relativi alle posizioni di trading aperte, come il numero totale di posizioni (`ttlPos`), il prezzo medio delle posizioni (`hargaTA`, `hargaTB`) e il volume totale (`ttlLot`).

4. Funzione OnInit()
- Questa funzione gestisce l'inizializzazione dell'EA, compresa la convalida dei parametri di input (ad esempio, assicurandosi che il periodo della MA veloce sia inferiore a quello della MA lenta) e la creazione di handle per gli indicatori MA e Stocastico.

5. Funzione OnTick()
- La funzione principale viene eseguita ogni volta che il prezzo si muove (tick).
- Richiama la funzione per verificare la presenza di un nuovo segnale con GetSignal() e, se viene trovato un segnale, viene utilizzata manageTrading() per eseguire le operazioni.
- Richiama anche setTPSL() per garantire che Take Profit e Stop Loss siano sempre aggiornati.

6. Funzione isNewCandle()
- Questa funzione rileva se si è formata una nuova candela. Questo è importante perché l'EA controlla i segnali solo quando si formano nuove candele.

7. Funzione GetSignal()
- Questa funzione determina se esiste un segnale di trading valido in base alla strategia selezionata:
- Per eTypeCrossMA, il segnale è determinato dall'incrocio delle medie mobili veloci e lente.
- Per eTypeTrend, il segnale utilizza la conferma della MA e dello Stocastico.

8. Funzione manageTrading()
- Questa funzione gestisce l'esecuzione dei trade.
- Se viene rilevato un segnale valido, l'EA apre una posizione con la dimensione del lotto determinata con la funzione getLotSize().
- Viene inoltre applicata una strategia a griglia/strato per aprire posizioni aggiuntive in base alla distanza dei prezzi (`inJarakLayer`).

9. Funzione updateDataTrades()
- Questa funzione aggiorna i dati relativi alle posizioni di trading in corso, come il calcolo del prezzo medio e del volume totale delle posizioni aperte.

10. funzione openTrade()
- Questa funzione apre una nuova posizione di trading in base al segnale generato e alla dimensione del lotto calcolata. Utilizza OrderSend() per eseguire l'ordine.

11. Funzione setTPSL()
- Questa funzione imposta o aggiorna il Take Profit e lo Stop Loss per ogni posizione aperta.

12. funzione modifTPSL()
- Questa funzione modifica il Take Profit e lo Stop Loss delle posizioni esistenti se i valori differiscono da quelli precedentemente impostati.

13. validateLot() Funzione
- Questa funzione assicura che la dimensione del lotto utilizzata sia compresa nell'intervallo minimo e massimo consentito, nonché in linea con il passo minimo del lotto (`gLotStep`).

14. Funzione getLotSize()
- Questa funzione calcola la dimensione del lotto da utilizzare in base alla dimensione del lotto iniziale e al numero di posizioni già aperte, tenendo conto del fattore moltiplicatore (`inMultiply`).

Questo codice è stato progettato per catturare le tendenze del mercato e gestire automaticamente le posizioni di trading utilizzando i segnali tecnici delle medie mobili e dello stocastico.

Tradotto dall’inglese da MetaQuotes Ltd.
Codice originale https://www.mql5.com/en/code/53022