Guarda come scaricare robot di trading gratuitamente
Ci trovi su Telegram!
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:
39
Valutazioni:
(3)
Pubblicato:
Freelance MQL5 Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance

GBPUSD 1HRC4 Ciclo - vero backtest non ottimizzato


Questo Expert Advisor è un sistema multi-strategia suddiviso in quattro sottosistemi di trading indipendenti (da Ciclo 1 a Ciclo 4). Ogni ciclo opera con il proprio Magic Number, i propri indicatori, i propri trigger di ingresso e parametri di gestione del capitale specifici.

1. Logica del Ciclo 1: Conflusso di più indicatori

Il Ciclo 1 si basa su un filtro composito che combina fino a tre medie mobili (MA), un indice di forza relativa (RSI) e un Williams’ Percent Range (WPR).

Trigger di ingresso

Una variabile centrale, c1_signal, funge da registro binario per garantire che gli indicatori non entrino in conflitto tra loro. Se l’indicatore A fornisce un segnale di acquisto, c1_signal diventa 1. Se l’indicatore B fornisce successivamente un segnale di vendita, c1_signal viene azzerato a 0 per invalidare l’operazione.

  • Media mobile 1, 2 e 3:

    • Condizione di acquisto: la barra precedente chiude al di sopra della media mobile e la barra corrente apre al di sopra della media mobile ($Close[1] > MA$ e $Open[0] > MA$).

    • Condizione di vendita: la barra precedente chiude al di sotto della media mobile e la barra corrente apre al di sotto della media mobile ($Close[1] < MA$ e $Open[0] < MA$).

  • Filtro RSI:

    • Condizione di acquisto: l’RSI scende al di sotto della soglia di ipervenduto ( RSI_Buy_Level , ad es. 30).

    • Condizione di vendita: l’RSI supera la soglia di ipercomprato ( RSI_Sell_Level , ad es. 70).

  • Filtro WPR:

    • Condizione di acquisto: il WPR scende al di sotto di WPR_Buy_Level (ad es., -80).

    • Condizione di vendita: il WPR supera il WPR_Sell_Level (ad es. -20).

Elaborazione dei segnali

  • Regola dei segnali invertiti: se Reverse_Signals = true, un segnale di acquisto finale (1) si inverte in un segnale di vendita (2) e viceversa.

  • Vincolo "Una sola operazione per barra": l'EA verifica se il prezzo di apertura corrente corrisponde a c1_open_price. In caso affermativo, significa che su quella barra è già stata gestita una posizione e le ulteriori esecuzioni vengono bloccate fino all'apertura di una nuova barra.

2. Logica del ciclo 2: Trend following con gli Envelopes

Il Ciclo 2 utilizza un classico indicatore a doppia banda (Envelopes) per individuare i breakout strutturali del mercato.

  • Trigger di acquisto: la barra precedente chiude al di sopra della banda superiore dell’envelope e la barra corrente si apre al di sopra di essa ($Close[1] > UpperBand$ e $Open[0] > UpperBand$). Ciò presuppone una forte rottura con momentum rialzista.

  • Trigger di vendita: la barra precedente chiude al di sotto della banda inferiore dell’inviluppo e la barra corrente apre al di sotto di essa ($Close[1] < LowerBand$ e $Open[0] < LowerBand$), indicando una rottura ribassista.

  • Inversione dei segnali: se Reverse_Signals2 = true, i breakout vengono interpretati come false segnalazioni (si ignora la rottura al ribasso/al rialzo).

3. Logica del Ciclo 3: Ritorno alla media delle bande di inviluppo

Il Ciclo 3 utilizza parametri identici a quelli del Ciclo 2, ma inverte la logica di esecuzione predefinita per puntare al ritorno alla media (attenuando gli estremi).

  • Trigger di acquisto: la barra precedente chiude al di sopra della banda dell’inviluppo superiore e la barra corrente apre al di sopra di essa. Logica: il codice assegna qui un segnale di vendita perché presume che l’asset sia sovraesteso e tornerà all’interno delle bande.

  • Trigger di vendita: la barra precedente chiude al di sotto della banda inferiore dell’inviluppo e la barra corrente apre al di sotto di essa. Logica: il codice assegna qui un segnale di acquisto, scommettendo su un rimbalzo immediato dalla zona di ipervenduto.

4. Logica del ciclo 4: Breakout della distanza in punti delle Envelopes

Il ciclo 4 introduce un vincolo rigido di volatilità/distanza in pip all’indicatore Envelopes, fungendo da sistema di breakout aggressivo.

  • Trigger di acquisto: la distanza tra la banda inferiore dell’envelope e la chiusura precedente è maggiore di Distance in punti, E la distanza tra la banda inferiore dell’envelope e l’attuale prezzo di offerta è anch’essa maggiore di Distance ($LowerBand - Close[1] > Distance$ e $LowerBand - Bid > Distance$).

  • Trigger di vendita: la distanza tra la chiusura precedente e la banda superiore, così come quella tra il prezzo di offerta corrente e la banda superiore, superano entrambe la "Distanza" ($Close[1] - UpperBand > Distance$ e $Bid - UpperBand > Distance$).

5. Uscita, chiusura del paniere e logica di rischio

L’architettura di gestione dell’uscita non utilizza ordini standard di Stop Loss (SL) o Take Profit (TP) per singola posizione. Si basa invece su un sistema globale di monitoraggio del patrimonio del conto (Global Account Equity Basket Tracking System ) mappato per ciclo.

Rilevamento delle tappe fondamentali

Quando il conteggio delle posizioni di un ciclo passa da 0 a 1 (monitorato tramite c1_Buycount == 0 o c1_Sellcount == 0), l’EA rileva il patrimonio di riferimento esatto del conto di trading in quel momento:

$$\text{Equità di riferimento} = \text{AccountInfoDouble}(\text{ACCOUNT\_EQUITY})$$

Utilizzando questo valore di riferimento, assegna obiettivi globali statici per quella specifica direzione di trading:

  • Obiettivo di Take Profit: se è specificato target_amount, assegna $\text{Baseline} + \text{target\_amount}$. Altrimenti, utilizza una formula percentuale:

    $$\text{Prezzo obiettivo} = \text{Capitale di riferimento} + \left(\frac{\text{Capitale di riferimento} \times \text{target\_percent}}{100}\right)$$
  • Obiettivo di Stop Loss: utilizza un vincolo di drawdown percentuale relativo al patrimonio netto dell’istantanea acquisita:

    $$\text{Prezzo di rischio} = \text{Baseline} - \left(\frac{\text{Baseline} \times \text{Account\_Risk\_percent}}{100}\right)$$

Verifica dinamica del paniere

Ad ogni tick, l’EA calcola il totale progressivo di profitti/perdite fluttuanti in tempo reale, swap e commissioni per tutte le posizioni attive corrispondenti al Magic Number e al tipo di operazione ( MyAccountProfit_Buy o MyAccountProfit_Sell ) di quel ciclo specifico.

$$\text{Valore attuale del portafoglio} = \text{Capitale di riferimento} + \text{Utili/perdite non realizzati}$$

Esecuzione dell’uscita

Se $\text{Valore attuale del portafoglio} \ge \text{Prezzo obiettivo}$ (raggiungimento dell’obiettivo di profitto) OPPURE $\text{Valore attuale del portafoglio} \le \text{Prezzo di rischio}$ (superamento del limite massimo di rischio):

  1. L’EA chiama la funzione ClosePositions().

  2. Esegue un ciclo a ritroso su tutte le posizioni di mercato, filtrandole in base alla corrispondenza tra Magic Number e Tipo di posizione.

  3. Ogni singola operazione correlata viene immediatamente liquidata tramite un ordine a mercato.

  4. Il contatore del ciclo di direzione viene azzerato a 0, consentendo all’EA di stabilire un’istantanea di riferimento completamente nuova al prossimo segnale dell’indicatore strutturale.

6. Logica di dimensionamento (gestione del capitale)

I calcoli del volume vengono eseguiti dinamicamente dalla routine getLots(int cycle):

  • Lotti fissi: se AutoLots è falso, restituisce l’impostazione di base della dimensione del lotto hardcoded (ad es., LotSize = 0,01).

  • Scaling dinamico del rischio: se AutoLots = true, il sistema regola automaticamente il volume di trading in base al margine libero:

    1. Interroga il margine esatto richiesto per gestire una transazione standard da 1,0 lot sull’asset corrente utilizzando OrderCalcMargin.

    2. Proietta una capacità di investimento sostenibile utilizzando la formula:

      $$\text{Volume previsto} = \frac{\text{AccountFreeMargin} \times \left(\frac{\text{Lots\_Risk}}{100}\right)}{\text{Margine per 1,0 lot}}$$
    3. Il risultato finale viene limitato in base ai vincoli imposti dal broker utilizzando MathMin e MathMax per garantire che rientri esattamente nell’intervallo valido compreso tra SYMBOL_VOLUME_MIN e SYMBOL_VOLUME_MAX, arrotondato con precisione alla dimensione di passo dell’asset di borsa più vicina (SYMBOL_VOLUME_STEP).

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

FX Dashboard FX Dashboard

This is a FX Dashboard style terminal panel on the MT5 chart, plus lines drawn on the chart (EMA, Bollinger, Donchian).

Day Trader Dashboard Day Trader Dashboard

The Day Trader Dashboard is a Bloomberg-style visual panel for MetaTrader 5 that tracks an intraday price range and flags when price is inside it (fade zone) or has broken out of it. It doesn't place trades — it's a decision-support overlay that computes the range High/Low from recent bars, draws those levels directly on the chart, and shows a live status readout (scanning / within range / breakout) in a themed, auto-scaling panel. It supports multiple independent instances on the same chart, several color themes, and cleans up 100% of its objects when removed.

MA + Envelope Breakouts MA + Envelope Breakouts

Breakout basati su canale o banda di inviluppo, logica multi-EA in un unico EA

MT5 EA Acceptance Harness MT5 EA Acceptance Harness

Deterministic synthetic acceptance checks for MT5 EA entry-state logic, with no market, account or order access.