Guarda come scaricare robot di trading gratuitamente
Ci trovi su Twitter!
Unisciti alla nostra fan page
Script interessante?
Pubblica il link!
lasciare che altri lo valutino
Ti è piaciuto lo script? Provalo nel Terminale MetaTrader 5
Visualizzazioni:
52
Valutazioni:
(10)
Pubblicato:
Freelance MQL5 Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance

Parametri dell'Expert Advisor (input)

L'EA dispone di diversi parametri esterni che l'utente può modificare per controllarne il comportamento:

Parametri generali

Parametro Tipo Descrizione
Numero magico int Un identificatore unico per le operazioni dell'EA.
Lotto iniziale doppio La dimensione del lotto iniziale per il primo trade di una serie.
AllowBuy bool Flag per consentire all'EA di aprire operazioni di acquisto (iniziale e Martingala).
ConsentiVendita bool Flag per consentire all'EA di aprire operazioni di vendita (iniziale e Martingala).
TakeProfit int Un Take Profit fisso in punti/pips utilizzato quando si inseriscono ordini pendenti (ma non per l'esecuzione a mercato).
TrovaAlteBasseBarre int Il numero di barre precedenti da guardare indietro per determinare il massimo e il minimo per l'inserimento iniziale degli ordini pendenti.
Azzeramento dopo le barre int Numero di barre dopo le quali gli ordini pendenti iniziali saranno cancellati e rivalutati (se non è aperta alcuna posizione).

Strategia Martingala

Parametro Tipo Descrizione
InvertiMartingala bool Se è vero, le operazioni Martingala successive saranno nella direzione opposta dell'ultima operazione della serie (in genere si tratta di un approccio anti-Martingale o di copertura, ma il codice apre nella stessa direzione se è falso). La logica attuale suggerisce di aprire nella stessa direzione se ReverseMartingale è falso.
Moltiplicatore di lotto doppio Il fattore per il quale la dimensione del lotto viene moltiplicata per il prossimo trade della serie in perdita (ad esempio, 2 .0 significa raddoppiare il lotto).
SecureProfitMartingaleTarget doppio Il profitto totale fluttuante (in valuta del conto) al quale verrà chiusa l'intera serie di trade aperti.
DistanzaMartingalaPips int La distanza (in pip) che il prezzo deve percorrere rispetto al prezzo di apertura dell'ultimo trade prima che venga aperto un nuovo trade Martingala.
Massimo di compravendite nella serie int Il numero massimo di operazioni consentite in una singola serie Martingala.

Strategia del tempo

Parametro Tipo Descrizione
ConsentiLunedì... PermettiVenerdì bool Flag per abilitare o disabilitare il trading in determinati giorni della settimana.
Date proibite stringa Un elenco separato da virgole di date (formato YYYY.MM.DD) in cui il trading è vietato.

Panoramica delle funzioni principali

OnInit() (Inizializzazione)

Imposta il MagicNumber, la modalità di margine e la deviazione dell'EA. Riporta le variabili di stato della Martingala (s_currentLot , s_totalTradesInSeries , ecc.) ai loro valori iniziali, preparando un nuovo inizio.

OnDeinit() (Deinizializzazione)

Una semplice funzione di pulizia, che stampa un messaggio quando l'EA viene interrotto o rimosso.

IsTradingDateAllowed() e IsTradingDayAllowed() (Filtri di trading)

Queste funzioni controllano il giorno e la data correnti rispetto agli input definiti dall'utente (AllowMonday to AllowFriday e ForbiddenDates) per determinare se il trading è consentito.

OpenTradeLogic(ENUM_ORDER_TYPE type, string tradeComment) (Esecuzione del mercato)

Questa funzione gestisce l'apertura di nuove posizioni di mercato (acquisto o vendita).

  1. Convalida e normalizza le dimensioni del lotto rispetto alle dimensioni minime, massime e di passo del broker.

  2. Verifica la presenza di un margine libero sufficiente utilizzando CheckMargin() .

  3. Esegue l'operazione senza un Take Profit o uno Stop Loss fisso (tp_calculated è 0).

  4. Aggiorna le variabili di stato globali della Martingala: s_currentLot , s_lastOpenPrice , s_seriesType e s_totalTradesInSeries .

ChiudiTutteLePosizioni()

Itera tutte le posizioni attualmente aperte e chiude quelle che sono state aperte da questo EA (in base al MagicNumber).

PendingOrders(ENUM_ORDER_TYPE type, double price, double lotSize, string comment) (Inserimento di ordini pendenti)

Questa funzione inserisce ordini Buy Limit o Sell Limit:

  1. Convalida la dimensione del lotto e controlla che il margine sia sufficiente.

  2. Convalida il prezzo di entrata rispetto alla distanza minima del broker ( SYMBOL_TRADE_STOPS_LEVEL ).

  3. Calcola un Take Profit fisso ( tp ) in base all'input TakeProfit.

  4. Invia la richiesta di negoziazione. Nota: la funzione UpdateHighLowAndOrders richiama questa funzione per piazzare gli ordini Buy Limit e Sell Limit iniziali.

UpdateHighLowAndOrders() (Logica di entrata iniziale)

È il meccanismo di entrata iniziale quando non ci sono posizioni aperte:

  1. Esamina le barre posteriori FindHighLowBackBars per trovare il massimo e il minimo.

  2. Calcola priceSellLimit (Highest High + 1 tick) e priceBuyLimit (Lowest Low - 1 tick).

  3. Controlla se esistono già ordini Buy Limit e Sell Limit con il MagicNumber dell'EA.

  4. Inserisce un ordine Sell Limit iniziale appena sopra il massimo recente e un ordine Buy Limit appena sotto il minimo recente, ciascuno utilizzando l'InitialLot.

OnTick() (Logica principale)

Il cuore della logica di esecuzione dell'EA:

  1. Controllo del tempo: Impedisce calcoli ridondanti sullo stesso tick.

  2. Controllo del filtro: Se il trading non è consentito per giorno/data, cancella tutti gli ordini pendenti.

  3. Controllo dell'obiettivo di profitto (Series Exit): Se eaHasOpenPositions è vero E totalFloatingProfit è SecureProfitMartingaleTarget, chiama CloseAllPositions() e azzera tutte le variabili di stato Martingale per iniziare una nuova serie.

  4. Posizionamento iniziale dell'ordine: Se !eaHasOpenPositions E il trading è consentito, azzera lo stato Martingala e controlla se si è formata una nuova barra.

    • Se si forma una nuova barra, controlla se barsCount è ResetAfterBars . In caso affermativo, cancella gli ordini in sospeso e chiama UpdateHighLowAndOrders() per piazzare nuovi ordini iniziali. In caso contrario, richiama semplicemente UpdateHighLowAndOrders().

  5. Logica del passo Martingala: Se eaHasOpenPositions è vero E s_totalTradesInSeries è $< MaxTradesInSeries`:

    • Controlla se totalFloatingProfit è negativo e se il prezzo si è mosso rispetto all'ultima operazione aperta di almeno DistanceMartingalePips.

    • Se entrambe le condizioni sono soddisfatte, calcola il lotto successivo moltiplicando s_currentLot per LotMultiplier.

    • Determina la direzione dell'ordineToOpen (la stessa direzione della serie o quella inversa, in base a ReverseMartingale).

    • Richiama OpenTradeLogic() per aprire la nuova posizione moltiplicata, continuando la serie Martingala.


Riassunto della strategia

L'EA "Babi Ngepet" implementa una strategia Martingala rischiosa ma potenzialmente ad alto rendimento, combinata con un'entrata iniziale di breakout/reverse range:

  1. Ingresso iniziale: L'EA pone un limite iniziale di acquisto (sotto il minimo recente) e un limite di vendita ( sopra il massimo recente). Ciò suggerisce un'ipotesi iniziale di comportamento range-bound: si acquista quando il prezzo scende al minimo e si vende quando il prezzo sale al massimo.

  2. Gestione degli scambi: Se una delle operazioni iniziali viene attivata e la posizione va in perdita complessiva (profitto fluttuante negativo) e il prezzo continua a muoversi contro le posizioni aperte per una distanza definita, l'EA apre una nuova posizione nella stessa direzione con una dimensione di lotto maggiore (Martingala).

  3. Strategia di uscita: La serie di operazioni continua ad aumentare la dimensione del lotto fino a quando il profitto fluttuante aggregato di tutte le operazioni della serie raggiunge il SecureProfitMartingaleTarget, a quel punto tutte le posizioni vengono chiuse e l'EA si reimposta per una nuova serie.

Attenzione: La strategia Martingala è nota per gli elevati drawdown e per l'alto rischio di perdita di capitale, poiché la dimensione del lotto aumenta dopo ogni fase di perdita.


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

UtterFractals UtterFractals

Questo indicatore, a differenza dei "frattali" standard e di ogni sorta di zig-zag, mostra la "struttura interna del mercato", il più vicino possibile a quella reale.

EQUILIBRIO-2011 EQUILIBRIO-2011

Gridder multicurrency con limitazione del rischio (versione presentata all'Automated Trading Championship 2011 e aggiornata).

Consulente esperto di teoria delle probabilità per il Forex Consulente esperto di teoria delle probabilità per il Forex

Consulente di teoria della probabilità

Livelli frattali Livelli frattali

L'indicatore FractalLevels visualizza un canale costruito utilizzando i frattali.