Trading Sistematico

MA Trend 2: Il Tuo Alleato per MetaTrader 5
MetaTrader5
MA Trend 2: Il Tuo Alleato per MetaTrader 5

Hai già sentito parlare di MA Trend? Questa versione aggiornata porta con sé un parametro fondamentale: il Tipo di Trading, che ti offre diverse opzioni:Solo BUY - consente solo l'apertura di posizioni BUY;Solo SELL - permette solo l'apertura di posizioni SELL;BUY e SELL - consente di aprire sia posizioni BUY che SELL.Questo Expert Advisor si basa sull'indicatore iMA (Moving Average, MA) e offre numerose impostazioni:Solo una posizione - puoi mantenere solo una posizione aperta sul mercato;Reverse - inverte i segnali di trading;Close opposite - chiude forzatamente le posizioni opposte quando si riceve un segnale di trading.Ma come funzionano i segnali di trading quando si utilizzano le impostazioni predefinite?Se il prezzo ASK attuale è superiore al valore dell'indicatore al bar #1, allora si ha un segnale per aprire una posizione BUY.Se il prezzo BID attuale è inferiore al valore dell'indicatore al bar #1, allora si ha un segnale per aprire una posizione SELL.Ecco come appare il codice in MQL5:      if(m_symbol.Ask()>ma[1])          m_need_open_buy=true;       else if(m_symbol.Bid()<ma[1])          m_need_open_sell=true;Facciamo un esempio di come funziona con il parametro Solo una posizione impostato su false e true:Nel caso in cui il parametro Solo una posizione sia true, Reverse sia false e Close opposite sia true: viene aperta una posizione BUY. Dopo un po’, riceviamo un segnale per aprire una posizione SELL. Poiché Close opposite è true, la posizione BUY viene chiusa prima (essendo opposta al segnale) e solo dopo viene aperta la posizione SELL.

2025.04.04
Strategia di Trading con l'Expert Advisor iCHO Trend CCIDualOnMA per MetaTrader 5
MetaTrader5
Strategia di Trading con l'Expert Advisor iCHO Trend CCIDualOnMA per MetaTrader 5

Strategia di TradingL'Expert Advisor utilizza due indicatori: iCHO (Chaikin Oscillator, CHO) e il custom CCIDualOnMA. Il CHO funge da indicatore di trend e, quando attraversa lo zero, indica il momento di chiudere le posizioni. L'indicatore 'CCIDualOnMA' viene utilizzato come filtro per aggiungere posizioni. Entrambi gli indicatori sono creati sul 'timeframe di lavoro' specificato - lo stesso timeframe è utilizzato per determinare il momento di nascita di una nuova candela (se necessario per i parametri 'Trailing su ...' e 'Cerca segnali su ...').Segnali di Trading:Chiusura delle posizioni quando l'indicatore CHO attraversa zero :AttraversamentoPosizioni: ReverseModalità di TradingAttraversamento dal basso verso l'alto'falso' -> chiudi tutte le posizioni SELL('Solo posizioni BUY consentite' OPPURE 'Posizioni BUY e SELL consentite') -> apri posizione BUY'vero' -> chiudi tutte le posizioni BUY('Solo posizioni SELL consentite' OPPURE 'Posizioni BUY e SELL consentite') -> apri posizione SELLIntersezione dall'alto verso il basso'falso' -> chiudi tutte le posizioni BUY('Solo posizioni SELL consentite' OPPURE 'Posizioni BUY e SELL consentite') -> apri posizione SELL'vero' -> chiudi tutte le posizioni SELL('Solo posizioni BUY consentite' OPPURE 'Posizioni BUY e SELL consentite') -> apri posizione BUYSegnali Normali (aggiunta di una posizione)L'indicatore CHO è sopra zero e il CCI veloce attraversa il CCI lento dal basso verso l'alto e il veloce è sotto zero - segnale per aprire BUY.L'indicatore CHO è sotto zero e il CCI veloce attraversa il CCI lento dall'alto verso il basso e il veloce è sopra zero - segnale per aprire SELL.Fig. 1. Filtro iCHO Trend CCIDualOnMACaratteristiche:L'Expert Advisor può essere ottimizzato per il timeframe di lavoro ('Timeframe di lavoro')Può esserci solo un'operazione di 'entrata nel mercato' per candela (questo è un parametro interno, non incluso nei parametri di input e non ha nulla a che fare con il 'Solo una posizione').Quando si opera in modalità 'inside bar' (il parametro 'Cerca segnali su ...' è 'bar#0 (ad ogni tick)'), la candela attuale è la candela #0; quando si opera in modalità 'solo quando nasce una nuova candela' (il parametro 'Cerca segnali su ...' è 'bar #1 (su una nuova candela)'), la candela attuale è la candela #1.Il parametro 'Modalità di trading: ' - restrizione su quale lato tradare. Può assumere i valori 'Solo posizioni BUY consentite', 'Solo posizioni SELL consentite'' e 'Posizioni BUY e SELL consentite'.Il parametro 'Usa controllo orario' - intervallo di tempo per la ricerca di segnali di trading da 'Ora di inizio'::'Minuto di inizio' a 'Ora di fine'::'Minuto di fine'. L'intervallo di tempo può essere impostato sia all'interno di un giorno che con un passaggio attraverso un giorno.Ora approfondiamo ciascun gruppo di parametri:Impostazioni di Trading:'Timeframe di lavoro' - timeframe di lavoro. Il timeframe su cui vengono creati gli indicatori e su cui si cerca una nuova candela.Stop Loss, Take Profit e Trailing sono impostati in Punti. Qualsiasi parametro ('Stop Loss', 'Take Profit', 'Trailing Stop') può essere disabilitato - per farlo, impostare il parametro selezionato a '0.0'.Il funzionamento del trailing è mostrato nelle immagini nel codice TrailingStop.Gestione della dimensione della posizione (calcolo del lotto)Il lotto può essere sia costante ('Gestione del denaro' impostata su 'Lotto costante' e dimensione del lotto impostata in 'Il valore per "Gestione del denaro"') che dinamico - in percentuale di rischio per operazione ('Gestione del denaro' impostata su 'Rischio in percentuale per un'operazione' e percentuale di rischio impostata in 'Il valore per "Gestione del denaro"'). È anche possibile impostare un lotto costante pari al lotto minimo - 'Gestione del denaro'' impostato su 'Lotti Min'.Controllo orario:Questa sezione imposta l'intervallo di tempo per la ricerca di segnali di trading. L'intervallo di tempo è abilitato tramite 'Usa controllo orario' e imposta l'intervallo di tempo per la ricerca di segnali da 'Ora di inizio'::'Minuto di inizio' a 'Ora di fine'::'Minuto di fine'. L'intervallo di tempo può essere impostato sia all'interno di un giorno che con un passaggio attraverso un giorno. Non influisce sul trailing.Caratteristiche aggiuntive:Il flag 'Posizioni: Solo una' impostato su 'vero' consente all'Expert Advisor di avere al massimo una posizione nel mercato.ATTENZIONE: 'Posizioni: Solo una' impostato su''vero'' non annulla'Posizioni: Chiudi opposte' impostato su ''vero''! In altre parole: la posizione opposta verrà chiusa prima.Il flag 'Posizioni: Reverse' è responsabile della retroazione dei segnali. Un flag interessante è 'Posizioni: Chiudi opposte' - quando impostato su 'vero', prima di aprire una posizione, assicura che le posizioni opposte vengano rimosse. Il 'Print' log fornisce un logging avanzato di tutte le operazioni. Il parametro 'Freeze and StopsLevels Coefficient' imposta il coefficiente per i livelli di stop e freeze per i casi in cui questi livelli per un simbolo sono uguali a zero. Si raccomanda di utilizzare il valore '3'.

2025.04.04
Come Rilevare l'Inizio di una Nuova Candela in MetaTrader 5
MetaTrader5
Come Rilevare l'Inizio di una Nuova Candela in MetaTrader 5

Quando si utilizza un Expert Advisor (EA) in MetaTrader 5, ogni volta che riceviamo un nuovo tick, la funzione di gestione degli eventi OnTick() viene attivata automaticamente dal terminale. Tuttavia, non esiste una funzione standard per rilevare l'inizio di una nuova candela. Per ovviare a questa mancanza, è fondamentale monitorare il momento di apertura della candela più recente. Quando questo orario cambia, significa che è iniziata una nuova candela e possiamo reagire di conseguenza. Ecco un esempio di codice, compatibile sia con MQL4 che con MQL5, che mostra come implementare questa funzionalità: // Gestore eventi tick standard    void OnTick()    {       // Verifica se c'è una nuova candela (compatibile con MQL4 e MQL5).          static datetime dtCandelaCorrente   = WRONG_VALUE;                 datetime dtCandelaPrecedente = dtCandelaCorrente;                          dtCandelaCorrente   = iTime( _Symbol, _Period, 0 );                 bool     bEventoCandelaNuova  = ( dtCandelaCorrente != dtCandelaPrecedente );       // Reagisci all'evento di una nuova candela.          if( bEventoCandelaNuova )          {             // Controlla se è il primo tick ricevuto.                if( dtCandelaPrecedente == WRONG_VALUE )                {                   // Fai qualcosa al primo tick ...                }                else                {                   // Fai qualcosa quando appare una candela normale ...                };       // Fai altre operazioni ...      };       else      {             // Fai qualcos'altro ...          };       // Altre operazioni ...    }; Nel codice sopra, la variabile statica tiene traccia dell'orario di apertura della candela, anche quando si esce dalla funzione OnTick(). A differenza di una variabile locale normale, memorizza il suo contenuto e non lo rilascia al termine della funzione. Questo è fondamentale per rilevare un cambiamento nell'orario di apertura della candela corrente. È importante notare che quando l'EA viene applicato per la prima volta a un grafico, il codice reagisce come se la candela fosse appena aperta. Questo richiede un trattamento speciale se la situazione deve essere gestita in modo diverso. Infine, ti informo che il codice sorgente per tutte le mie pubblicazioni su CodeBase è ora disponibile anche tramite i "Progetti Pubblici" di MetaEditor sotto il nome "FMIC".

2025.04.03
EA per MetaTrader 5: Analisi Candlestick per Trader Intelligenti
MetaTrader5
EA per MetaTrader 5: Analisi Candlestick per Trader Intelligenti

Se sei un trader che cerca di migliorare le proprie performance su MetaTrader 5, questo Expert Advisor (EA) potrebbe essere proprio quello che fa per te! Si tratta di un sistema di trading che combina l'analisi dei pattern candlestick su più timeframe con un filtro per eventi fondamentali, il tutto gestendo il rischio in modo disciplinato. Scopriamo insieme le sue caratteristiche principali: Strategia Fondamentale Focus sul Price Action: Questo EA si basa esclusivamente sui pattern candlestick, come pin bar, engulfing e hammers/shooting stars, analizzati su tre timeframe (M5, H1, H4) per generare segnali di trading. Confluenza Multi-TF: Richiede che i segnali di trading a 5 minuti siano in accordo con la struttura di trend sui timeframe superiori (H1/H4). Gestione del Rischio Rapporto Rischio-Rendimento 1.5:1: Calcola automaticamente il take-profit a una distanza di 1.5 volte il livello dello stop-loss. Protezione del Margine: Limita l'uso del margine a meno del 30% per impostazione predefinita e regola automaticamente le dimensioni delle posizioni. Stop Dinamici: Utilizza la scala di volatilità ATR o distanze fisse in pip per posizionare gli stop-loss. Filtro Notizie Chiusura Prima degli Eventi: Chiude tutte le posizioni 2 ore prima di eventi economici di grande impatto (come GDP, NFP, CPI). Evita la Volatilità: Previene nuove operazioni durante periodi di alta rischiosità programmati. Design Operativo Esecuzione a 5 Minuti: Attiva le operazioni sul grafico M5 mantenendo il contesto di H1/H4. Limiti di Sessione: Effettua operazioni solo durante le ore di massima liquidità (dalle 8:00 alle 17:00, ora del server). Punti di Forza: Elimina il ritardo degli indicatori grazie all'analisi pura del price action. Controllo rigoroso del rischio tramite un rapporto fisso RR e limiti sul margine. Adattabile sia ai mercati in trend che a quelli laterali. Ideale per: EURUSD e altre major liquide durante le sessioni attive. Trader che cercano un'esecuzione sistematica con protezione dal rischio di evento. Questo EA riesce a bilanciare il riconoscimento dei pattern tecnici con la consapevolezza macroeconomica, dando priorità alla preservazione del capitale, mentre mira a scenari di rendimento costante di 1.5:1.

2025.03.31
Monitoraggio dei Prelievi - Ottimizza il Tuo Expert Advisor su MetaTrader 4
MetaTrader4
Monitoraggio dei Prelievi - Ottimizza il Tuo Expert Advisor su MetaTrader 4

Se sei un trader che utilizza MetaTrader 4, saprai bene quanto sia importante tenere sotto controllo i prelievi dal tuo conto. Oggi voglio condividere con te un pezzo di codice che puoi aggiungere al tuo Expert Advisor per monitorare i prelievi in modo efficace. Molti trader ospitano i loro Expert Advisor su server privati virtuali (VPS) per evitare di dover ripristinare i parametri ogni volta che cambiano il timeframe o il template del grafico. Questo è un ottimo modo per assicurarti che il tuo EA funzioni senza intoppi. Un problema comune è che spesso le dimensioni dei lotti vengono impostate per aumentare senza mai diminuire, anche in caso di perdita, con la speranza di recuperare tutto prima di ulteriori incrementi. Tuttavia, gli EA non riescono a distinguere tra un prelievo e una perdita. Se si verifica una perdita, il tuo EA continuerà a utilizzare l'ultima dimensione di lotto conosciuta, sperando di recuperare. D'altro canto, se si tratta di un prelievo, è fondamentale che l'EA riduca la dimensione del lotto per adattarsi al nuovo saldo. Questo codice che ti propongo può essere facilmente modificato per monitorare i prelievi e regolare le dimensioni dei lotti in base al tuo saldo attuale. In questo modo, potrai gestire meglio il tuo capitale e le tue operazioni. Se hai domande o hai bisogno di assistenza per implementare questo codice, non esitare a contattarmi. Sono qui per aiutarti!

2025.03.31
RRS Tangled EA: L'Expert Advisor Perfetto per MetaTrader 4
MetaTrader4
RRS Tangled EA: L'Expert Advisor Perfetto per MetaTrader 4

Se sei alla ricerca di un Expert Advisor che possa rivoluzionare il tuo trading su MetaTrader 4, allora non cercare oltre: il RRS Tangled EA è ciò che fa per te! Questa versione avanzata e ottimizzata del RRS Randomness in Nature EA è progettata per selezionare in modo casuale simboli di valuta, dimensioni dei lotti e tipologie di ordini per le tue operazioni. A differenza di altri robot da trading, non si basa su indicatori tecnici o analisi fondamentali, ma utilizza un approccio chiamato Randomness in Nature per aprire le sue posizioni. Con le giuste impostazioni come Take Profit, Stop Loss, Trailing e Gestione del Rischio, puoi generare profitti significativi. Questo EA è progettato per funzionare in modalità multi-valuta o multi-asset, il che significa che anche se lo attacchi a un grafico di una singola coppia di valute, può comunque operare su altre coppie e gestire tutte le operazioni collegate ai trade aperti. Variabile Valori Descrizione minLot_Size Valore Double Dimensione minima del lotto per garantire che la casualità della dimensione del lotto non scenda sotto questo valore. maxLot_Size Valore Double Dimensione massima del lotto per garantire che la casualità della dimensione del lotto non superi questo valore. StopLoss Valore Int Imposta il valore dello stop loss in punti/pips (l'unità di movimento di prezzo più piccola per il tuo asset). Imposta Stop Loss a 0 per disabilitarlo. TakeProfit Valore Int Imposta il valore del take profit in punti/pips. Imposta Take Profit a 0 per disabilitarlo. Trailing_Start Valore Int (Punti/Pips) Specifica il numero di pips dal prezzo dell'operazione aperta in cui deve iniziare il trailing. Imposta Trailing Start a 0 per disabilitare l'operazione di trailing. Trailing_Gap Valore Int (Punti/Pips) Imposta il gap in pips tra il prezzo di mercato attuale e lo stop loss trailing. Imposta Trailing Gap a 0 per disabilitare l'operazione di trailing. Risk_In_Money_Type FixedMoney, BalancePercentage FixedMoney: Chiude tutte le operazioni aperte quando il flottante negativo raggiunge l'importo specificato. BalancePercentage: Calcola automaticamente in base al tuo saldo e chiude tutte le operazioni una volta raggiunto questo limite. Money_In_Risk Valore Int Se Risk_In_Money_Type è impostato su FixedMoney, inserisci l'importo che puoi permetterti di perdere. Se impostato su BalancePercentage, l'EA calcolerà automaticamente il rischio in base al tuo saldo e chiuderà tutte le operazioni quando verrà raggiunto quel limite. Max_Spread Valore Int (Punti/Pips) Imposta lo spread massimo accettabile. Se lo spread attuale supera questo valore, l'EA non eseguirà operazioni e attenderà che lo spread rientri nei limiti specificati. Slippage Valore Int (Punti/Pips) Imposta la slippage massima consentita per l'esecuzione degli ordini. MaxOpenTrade Valore Int Numero massimo di operazioni aperte consentite. Buona fortuna e buon trading!

2025.03.23
RRS Chaotic EA: Il Tuo Nuovo Compagno di Trading su MetaTrader 4
MetaTrader4
RRS Chaotic EA: Il Tuo Nuovo Compagno di Trading su MetaTrader 4

Se sei alla ricerca di un Expert Advisor che ti permetta di esplorare nuove strategie di trading senza dipendere da indicatori complessi o notizie di mercato, allora il RRS Chaotic EA potrebbe essere proprio ciò che fa per te. Questo EA è una versione semplificata del RRS Randomness in Nature EA, progettato per aprire operazioni in modo casuale, utilizzando coppie di valute e dimensioni dei lotti variabili. Non dovrai preoccuparti di analisi tecniche, poiché il RRS Chaotic EA non si basa su modelli di prezzo, eventi economici o pattern di candlestick. È un approccio fresco e innovativo, che ti offre diverse strategie di trading e piani di gestione del rischio personalizzabili. Nonostante il suo funzionamento basato sul caso, questo EA ha dimostrato di generare profitti interessanti se impostato correttamente. Variabile Valori Descrizione minLot_Size Valore Doppio Dimensione minima del lotto per garantire che la casualità non scenda al di sotto di questo valore. maxLot_Size Valore Doppio Dimensione massima del lotto per garantire che la casualità non superi questo valore. StopLoss Valore Intero Imposta il valore di stop loss in punti/pips. Imposta Stop Loss a 0 per disabilitarlo. TakeProfit Valore Intero Imposta il valore di take profit in punti/pips. Imposta Take Profit a 0 per disabilitarlo. Risk_In_Money_Type FixedMoney, BalancePercentage FixedMoney: Chiude tutte le operazioni aperte quando le perdite fluttuanti raggiungono l'importo specificato. BalancePercentage: Calcola automaticamente in base al tuo saldo e chiude tutte le operazioni una volta raggiunto questo limite. Money_In_Risk Valore Intero Se Risk_In_Money_Type è impostato su FixedMoney, inserisci l'importo che sei disposto a perdere. Se impostato su BalancePercentage, l'EA calcolerà automaticamente il rischio in base al tuo saldo e chiuderà tutte le operazioni quando viene raggiunto quel limite. Max_Spread Valore Intero (Punti/Pips) Imposta lo spread massimo accettabile. Se lo spread attuale supera questo valore, l'EA non aprirà operazioni e attenderà il ritorno dello spread nei limiti specificati. Slippage Valore Intero (Punti/Pips) Imposta il massimo slippage consentito per l'esecuzione degli ordini. MaxOpenTrade Valore Intero Numero massimo di operazioni aperte consentite. Nota: Se riscontri malfunzionamenti o errori nel funzionamento dell'EA, rimuovi #property strict dal codice dell'EA alla riga 8. Buona fortuna e buon trading!

2025.03.19
RRS Randomness in Nature EA: Il Tuo Consulente per MetaTrader 4
MetaTrader4
RRS Randomness in Nature EA: Il Tuo Consulente per MetaTrader 4

Se stai cercando un EA davvero unico, il RRS Randomness in Nature potrebbe essere ciò che fa per te. Questo consulente non si basa su skill tecniche come indicatori, azioni di prezzo, eventi economici o pattern delle candele. Invece, seleziona casualmente coppie di valute, dimensioni dei lotti e tipi di ordine, portando una ventata di freschezza nelle tue operazioni. Anche se il suo funzionamento è basato sulla casualità, questo EA ha dimostrato di poter generare buoni profitti! Variabile Valori Descrizione Strategia di Trading OneSide, DoubleSide OneSide: L'EA effettuerà una sola operazione, che sia un acquisto o una vendita. DoubleSide: L'EA eseguirà sia un'operazione di acquisto che una di vendita. minLot_Size Valore Doppio Dimensione minima del lotto per garantire che la casualità non scenda sotto questo valore. maxLot_Size Valore Doppio Dimensione massima del lotto per garantire che la casualità non superi questo valore. StopLoss Valore Intero Imposta il tuo valore di stop loss in punti/pips (l'unità di movimento del prezzo più piccola per il tuo asset). Imposta lo Stop Loss a 0 per disattivarlo. TakeProfit Valore Intero Imposta il tuo valore di take profit in punti/pips. Imposta il Take Profit a 0 per disattivarlo. Trailing_Start Valore Intero (Pips) Specifica il numero di pips dal prezzo di apertura dell'operazione a partire dal quale deve iniziare il trailing. Imposta il Trailing Start a 0 per disattivarlo. Trailing_Gap Valore Intero (Pips) Imposta il gap in pips tra il prezzo di mercato attuale e lo stop loss mobile. Imposta il Trailing Gap a 0 per disattivarlo. Tipo di Rischio in Denaro FixedMoney, BalancePercentage FixedMoney: Chiude tutte le operazioni aperte quando la perdita flottante negativa raggiunge l'importo specificato. BalancePercentage: Calcola automaticamente in base al tuo saldo e chiude tutte le operazioni una volta raggiunto questo limite. Denaro a Rischio Valore Intero Se il Tipo di Rischio in Denaro è impostato su FixedMoney, inserisci l'importo che puoi permetterti di perdere. Se impostato su BalancePercentage, l'EA calcolerà automaticamente il rischio in base al tuo saldo e chiuderà tutte le operazioni quando verrà raggiunto quel limite. Max_Spread Valore Intero (Pips) Imposta lo spread massimo accettabile. Se lo spread attuale supera questo valore, l'EA non effettuerà operazioni e attenderà che lo spread torni nei limiti specificati. Slippage Valore Intero (Pips) Imposta il massimo slippage consentito per l'esecuzione degli ordini. Nota: Se riscontri malfunzionamenti o errori nel funzionamento dell'EA, rimuovi #property strict dal codice dell'EA alla riga 8. Buona fortuna e felice trading!

2025.03.19
RRS EA Non Direzionale: Il Tuo Alleato per MetaTrader 4
MetaTrader4
RRS EA Non Direzionale: Il Tuo Alleato per MetaTrader 4

Se stai cercando un Expert Advisor che non si affidi a tecniche di analisi complesse come indicatori o pattern di candlestick, sei nel posto giusto! Presentiamo il RRS EA Non Direzionale, un sistema di trading unico che si basa su strategie di trading multiple e impostazioni personalizzabili. Questo EA opera in modo casuale, aprendo posizioni secondo la strategia scelta, ma non lasciarti ingannare dalla sua semplicità: grazie a una corretta gestione del rischio, ha dimostrato di generare profitti. Strategie di Trading Offerte Variabile Valori Descrizione Strategia di Trading Hedge_Style, BuySell_Random, Buy_Sell, Auto_Swap, Buy_Order, Sell_Order Hedge_Style: Apre simultaneamente posizioni Buy e Sell. BuySell_Random: Apre casualmente una posizione Buy o Sell. Buy_Sell: Apre una posizione basata sul tipo di ordine chiuso precedentemente. Auto_Swap: Apre solo trades Buy o Sell in base alla direzione del swap positivo. Buy_Order: Apre solo posizioni Buy. Sell_Order: Apre solo posizioni Sell. Nuovo_Ordine Vero/Falso Vero: L'EA può effettuare operazioni. Falso: L'EA non aprirà alcun trade. Dimensione_Lotto Valore Doppio Seleziona la dimensione del lotto desiderata per ogni operazione eseguita dall'EA. Tipo_StopLoss Virtual_SL, Classic_SL Virtual SL: Chiude il trade quando il tuo stop loss è raggiunto, ma il livello non è visibile al server del broker. Classic SL: Imposta uno stop loss visibile sul server del broker. Questa funzione è utile se il tuo broker ha restrizioni sulle EAs molto attive. StopLoss Valore Intero Imposta il valore di stop loss in punti/pips (la più piccola unità di movimento di prezzo per il tuo asset).Imposta Stop Loss a 0 per disabilitarlo. Tipo_TakeProfit Virtual_TP, Classic_TP Virtual TP: Il livello di take profit non è visibile al server del broker. Classic TP: Il livello di take profit è visibile sul server del broker. TakeProfit Valore Intero Imposta il valore di take profit in punti/pips.Imposta Take Profit a 0 per disabilitarlo. Tipo_Trailing Virtual_Trailing, Classic_Trailing Virtual Trailing: Le modifiche dello stop loss rimangono sul tuo PC e non sono visibili al server del broker. Classic Trailing: Le modifiche dello stop loss vengono aggiornate direttamente sul server del broker. Questa funzione è utile se sospetti che il tuo broker stia cercando di attivare il tuo stop loss. Trailing_Inizio Valore Intero (Punti/Pips) Specifica il numero di pips dal prezzo di apertura del trade al quale deve iniziare il trailing. Trailing_Gap Valore Intero (Punti/Pips) Imposta il gap in pips tra il prezzo di mercato attuale e lo stop loss trailing.Imposta Trailing Gap a 0 per disabilitare l'operazione di trailing. Tipo_Rischio_In_Money FixedMoney, BalancePercentage Fixed Money: Chiude tutti i trade aperti quando il flottante negativo raggiunge l'importo specificato. Balance Percentage: Calcola automaticamente in base al tuo saldo e chiude tutti i trade una volta raggiunto il limite. Money_In_Risk Valore Intero Se Tipo_Rischio_In_Money è impostato su FixedMoney, inserisci l'importo che puoi permetterti di perdere. Se è impostato su BalancePercentage, l'EA calcolerà automaticamente il rischio in base al tuo saldo. Max_Spread Valore Intero (Punti/Pips) Imposta lo spread massimo accettabile. Se lo spread attuale supera questo valore, l'EA non aprirà alcun trade. Slippage Valore Intero (Punti/Pips) Imposta il massimo slippage consentito per l'esecuzione degli ordini. Nota Importante Se riscontri malfunzionamenti o errori nell'operatività dell'EA, ti consiglio di rimuovere #property strict dal codice dell'EA alla linea 6. Buona fortuna e felice trading!

2025.03.17
MeanReversionTrendEA: Il sistema di trading per MetaTrader 5
MetaTrader5
MeanReversionTrendEA: Il sistema di trading per MetaTrader 5

1. Panoramica MeanReversionTrendEA è un sistema di trading che unisce strategie di trend following e mean reversion, utilizzando le Medie Mobili e misurazioni di volatilità basate sull'ATR. Include un sistema di validazione delle operazioni per garantire un'esecuzione affidabile in diverse condizioni di mercato. 2. Caratteristiche principali Strategia Doppia: Combina il trend following (attraversamenti delle medie mobili) e la mean reversion (deviazioni di prezzo rispetto alle medie mobili). Segnali Adattivi: Utilizza medie mobili veloci e lente per identificare la direzione del trend. Integrazione della Volatilità: Incorpora l'ATR per misurare la volatilità di mercato per le entrate di mean reversion. Validator Integrato: Sistema di validazione delle operazioni che controlla volume, margine e livelli di stop. Meccanismo di Sicurezza: Include funzionalità di trading sicuro per la validazione dei backtest. Gestione Difensiva delle Posizioni: SL/TP fissi o proporzionali con valida verifica. Compatibile Multi-Asset: Funziona con forex, commodities, indici e azioni con dimensionamento dei lotti appropriato. 3. Come funziona Monitora gli attraversamenti delle medie mobili per cambiamenti nella direzione del trend. Misura le deviazioni di prezzo rispetto alla media mobile lenta utilizzando bande di volatilità basate sull'ATR. Genera segnali di acquisto quando la media mobile veloce supera quella lenta o il prezzo scende al di sotto della banda di volatilità. Genera segnali di vendita quando la media mobile veloce scende al di sotto di quella lenta o il prezzo supera la banda di volatilità. Valida ed esegue le operazioni con i corretti parametri di gestione del rischio. 4. Input Fast_MA_Period (20), Slow_MA_Period (50), ATR_Period (14) ATR_Multiplier (2.0) per il calcolo della banda di mean reversion LotSize (0.1) per dimensionare le posizioni SL_Points (500), TP_Points (1000) per la gestione del rischio Magic_Number (123456) per identificazione degli ordini 5. Note di utilizzo Ottimale per tutte le principali coppie di valute e strumenti liquidi. Funziona su tutti i timeframe, con H1-H4 raccomandati per una migliore qualità dei segnali. Richiede dati storici sufficienti per un corretto calcolo degli indicatori. Ideale per mercati in trend con occasionali opportunità di reversione. Un robusto sistema di validazione garantisce un'esecuzione adeguata tra i broker. 6. Struttura del codice CTradeValidator: Classe di validazione delle operazioni completa. Funzioni per l'inizializzazione degli indicatori e l'elaborazione dei dati. Generazione di segnali che unisce logica di trend e reversione. Esecuzione delle operazioni con corretta validazione e gestione del rischio. Meccanismi di sicurezza per l'integrità dei backtest. 7. Disclaimer Fornito così com'è per scopi educativi. Le performance passate non sono indicative dei risultati futuri. Testa ampiamente su conti demo prima di operare dal vivo.

2025.03.14
Dashboard Live per Monitorare più EA con Numeri Magici in MetaTrader 5
MetaTrader5
Dashboard Live per Monitorare più EA con Numeri Magici in MetaTrader 5

Analisi delle Strategie Individuali Quando gestisci più strategie su un unico conto, la sfida principale è quella di separare le performance di ciascuna. Senza i numeri magici, ti troveresti a dover fare affidamento su dettagli parziali o poco chiari come i commenti delle operazioni o le fasce di numeri dei ticket. I numeri magici offrono un’etichetta numerica sistematica che un EA applica automaticamente. Monitoraggio Preciso delle Performance Puoi identificare rapidamente quale sistema ha subito un drawdown o quale sta performando eccezionalmente. Questa conoscenza supporta decisioni più rapide, come ad esempio decidere di mettere in pausa un robot che non rende o allocare più capitale a una strategia vincente. Analisi e Registrazione Semplificate Invece di setacciare log o la scheda di storia, hai un’unica “pannello” che aggrega il profitto totale chiuso di ciascun EA, il numero di operazioni e i campi commento rilevanti. Questo aiuta nella gestione dei record, nell’ottimizzazione delle strategie e persino nei report per i clienti, se gestisci conti per altri.Codice completo allegato. Suggerimenti per l'Uso Allega lo Script/EA a qualsiasi grafico in MT5. Dopo la compilazione, verrà visualizzata immediatamente una tabella con ciascun numero magico. Controlla la Dimensione del Grafico: Se la finestra del tuo grafico è molto stretta, parte del testo potrebbe estendersi fuori dallo schermo a destra. Allarga il grafico o riduci la dimensione del carattere per una lettura più agevole. Abbina il Carattere: Si consiglia Courier New per l’allineamento delle colonne, ma puoi cambiarlo nel codice se preferisci un aspetto diverso. Regola i Tempi: Per impostazione predefinita, lo script si aggiorna ogni 5 secondi. Modifica EventSetTimer(5) se desideri aggiornamenti più frequenti o meno frequenti.

2025.02.25
Scarica la Storia Completa dei Tick di un Simbolo con MetaTrader 5
MetaTrader5
Scarica la Storia Completa dei Tick di un Simbolo con MetaTrader 5

Ciao a tutti, oggi voglio parlarvi di un Expert Advisor che può aiutarvi a scaricare tutti i tick disponibili per un simbolo specifico sul vostro conto di trading. Questo è particolarmente utile per chi desidera effettuare backtest dettagliati o creare grafici personalizzati a partire dai tick. Il codice di questo EA esplorerà la vostra lista di strumenti e scaricherà tutti i tick disponibili, fino a una data specifica. Ricordatevi che i terminali salveranno i tick nella cartella dei dati, quindi assicuratevi di avere spazio sufficiente sul disco rigido. Per facilitare il download dei simboli, abbiamo bisogno di un download manager. La struttura CDownloadManager conterrà tutte le informazioni necessarie per gestire il processo. struct CDownloadManager   {    bool m_started, m_finished;    string m_symbols[], m_current;    int m_index; } Lo stato del download (iniziato/finalizzato) La lista dei simboli da esaminare Il simbolo corrente L'indice del simbolo in esame In aggiunta, avremo bisogno di funzioni per leggere e scrivere sul disco rigido. Dato che lavoriamo con i simboli, creiamo due funzioni per gestire la scrittura e la lettura delle stringhe dai file binari. Funzione per salvare la stringa su file: void writeStringToFile(int f,string thestring)   {    // salva la stringa del simbolo    char sysave[];    int charstotal=StringToCharArray(thestring,sysave,0,StringLen(thestring),CP_ACP);    FileWriteInteger(f,charstotal,INT_VALUE);    for(int i=0;i<charstotal;i++)      {       FileWriteInteger(f,sysave[i],CHAR_VALUE);      } } Questa funzione riceve: Il manico del file f, di un file aperto per la scrittura con flag binario FILE_WRITE|FILE_BIN La stringa da scrivere nel file Scrive un intero che rappresenta la lunghezza della stringa e poi memorizza ciascun carattere della stringa. Funzione per caricare la stringa dal file: string readStringFromFile(int f)   {    string result="";    // carica la stringa del simbolo    char syload[];    int charstotal=(int)FileReadInteger(f,INT_VALUE);    if(charstotal>0)      {       ArrayResize(syload,charstotal,0);       for(int i=0;i<charstotal;i++)         {          syload[i]=(char)FileReadInteger(f,CHAR_VALUE);         }       result=CharArrayToString(syload,0,charstotal,CP_ACP);      }    return(result); } Questa funzione riceve: Il manico del file f di un file aperto per la lettura con flag binario, FILE_READ|FILE_BIN Legge un intero che rappresenta quanti caratteri ci si aspetta in quel punto del file. Procede quindi a leggere ciascun carattere in un array di char e poi crea una stringa da quell'array che viene restituita come risultato della lettura. Torniamo alla struttura CDownloadManager. Abbiamo bisogno di un modo per inizializzare il manager e riempirlo con i simboli dalla lista di strumenti: //+------------------------------------------------------------------+ //| Estrai i simboli dalla lista di strumenti | //+------------------------------------------------------------------+ void grab_symbols()    {     //! solo dalla lista di strumenti !     int s=SymbolsTotal(true);     ArrayResize(m_symbols,s,0);     for(int i=0;i<ArraySize(m_symbols);i++)       {          m_symbols[i]=SymbolName(i,true);       }   } Abbastanza semplice: Chiediamo quanti simboli ci sono nella lista di strumenti (attivi) Ridimensioniamo il nostro array m_symbols per riceverli Iteriamo attraverso i simboli totali e richiediamo il nome di ciascun simbolo Ora siamo responsabili anche della gestione del download dei dati dei simboli, quindi avremo bisogno di una funzione che essenzialmente gestisca il processo: //+------------------------------------------------------------------+ //| Gestisci il processo di download dei simboli | //+------------------------------------------------------------------+ void manage(string folder,string filename)    {     // essenzialmente inizia o naviga al simbolo successivo     // se impostato     if(ArraySize(m_symbols)>0)     {       // se non iniziato       if(!m_started)          {         m_started=true;         // vai al primo simbolo         m_current=m_symbols[0];         m_index=1;         save(folder,filename);         if(_Symbol!=m_current)           {             ChartSetSymbolPeriod(ChartID(),m_current,_Period);           }         else           {             ENUM_TIMEFRAMES new_period=PERIOD_M1;             for(int p=0;p<ArraySize(TFS);p++)              {                 if(_Period!=TFS[p])                 {                      new_period=TFS[p];                     break;                 }                 }             ChartSetSymbolPeriod(ChartID(),m_current,new_period);             }         return;      }       // se iniziato      else      {         m_index++;         if(m_index<=ArraySize(m_symbols))           {             m_current=m_symbols[m_index-1];             save(folder,filename);             if(_Symbol!=m_current)              {                 ChartSetSymbolPeriod(ChartID(),m_current,_Period);              }             return;       }       else       {          m_finished=true;          FileDelete(folder+"\"+filename);          Print("Finito");          ExpertRemove();          return;       }     }     else     {         Print("Per favore, estrai prima i simboli");     }     } Come funziona il sistema: Il grafico si apre, abbiamo bisogno di un grafico, e viene impostato un timer. Quel timer viene eseguito, annulliamo il timer Controlliamo se si tratta di un nuovo download o di un download continuato Se è un nuovo download, lo impostiamo estraendo tutti i simboli Se è un download continuato, scarichiamo i dati per il simbolo corrente Questa è la parte del codice che gestisce il download temporizzato: //+------------------------------------------------------------------+ //| Timer | //+------------------------------------------------------------------+ void OnTimer()   {    //--- se sincronizzato    if(SymbolIsSynchronized(_Symbol)&&TerminalInfoInteger(TERMINAL_CONNECTED)==1)      {       EventKillTimer();       //--- carica il sistema qui       if(MANAGER.load(MANAGER_FOLDER,MANAGER_STATUS_FILE))         {         //--- sistema caricato, stiamo processando un simbolo         Comment("Sistema caricato e stiamo processando "+MANAGER.m_current);         //--- caricamento dei tick         //--- trova il tick più vecchio disponibile presso il broker         int attempts=0;         int ping=-1;         datetime cursor=flatten(TimeTradeServer());         long cursorMSC=((long)cursor)*1000;         long jump=2592000000;//60*60*24*30*1000;         MqlTick receiver[];         long oldest=LONG_MAX;         Comment("Attendere prego");         while(attempts<5)          {             ping=CopyTicks(_Symbol,receiver,COPY_TICKS_ALL,cursorMSC,1);             if(ping==1)               {                  if(receiver[0].time_msc==oldest)                  {                    attempts++;                  }                else                  {                    attempts=0;                  }                if(receiver[0].time_msc<oldest)                  {                   oldest=receiver[0].time_msc;                  }                cursorMSC-=jump;                if(limitDate&&receiver[0].time<=oldestLimit)                  {                   break;                  }               }             else               {                attempts++;               }             Sleep(44);             Comment("Tick più vecchio: "+TimeToString((datetime)(oldest/1000),TIME_DATE|TIME_MINUTES|TIME_SECONDS)+"\nCursore("+TimeToString((datetime)(cursorMSC/1000),TIME_DATE|TIME_MINUTES|TIME_SECONDS)+")\nTentativi("+IntegerToString(attempts)+")\nAttendere la risposta...");          }         //--- a questo punto abbiamo il tick più vecchio         //--- inizia a richiedere i tick dal più vecchio al più nuovo         if(oldest!=LONG_MAX)          {             ArrayFree(receiver);             datetime newest_tick=0;             //--- ricevi il tempo dell'ultimo tick per questo simbolo memorizzato in symbol_time             datetime most_recent_candle=(datetime)SymbolInfoInteger(_Symbol,SYMBOL_TIME);             while(newest_tick<most_recent_candle)               {               //--- richiedi un nuovo lotto partendo dal tempo più vecchio con il limite di tick specificato                int pulled=CopyTicks(_Symbol,receiver,COPY_TICKS_ALL,oldest,tick_packets);                if(pulled>0)                  {                   //--- se estraiamo un nuovo lotto aggiorniamo i tempi scaricati                   newest_tick=receiver[pulled-1].time;                   oldest=receiver[pulled-1].time_msc;                   ArrayFree(receiver);                  }                //--- timeout delle richieste al server, alteralo se vuoi                Sleep(44);                Comment("Estratti fino a "+TimeToString(newest_tick,TIME_DATE|TIME_MINUTES|TIME_SECONDS)+" fino ad ora");           }       }       else        {         Alert("Chiudi il terminale vai alla cartella dei tick e cancella le cartelle vuote");         ExpertRemove();       }       //--- aggiorna il manager e passa oltre      MANAGER.manage(MANAGER_FOLDER,MANAGER_STATUS_FILE);     }     else     {       //--- estrai i simboli dalla lista di strumenti per iniziare il download       Comment("Estraendo MW e avviando");        MANAGER.grab_symbols();        MANAGER.manage(MANAGER_FOLDER,MANAGER_STATUS_FILE);     }   }

2025.02.22
Primo Precedente 1 2 3 4 5 6 7 8 9 Successivo Ultimo