Guarda come scaricare robot di trading gratuitamente
Ci trovi su Facebook!
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:
67
Valutazioni:
(4)
Pubblicato:
Aggiornato:
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

Channel Breakout Dashboard Channel Breakout Dashboard

Channel Breakout Dashboard is an informational panel (not an automated trading robot) that runs on the MetaTrader 5 chart and centralizes, in one place, several market conditions that would otherwise require 4-5 separate indicators open at the same time.

MT5 Cash Risk Probe - Read-Only Sizing MT5 Cash Risk Probe - Read-Only Sizing

Read-only MT5 script that estimates stop-distance cash loss in account currency, reserves explicit cash costs and floors volume to the broker grid. It never sends or modifies an order.

MA + Envelope Breakouts MA + Envelope Breakouts

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

CKS Position Risk Dashboard CKS Position Risk Dashboard

Una dashboard MT5 in sola lettura per il calcolo delle dimensioni dei lotti in base al rischio, lo stato del conto, i limiti di volume del broker e l'esposizione attuale per simbolo.