Tutorial di programmazione - pagina 6

 

Incredibile bot di trading breakout alto / basso in mql5! | Parte 1



Incredibile bot di trading breakout alto / basso in mql5! | Parte 1

Toby, in questo video voglio presentarti un nuovo progetto che prevede l'utilizzo di alti e bassi per creare una strategia di breakout redditizia. L'idea principale è identificare i prezzi più alti e più bassi del simbolo corrente e utilizzare questi livelli per determinare potenziali punti di breakout. Diamo un'occhiata al grafico per capire come funziona.

Per cominciare, osserviamo le ultime n barre e identifichiamo i prezzi più alti e più bassi. Se il prezzo supera il livello massimo, prendiamo una posizione di acquisto. Al contrario, se il prezzo scende al di sotto del livello minimo, prendiamo una posizione di vendita. È un concetto semplice, ma lo miglioreremo aggiungendo livelli di stop loss e take profit in punti. Inoltre, implementeremo filtri per perfezionare la strategia ed evitare di fare trading su ogni massimo e minimo.

Aspettiamo un'opportunità di trading per dimostrare il concetto. Qui abbiamo una posizione di vendita poiché il prezzo è sceso al di sotto del livello basso e abbiamo chiuso l'operazione con un profitto. Questo serve come base di base per la nostra strategia e possiamo migliorarla ulteriormente incorporando componenti aggiuntivi.

Ora passiamo al Meta Editor e iniziamo a programmare. Creeremo un nuovo file nella cartella YouTube e lo chiameremo "Toby's Breakout EA". Nel file, definiremo gli input necessari per il nostro EA. Questi includono il numero magico, la dimensione del lotto, il numero di barre da considerare, lo stop loss e il take profit. Imposteremo valori predefiniti appropriati e forniremo commenti per spiegare ogni input.

Successivamente, passeremo alla funzione onInit, dove controlleremo gli input dell'utente per assicurarci che siano validi. Creeremo una funzione separata chiamata checkInputs per gestire questa convalida. Se uno qualsiasi degli input non è corretto, visualizzeremo un messaggio di errore e impediremo l'avvio di EA.

All'interno della funzione onInit, imposteremo anche il numero magico del nostro oggetto commerciale utilizzando l'input fornito. Questo ci permetterà di filtrare e gestire successivamente le posizioni aperte dal nostro EA.

Esaminiamo ora la funzione onTick. Inizieremo salvando il tick corrente ei valori del tick precedente. Questo ci aiuterà a tenere traccia dei movimenti dei prezzi e determinare se attraversiamo livelli importanti. Useremo la funzione SymbolInfoTick per recuperare il tick corrente e, se si verifica un errore, visualizzeremo un messaggio di errore e fermeremo l'EA.

Successivamente, includeremo tre funzioni personalizzate: countOpenPositions, normalizePrice e closePositions. Queste funzioni ci aiuteranno a gestire le nostre posizioni, contare il numero di posizioni aperte, normalizzare i prezzi e chiudere le posizioni quando necessario.

Tornando alla funzione onTick, inizieremo contando le posizioni aperte sia in acquisto che in vendita. Se si verifica un errore durante questo processo, interromperemo l'EA senza visualizzare un messaggio di errore poiché è già gestito nella funzione personalizzata. Verificheremo quindi se ci sono posizioni di acquisto aperte e se il livello alto non è zero. Ciò garantisce che abbiamo impostato il livello alto e che non ci sono posizioni di acquisto esistenti.

Da qui, possiamo continuare a codificare la logica della strategia di breakout. Implementeremo controlli simili per le posizioni di vendita e il livello basso. Queste dichiarazioni if ci aiuteranno a determinare se assumere una posizione di acquisto o vendita in base al breakout dei rispettivi livelli.

Una volta stabilita una struttura di base, possiamo migliorare ulteriormente la strategia aggiungendo più componenti e filtri. Ciò può includere parametri e condizioni di input aggiuntivi per perfezionare i segnali di trading e migliorare le prestazioni complessive.

Questo copre il processo di codifica iniziale. Seguendo questi passaggi, possiamo creare un breakout EA basato su alti e bassi, che può servire come punto di partenza per ulteriori sviluppi e ottimizzazioni.

L'algoritmo:

  1. Innanzitutto, definiamo i livelli ai quali vogliamo aprire e chiudere le posizioni: il livello alto e il livello basso.
  2. Inizializziamo le variabili per tenere traccia del numero di posizioni aperte di acquisto e vendita (count_buy e count_sell).
  3. In ogni tick del mercato, recuperiamo i dati del tick precedente, inclusi i prezzi bid e ask.
  4. Per verificare la presenza di una potenziale posizione di acquisto, confrontiamo il prezzo richiesto del tick precedente con il livello più alto. Se il prezzo richiesto è maggiore del livello alto e non ci sono posizioni di acquisto aperte, apriamo una posizione di acquisto utilizzando la dimensione del lotto specificata, stop loss e take profit. Incrementiamo la variabile count_buy e mostriamo un messaggio che indica che è stata aperta una posizione di acquisto.
  5. Per verificare la presenza di una potenziale posizione di vendita, confrontiamo il prezzo bid del tick precedente con il livello basso. Se il prezzo di offerta è inferiore al livello basso e non ci sono posizioni di vendita aperte, apriamo una posizione di vendita utilizzando la dimensione del lotto specificata, stop loss e take profit. Incrementiamo la variabile count_sell e mostriamo un messaggio che indica che è stata aperta una posizione di vendita.
  6. Dobbiamo anche prendere in considerazione la possibilità di chiudere le posizioni, se necessario. Se sono presenti posizioni di acquisto aperte e il prezzo richiesto del tick precedente scende al di sotto del livello massimo, chiudiamo tutte le posizioni di acquisto. Diminuiamo la variabile count_buy e mostriamo un messaggio che indica che una posizione di acquisto è stata chiusa.
  7. Allo stesso modo, se ci sono posizioni di vendita aperte e il prezzo denaro del tick precedente supera il livello minimo, chiudiamo tutte le posizioni di vendita. Diminuiamo la variabile count_sell e mostriamo un messaggio che indica che una posizione di vendita è stata chiusa.

L'algoritmo controlla continuamente i potenziali punti di ingresso e di uscita in base ai prezzi bid e ask in relazione ai livelli massimo e minimo predefiniti. Apre posizioni quando le condizioni sono soddisfatte e chiude posizioni quando i prezzi si muovono nella direzione opposta.

Stunning high / low breakout trading bot in mql5! | Part 1
Stunning high / low breakout trading bot in mql5! | Part 1
  • 2023.02.09
  • www.youtube.com
Today I will show you how to code a simple high / low breakout trading bot for Metatrader 5. In this first part we will calculate the high and low level. Th...
 

Bot di trading breakout alto/basso mql5 | Parte 2



Bot di trading breakout alto/basso mql5 | Parte 2

In questo video, continuiamo a lavorare sulla nostra Audi nera con rivestimento alto-basso. In seguito alla nostra sessione precedente, incorporeremo ora la logica di trading e introdurremo alcuni componenti aggiuntivi. Per iniziare, calcoleremo lo stop loss per le nostre posizioni. Se l'input di stop loss è zero, impostiamo la variabile "SL" a zero, indicando che non c'è stop loss. Altrimenti, lo impostiamo sul prezzo di offerta corrente meno lo stop loss di input moltiplicato per il valore in punti.

Successivamente, calcoliamo il take profit. Se l'input del take profit è zero, impostiamo la variabile "TP" a zero. Altrimenti, lo impostiamo sull'attuale prezzo ask più l'input take profit moltiplicato per il valore in punti. Per garantire valori di prezzo coerenti, normalizziamo lo stop loss e il take profit utilizzando la funzione "prezzo normalizzato".

Con la logica commerciale in atto, utilizziamo l'oggetto commerciale, che è stato dichiarato in precedenza utilizzando la classe cTrade, per aprire posizioni. Per una posizione di acquisto, utilizziamo il simbolo corrente, inseriamo i lotti per la dimensione del lotto, il prezzo di offerta corrente per il prezzo, la variabile stop loss per lo stop loss e la variabile take profit per il take profit. Allo stesso modo, per una posizione di vendita, utilizziamo l'attuale prezzo ask per il prezzo. Per differenziare questa posizione dalle altre, aggiungiamo un commento che indica che appartiene al nostro consulente esperto "High-Low Record EA".

Dopo aver compilato il codice, passiamo a MetaTrader per il test. Abbiamo allestito un test visivo, specificando la tempistica e il periodo. Con gli input predefiniti, eseguiamo il test e osserviamo i valori alto e basso. Utilizzando la modalità "Open Price Only", possiamo vedere le posizioni aperte quando viene superato il livello alto o basso. Nel passaggio successivo, cambiamo la modalità tick dell'EA per agire solo sui tick aperti. Ciò fornisce un ambiente di test più affidabile e veloce per la creazione di sistemi stabili.

Andando avanti, implementiamo un filtro indice per impedire il trading su punti estremi all'inizio o alla fine del periodo di ricerca. Introduciamo un input chiamato "Filtro indice", che rappresenta la percentuale di barre all'interno del periodo di ricerca che devono essere filtrate. Ad esempio, se il periodo di ricerca è di 50 barre e il filtro indice è impostato su 10, i punti estremi all'interno delle prime cinque o delle ultime cinque barre verranno filtrati. Per visualizzare questo intervallo, disegniamo un rettangolo sul grafico. Aggiungiamo le variabili globali necessarie, impostiamo i loro valori iniziali e apportiamo modifiche nella funzione "OnTick" per calcolare gli indici alto e basso usando le funzioni "I Highest" e "I Lowest".

Inoltre, aggiorniamo la funzione "CheckInputs" per includere l'input "Index Filter" e convalidarne il valore. Creiamo anche una nuova funzione chiamata "CheckIndexFilter" che verifica se un punto estremo deve essere filtrato in base all'indice e alle impostazioni del filtro. Per completare l'implementazione, compiliamo il codice e procediamo a un test visivo. Verifichiamo se le posizioni vengono aperte solo quando i punti estremi sono all'interno dell'intervallo definito, come da filtro indice. Nel segmento seguente, abbiamo in programma di modificare la modalità tick di EA per soddisfare meglio le nostre esigenze. Passeremo alla modalità open tick, consentendo all'EA di operare esclusivamente su tick aperti, migliorando l'affidabilità e l'efficienza del sistema.

Dopo aver modificato la modalità tick per aprire la modalità tick, procediamo con ulteriori miglioramenti al nostro EA. Uno dei miglioramenti che faremo è l'aggiunta di un filtro temporale. Per implementare il filtro temporale, introduciamo due nuovi input: "Start Hour" e "End Hour". Questi input ci consentono di specificare l'intervallo di tempo durante il quale il trading dovrebbe essere consentito. Ad esempio, se impostiamo l'ora di inizio alle 8 e l'ora di fine alle 18, l'EA aprirà posizioni solo tra le 8:00 e le 18:00. Per incorporare il filtro temporale, aggiorniamo la funzione "CheckInputs" per convalidare i nuovi input e garantire che l'ora di inizio sia inferiore all'ora di fine. Modifichiamo anche la funzione "OnTick" per controllare l'ora corrente rispetto all'intervallo specificato prima di aprire le posizioni.

Con il filtro temporale in atto, compiliamo il codice ed eseguiamo un test visivo per verificare che le posizioni siano aperte solo entro l'intervallo di tempo specificato. Successivamente, passiamo a un altro miglioramento: l'aggiunta di un filtro di diffusione. Il filtro spread ci consente di definire uno spread massimo consentito, oltre il quale l'EA si asterrà dall'aprire posizioni. Per implementare il filtro spread, introduciamo un nuovo input chiamato "Max Spread". Nella funzione "OnTick", includiamo un controllo per garantire che lo spread corrente rientri nell'intervallo consentito prima dell'apertura delle posizioni.

Aggiorniamo anche la funzione "CheckInputs" per convalidare l'input "Max Spread" e assicurarci che sia un valore positivo. Una volta implementato il filtro spread, compiliamo il codice ed eseguiamo un test visivo per confermare che le posizioni vengono aperte solo quando lo spread è inferiore al massimo specificato. Infine, introduciamo una funzione per tenere traccia e visualizzare il numero di posizioni aperte sul grafico. Creiamo una nuova variabile globale chiamata "Position Count" e la inizializziamo a zero. Nella funzione "OnTick", incrementiamo il conteggio della posizione ogni volta che viene aperta una posizione.

Per visualizzare il conteggio delle posizioni sul grafico, utilizziamo la funzione "ObjectSetText" per creare un oggetto di testo che mostri il conteggio corrente. Aggiorniamo l'oggetto di testo con l'ultimo valore di conteggio su ogni tick. Una volta compilato il codice, eseguiamo un test visivo per osservare il conteggio delle posizioni visualizzato sul grafico e assicurarci che rifletta accuratamente il numero di posizioni aperte.

Con questi miglioramenti implementati, abbiamo notevolmente migliorato la funzionalità e le prestazioni del nostro EA. Il filtro temporale, il filtro spread e la visualizzazione del conteggio delle posizioni forniscono un maggiore controllo e visibilità sul processo di trading.

Nel prossimo video, esploreremo ulteriori ottimizzazioni e tecniche di messa a punto per migliorare ulteriormente le prestazioni del nostro EA.

High / low breakout trading bot mql5 | Part 2
High / low breakout trading bot mql5 | Part 2
  • 2023.02.12
  • www.youtube.com
Today I will show you how to code a simple high / low breakout trading bot for Metatrader 5. In this second part we will code the trade logic to open positi...
 

Incredibile bot di trading breakout alto / basso mql5 | Parte 3



Incredibile bot di trading breakout alto / basso mql5 | Parte 3

Nel video di oggi, Toby continua lo sviluppo dell'EA di breakout high-low per MK5. Introduce due nuovi componenti alla strategia ed esegue anche più backtest alla fine.

Toby inizia compilando l'EA per assicurarsi che funzioni. Quindi aggiunge un input per un trailing stop loss per migliorare l'efficacia della strategia come sistema di breakout e trend following. L'ingresso è una variabile booleana che può essere attivata o disattivata. Toby crea anche una funzione chiamata "updateStopLoss" per calcolare e aggiornare i valori di stop loss per ogni posizione.

Per implementare il trailing stop loss, Toby copia la funzione "updatePosition" da un altro EA e la modifica di conseguenza. Aggiunge un parametro per la distanza di stop loss e regola il calcolo del nuovo valore di stop loss in base a questo input. Incorpora anche una funzione chiamata "normalizedPrice" per garantire che il valore di stop loss sia normalizzato. Dopo aver apportato queste modifiche, Toby compila nuovamente il codice per assicurarsi che non vi siano errori.

Successivamente, Toby passa alla funzione "OnTick", dove integra la funzione "updateStopLoss". Aggiunge un'istruzione if per verificare se il trailing stop loss è attivo e, in tal caso, chiama la funzione "updateStopLoss" per tracciare i valori di stop loss. Assicura inoltre che la funzione venga applicata sia alle posizioni di acquisto che a quelle di vendita.

Dopo aver compilato il codice, Toby procede ad aggiungere alla strategia il componente successivo, un filtro di dimensione. Il filtro dimensione consente di filtrare i canali in cui i valori alto e basso sono troppo distanti, indicando un intervallo più ampio. Toby aggiunge un input per il filtro della dimensione in punti e regola il codice di conseguenza per verificare se la dimensione del canale supera il limite specificato. Incorpora anche il filtro delle dimensioni nella visualizzazione delle linee alte e basse.

Toby esegue quindi un test visivo utilizzando lo Strategy Tester per confermare che sia il trailing stop loss che il filtro delle dimensioni funzionino correttamente. Osserva il comportamento dello stop loss e i cambiamenti di colore nelle linee in base alla condizione del filtro di dimensione.

Nella parte finale del video, Toby esegue dei backtest per valutare la performance dell'EA negli ultimi 10 anni. Imposta i criteri di ottimizzazione come fattore di recupero e utilizza un simbolo e un intervallo di tempo specifici. Toby prevede di utilizzare gli anni rimanenti come test fuori campione.

Toby apporta diversi miglioramenti all'EA di breakout alto-basso, inclusa l'aggiunta di un trailing stop loss e un filtro di dimensione. Dimostra anche come condurre backtest per valutare le prestazioni di EA.

Amazing high / low breakout trading bot mql5 | Part 3
Amazing high / low breakout trading bot mql5 | Part 3
  • 2023.02.16
  • www.youtube.com
Today I will show you how to code a simple high / low breakout trading bot for Metatrader 5. In this third part we will code a trailing stop loss and add a ...
 

Codifichiamo l'ultimo modello di candelabro EA in mql5! | Parte 1



Codifichiamo l'ultimo modello di candelabro EA in mql5! | Parte 1

Ehi, questo è Toby, e in questo video, sto iniziando un nuovo progetto di programmazione EA sul mio canale. Ci concentreremo sui modelli Candlestick e creeremo un EA in grado di scambiare vari modelli come Doji, Morning Star, Rising Star e molti altri. L'EA avrà anche un pannello per visualizzare diverse condizioni. Ho già condotto alcuni test preliminari con l'EA e i risultati sono stati piuttosto interessanti, specialmente su diversi simboli. Credo che questo approccio possa portare a una strategia altamente efficace. Immergiamoci!

Prima di iniziare a codificare l'EA, discutiamo l'idea di strategia generale. È fondamentale capire cosa miriamo a creare man mano che avanziamo. Per illustrare il concetto, ho creato un semplice diagramma. Il nostro EA funzionerà esclusivamente con il prezzo aperto di ogni barra. Ad esempio, consideriamo la barra corrente (indice 0) e la barra precedente (indice 1). Vogliamo creare un EA in grado di scambiare vari modelli grafici o modelli Candlestick, come Doji, Morning Star, Evening Star, Rising Star e molti altri.

Per raggiungere questo obiettivo, definiremo diverse condizioni. Ad esempio, possiamo impostare una condizione in cui il prezzo massimo della barra 2 deve essere superiore al prezzo massimo della barra 1. Un'altra condizione potrebbe essere che il prezzo di apertura della barra 3 deve essere inferiore al prezzo di chiusura della barra 3, indicando un candela rialzista. Combinando queste condizioni, possiamo attivare un'operazione di acquisto all'apertura della barra successiva. Possiamo applicare condizioni simili al contrario per i segnali di vendita.

Inoltre, voglio considerare non solo i prezzi di apertura, massimo, minimo e chiusura di ogni candeliere, ma anche altri fattori come la dimensione della gamma o la dimensione del corpo. Ad esempio, possiamo calcolare la dimensione del corpo dividendola per la portata totale del Candeliere. Questo calcolo può aiutarci a identificare le barre Doji. Possiamo persino impostare valori specifici, come richiedere una dimensione corporea superiore a 50 punti. Con queste opzioni, possiamo creare e testare vari modelli utilizzando un singolo EA. Promette di essere un viaggio emozionante!

Ora passiamo al MetaEditor e iniziamo a programmare. Ma prima di iniziare, vorrei il tuo feedback. Se trovi utili questi video e vorresti dormire bene stanotte, lascia un mi piace. Inoltre, sto valutando la possibilità di passare dalla modalità oscura allo sfondo bianco predefinito. Creerò un sondaggio per farti votare la tua preferenza. Fammi sapere nei commenti se riesci a leggere tutto correttamente in modalità oscura.

Va bene, iniziamo a programmare! Nel MetaEditor, creerò un nuovo EA nella mia cartella YouTube. Lo chiamerò "Candle Pattern EA". Inizieremo con un modello pulito, rimuovendo i commenti non necessari e organizzando la struttura del codice. Dopo aver compilato e verificato che non ci siano errori, procederemo con i passaggi successivi.

Definiremo alcuni parametri chiave nella sezione degli input, come il numero magico, che dovrebbe essere un identificatore univoco per questo EA per evitare conflitti con altri EA in esecuzione sulla stessa istanza MetaTrader. Assegniamogli un numero casuale.

Questo copre la configurazione iniziale e i parametri di input. Ora siamo pronti per passare alla parte successiva. Rimani sintonizzato!

Let's code the ultimate candlestick pattern EA in mql5! | Part 1
Let's code the ultimate candlestick pattern EA in mql5! | Part 1
  • 2023.03.01
  • www.youtube.com
Today I will show you how to code a candlestick pattern trading bot for Metatrader 5. In this first part we will create the conditions for the candlestick pa...
 

Modello di candeliere EA in mql5! | Parte 2



Modello di candeliere EA in mql5! | Parte 2

Nel video di oggi, sono Toby e continueremo a codificare il nostro semplice Expert Advisor (EA) del modello Candlestick in MetaTrader 5. Siamo ora nella seconda parte di questa serie di codifica, quindi se ti sei perso la prima parte in cui ho ha spiegato l'idea della strategia in modo più dettagliato, puoi trovare il link a quel video qui. Prima di iniziare a programmare, voglio condividere i risultati di un recente sondaggio che ho condotto su YouTube sul tema del colore preferito per la registrazione dei video. Su 140 voti, la maggioranza delle persone (90) ha preferito lo sfondo scuro, mentre 50 persone hanno preferito lo sfondo bianco. Personalmente trovo che lo sfondo scuro sia più piacevole per gli occhi e lo uso anche per registrare i miei EA.

Un'altra cosa che volevo menzionare è che di recente ho installato Visual Studio Code per MQL5. Se sei interessato a utilizzare Visual Studio Code per i tuoi progetti di codifica, fammelo sapere nei commenti e farò un video a riguardo.

Ora, torniamo a codificare il nostro EA. Nel video precedente, abbiamo interrotto gli input per la condizione uno. Ora creeremo un'altra condizione e aggiungeremo un input per la seconda condizione. Copiamo la sezione per la condizione uno e la rinominiamo in condizione due, apportando le modifiche necessarie alle variabili di input. Per ora, lo manterremo semplice con solo due condizioni, ma possiamo aggiungerne altre in futuro. Dopo aver apportato queste modifiche, compileremo il codice per assicurarci che non ci siano errori o avvisi.

Alcuni spettatori hanno richiesto un aumento della dimensione del carattere per una migliore leggibilità. Anche se preferisco vedere più codice sullo schermo, capisco la necessità di caratteri di dimensioni maggiori. Tuttavia, per ora, continueremo con la dimensione del carattere corrente. Se necessario, posso apportare modifiche in futuro.

Successivamente, collegheremo gli input al nostro array di condizioni, che abbiamo creato nella sezione delle variabili globali. Creeremo una funzione personalizzata chiamata "setInputs" per ottenere questo risultato. Questa funzione verrà chiamata prima di controllare gli input. Dopo aver scritto il codice per la funzione setInputs, compileremo nuovamente il codice per verificarne la correttezza.

Andando avanti, controlleremo gli input per assicurarci che soddisfino i criteri richiesti. Useremo un'istruzione if per ogni input per eseguire i controlli necessari. Se un input viene ritenuto non valido, visualizzeremo un avviso per l'utente e restituiremo false dalla funzione checkInputs. Inizieremo controllando il numero magico, assicurandoci che non sia inferiore o uguale a zero. Quindi procederemo a controllare la dimensione del lotto, fermare la perdita e prendere gli input di profitto. Inoltre, dovremo aggiungere un controllo per l'array condition, di cui parleremo in seguito.

Per rendere il codice più modulare, useremo una funzione setInputs per impostare il numero magico per il nostro oggetto commerciale. Ciò sarà utile durante la ricerca di posizioni o la gestione di operazioni relative al commercio. Dopo aver apportato questa modifica, compileremo nuovamente il codice per confermarne l'accuratezza.

Passiamo ora alla funzione onTick, dove si svolgono le principali operazioni di EA. In primo luogo, controlleremo se il tick corrente è un tick di barra aperta utilizzando la nostra funzione isNewBar. Se restituisce false, indicando che non si tratta di un segno di spunta aperto, torneremo semplicemente e aspetteremo il segno di spunta successivo.

Successivamente, otterremo il segno di spunta del simbolo corrente. Ciò fornirà l'accesso a bid, ask e altre informazioni relative al tick. Useremo la funzione SymbolInfoTick e memorizzeremo il risultato in una variabile. Se questa operazione fallisce, visualizzeremo un messaggio che indica l'errore e il ritorno dalla funzione onTick.

Successivamente, conteremo le posizioni aperte utilizzando la nostra funzione countOpenPositions. Questo ci darà il numero di posizioni di acquisto e vendita aperte al momento attuale. Se questa operazione fallisce, verrà visualizzato un messaggio di errore che indica l'errore e il ritorno dalla funzione onTick.

Dopo aver ottenuto il conteggio delle posizioni aperte, verificheremo se ci sono posizioni aperte. Se ci sono, visualizzeremo un messaggio che indica il numero di posizioni aperte. Altrimenti, procederemo al passaggio successivo.

Ora passeremo in rassegna ogni posizione aperta usando un ciclo for. All'interno del ciclo, recupereremo le informazioni sulla posizione utilizzando la funzione PositionGetTicket. Memorizzeremo il numero del ticket in una variabile e visualizzeremo un messaggio con il numero del ticket a scopo di debug.

Successivamente, controlleremo il tipo di posizione (acquisto o vendita) utilizzando la funzione PositionGetInteger e la proprietà POSITION_TYPE. Se la posizione è una posizione di acquisto, eseguiremo il codice necessario per le posizioni di acquisto. Allo stesso modo, se la posizione è una posizione di vendita, eseguiremo il codice per le posizioni di vendita.

Per le posizioni di acquisto, verificheremo se il prezzo di offerta corrente è inferiore al livello di stop loss della posizione. In tal caso, visualizzeremo un messaggio che indica che il livello di stop loss è stato raggiunto e chiuderemo la posizione utilizzando la funzione PositionClose.

Allo stesso modo, per le posizioni di vendita, verificheremo se l'attuale prezzo di domanda è superiore al livello di stop loss della posizione. In tal caso, visualizzeremo un messaggio che indica che il livello di stop loss è stato raggiunto e chiuderemo la posizione.

Dopo aver chiuso tutte le posizioni necessarie, passeremo alla fase successiva, che consiste nel controllare le nostre condizioni per determinare se sia il caso di aprire una nuova posizione. Useremo la funzione checkConditions per questo scopo. Se la funzione checkConditions restituisce true, indicando che tutte le condizioni sono soddisfatte, eseguiremo il codice necessario per aprire una nuova posizione. Altrimenti, continueremo al tick successivo.

Nel codice per l'apertura di una nuova posizione, imposteremo il volume, lo stop loss, il take profit e altri parametri necessari. Utilizzeremo la funzione OrderSend per inviare la richiesta di negoziazione e aprire la posizione. Se la richiesta di negoziazione va a buon fine, visualizzeremo un messaggio che indica l'avvenuta apertura della posizione. In caso contrario, verrà visualizzato un messaggio di errore.

Infine, compileremo il codice per assicurarci che non ci siano errori o avvisi e, se tutto va a buon fine, saremo pronti a testare il nostro EA su un account demo o live.

Questo conclude questo video. Nella parte successiva, continueremo a sviluppare il nostro EA aggiungendo funzionalità aggiuntive e perfezionando la nostra strategia. Se hai domande o suggerimenti, lasciali nei commenti qui sotto. Grazie per aver guardato e ci vediamo nel prossimo video!

Candlestick pattern EA in mql5! | Part 2
Candlestick pattern EA in mql5! | Part 2
  • 2023.03.05
  • www.youtube.com
Today I will show you how to code a candlestick pattern trading bot for Metatrader 5. This is a step by step coding tutorial for mql5.As an algo trader I dev...
 

Fantastico modello di candelabro EA in mql5! | Parte 3



Fantastico modello di candelabro EA in mql5! | Parte 3

In questo video, Toby si presenta e annuncia che l'obiettivo sarà continuare a sviluppare il modello Candlestick Expert Advisor (EA) in MetaTrader5. L'obiettivo è scrivere la logica di base necessaria per condurre il primo backtest e ottenere un risultato. Toby incoraggia gli spettatori a dare un'occhiata alle parti precedenti della serie se non l'hanno già fatto.

Toby apre il Meta Editor e inizia a codificare da dove si era interrotto nel video precedente. Spiega che hanno già implementato il codice per l'apertura di posizioni di acquisto e vendita, ma ora devono aggiungere i controlli delle condizioni. Per fare ciò, Toby prevede di creare una funzione personalizzata che può essere richiamata per verificare le condizioni sia per le operazioni di acquisto che per quelle di vendita.

Prima di iniziare il processo di codifica, Toby vuole assicurarsi che non ci siano errori nel codice esistente. Compila il codice per verificare la presenza di errori o avvisi.

Successivamente, Toby procede a scrivere la logica per la funzione personalizzata chiamata "condizioni di controllo". Questa funzione ripeterà ogni condizione usando un ciclo for. All'interno del ciclo, chiameranno un'altra funzione personalizzata chiamata "controlla una condizione" per valutare ogni singola condizione.

Toby crea la funzione "controlla una condizione", che prende i parametri per l'operazione di acquisto/vendita e l'indice della condizione da controllare. All'interno di questa funzione vengono eseguiti vari controlli, come determinare se la condizione è attiva. Se una condizione è inattiva, la funzione restituirà true, indicando che non è rilevante.

Per verificare le condizioni, Toby ha bisogno di ottenere i dati della barra. Dichiara una variabile di tipo mql rate, che è una struttura predefinita contenente i prezzi di apertura, massimo, minimo e chiusura. Impostano l'array rate come serie e usano la funzione copy rate per recuperare i dati necessari per le condizioni.

Dopo aver ottenuto con successo i dati della barra, Toby procede all'impostazione dei valori per le variabili A e B, che verranno utilizzate per confrontare e valutare le condizioni. I valori sono determinati in base alla modalità della condizione, ad esempio aperto, alto, basso, chiuso, intervallo, corpo, rapporto o valore. I valori vengono assegnati di conseguenza, tenendo conto se si tratta di un'operazione di acquisto o di vendita.

Una volta impostati i valori, Toby compila il codice per verificare eventuali errori o errori.

Toby ripete il processo per le condizioni della modalità B, apportando le modifiche necessarie a variabili e casi.

Infine, Toby conclude il video assicurandosi che non ci siano errori nel codice e sottolineando l'importanza di comprendere la logica del codice.

Awesome candlestick pattern EA in mql5! | Part 3
Awesome candlestick pattern EA in mql5! | Part 3
  • 2023.03.09
  • www.youtube.com
Today I will show you how to code a candlestick pattern trading bot for Metatrader 5. This is a step by step coding tutorial for mql5. With this EA you can t...
 

Risultati sorprendenti! Modello di candeliere EA in mql5! | Parte 4


Risultati sorprendenti! Modello di candeliere EA in mql5! | Parte 4

Ciao, sono Toby. Nel video di oggi, continueremo a codificare il consulente esperto (EA) del modello Candlestick. Abbiamo alcuni obiettivi specifici per questo video. Innanzitutto, aggiungeremo un pannello all'EA, che visualizzerà varie condizioni e i corrispondenti segnali di acquisto/vendita. Effettueremo anche ulteriori controlli di input per garantire la funzionalità di EA. Infine, condurremo alcuni backtest e condivideremo con voi alcuni risultati interessanti. Quindi iniziamo.

Prima di procedere, se non hai guardato le parti precedenti di questa serie di codifica del modello Candlestick, ti consiglio di verificarle prima. Puoi trovare i link nella descrizione.

In questo video inizieremo creando un pannello grafico per il nostro EA. Il pannello conterrà linee che rappresentano condizioni diverse, con croci che indicano segnali di acquisto e vendita. Se le condizioni sono soddisfatte, l'EA effettuerà operazioni nella direzione specificata. Inoltre, implementeremo controlli di input per facilitare l'ottimizzazione nel tester della strategia.

Per iniziare a codificare il pannello, apriremo il MetaEditor e navigheremo fino alla cartella include. All'interno della cartella include, creeremo una nuova cartella denominata YouTube. All'interno della cartella YouTube, creeremo il file del pannello grafico. Elimineremo il contenuto predefinito del file e includeremo i file necessari per il nostro pannello.

Successivamente, definiremo le etichette necessarie per il nostro pannello. Ogni etichetta rappresenterà un elemento specifico, come numero, condizione, acquisto, vendita, ecc. Creeremo anche matrici di etichette per visualizzare più righe per ogni condizione.

Dopo aver definito le etichette, procederemo alla codifica della classe Panel. Questa classe erediterà dalla classe CAppDialog, garantendoci l'accesso ai suoi membri. Creeremo una sezione privata per le etichette del pannello e alcuni metodi, tra cui un costruttore, un distruttore, onInit, update e bannerChartEvent.

Il costruttore inizializzerà il pannello, mentre il distruttore si occuperà della sua pulizia. Il metodo onInit verrà chiamato dalla funzione onInit di EA e creerà il pannello. Il metodo di aggiornamento verrà invocato ad ogni tick per aggiornare il contenuto del pannello. Infine, il metodo bannerChartEvent gestirà gli eventi relativi al pannello.

All'interno del metodo createPanel, creeremo il pannello vero e proprio con i parametri desiderati, come l'ID del grafico, il nome, la finestra secondaria e le coordinate. Ci assicureremo che il pannello sia stato creato correttamente e restituiremo true se lo è, o false in caso contrario.

Una volta codificata la classe del panel, la includeremo nel nostro file di expert advisor. Creeremo un'istanza dell'oggetto panel e chiameremo il suo metodo onInit dopo aver impostato il numero magico. Se la creazione del pannello fallisce, restituiremo un messaggio di errore appropriato.

Questo è tutto per questa parte della nostra serie di codifica del modello Candlestick. Nel prossimo video, continueremo ad aggiungere funzionalità al nostro EA ed eseguiremo ulteriori test. Resta sintonizzato per risultati più interessanti.

Surprising results! Candlestick pattern EA in mql5! | Part 4
Surprising results! Candlestick pattern EA in mql5! | Part 4
  • 2023.03.13
  • www.youtube.com
Today I will show you how to code a candlestick pattern trading bot for Metatrader 5. This is a step by step coding tutorial for mql5. With this EA you can t...
 

Codificare un criterio personalizzato in mql5



Codificare un criterio personalizzato in mql5

Ciao, questo è Toby. In questo video, dimostrerò come codificare criteri personalizzati per l'ottimizzazione di Expert Advisor in MQL5. Useremo la parentesi Hilo EA come esempio. L'obiettivo è creare un criterio personalizzato che consideri sia il fattore di profitto che il numero di operazioni nel classificare i risultati dell'ottimizzazione.

Per iniziare, apri il tuo EA nell'ambiente di codifica (come Visual Studio Code) e salvalo con un nuovo nome. Successivamente, aggiungi una funzione predefinita chiamata "OnTester" al tuo EA. Questa funzione calcolerà i criteri personalizzati e ne restituirà il valore. Puoi utilizzare la funzione "TestStatistics" per ottenere il numero di scambi e il fattore di profitto. Moltiplica questi due valori per calcolare i criteri personalizzati.

Compila il codice per assicurarti che non ci siano errori. Ora passa a MetaTrader ed esegui un'ottimizzazione. Seleziona il tuo EA e scegli "Custom Max" come criterio di ricerca ottimale per utilizzare i tuoi criteri personalizzati. Avvia l'ottimizzazione e attendi i risultati. Vedrai che i criteri personalizzati vengono calcolati in base al numero di operazioni moltiplicato per il fattore di profitto.

Se desideri regolare il peso del fattore di profitto, puoi utilizzare la funzione "MathPower" nel tuo codice. Ad esempio, puoi aumentare il fattore di profitto alla potenza di 4 per dargli più peso. Ricompila ed esegui nuovamente l'ottimizzazione per vedere la classifica aggiornata.

Inoltre, puoi aggiungere un'istruzione if al codice per escludere combinazioni con meno di 100 scambi. Se il numero di scambi è inferiore a 100, puoi restituire un valore pari a zero. Ciò garantisce che vengano prese in considerazione solo le combinazioni con un numero sufficiente di operazioni.

Seguendo questi passaggi, puoi creare i tuoi criteri personalizzati per classificare e selezionare i migliori risultati di ottimizzazione per il tuo Expert Advisor. Ricordati di salvare il tuo EA modificato con un nuovo nome prima di apportare modifiche. Se hai trovato utile questo video, lascia un mi piace e sentiti libero di condividere le tue richieste o idee per video futuri nei commenti. Grazie e ci vediamo nel prossimo video!

Code a custom criteria in mql5
Code a custom criteria in mql5
  • 2023.03.31
  • www.youtube.com
In this video I show you step by step how to code a custom criteria for the Metatrader 5 strategy tester. With a custom criterion, you can create your own ra...
 

Bot di trading stocastico in mql5! | Parte 1



Bot di trading stocastico in mql5! | Parte 1

In questo video, dimostrerò come codificare un semplice EA stocastico in MetaTrader 5. Verso la fine del video, eseguiremo anche il backtesting per valutare le prestazioni della strategia negli ultimi 10 anni.

Iniziamo con la comprensione dell'idea generale di strategia. Useremo l'indicatore stocastico, che è ampiamente conosciuto. L'EA eseguirà un'operazione di acquisto quando lo stocastico attraversa il livello inferiore e un'operazione di vendita quando attraversa il livello superiore. Osservando il grafico, è essenziale ricordare che il nostro cervello tende a concentrarsi sulle operazioni redditizie, quindi è fondamentale codificare e eseguire il backtest della strategia per valutarne l'efficacia.

Passiamo ora a Visual Studio Code per iniziare a codificare l'EA. Creeremo un nuovo file nella cartella YouTube utilizzando il MetaEditor predefinito e lo chiameremo "Stochastic EA". Quindi, apriremo il file in Visual Studio Code e apporteremo alcune modifiche alla formattazione per migliorare la leggibilità.

Organizzeremo il codice in sezioni e inizieremo con gli include. Abbiamo solo bisogno di includere un file, "trades.mqh", che contiene la classe CTrade. Successivamente, definiremo gli input per il nostro EA. Avremo una sezione generale per input come il numero magico e la dimensione del lotto, seguita da una sezione di trading per stop loss, take profit e chiusura di operazioni su un segnale opposto. Quindi, avremo una sezione di input specifica per l'indicatore stocastico, incluso il periodo K e il livello superiore.

Una volta definiti gli input, passeremo alla sezione delle variabili globali, dove dichiareremo le variabili per l'handle dell'indicatore stocastico, il buffer, il tick corrente e l'oggetto commerciale. Dopo le variabili globali, implementeremo la funzione onInit. Inizieremo controllando gli input dell'utente utilizzando la funzione checkInputs, che assicurerà che i valori di input rientrino nell'intervallo consentito. Se qualche input non è corretto, restituiremo "Parametri di init non corretti".

Successivamente, imposteremo il numero magico per l'oggetto commerciale utilizzando il valore di input fornito dall'utente. Quindi, creeremo l'handle dell'indicatore utilizzando la funzione stocastica incorporata, specificando il simbolo, il periodo, il periodo K, il periodo D (impostato su 1 per nessuna linea di segnale), il valore di rallentamento, il metodo MA (SMA) e il campo del prezzo (basso alto). Verificheremo se la creazione dell'handle dell'indicatore è andata a buon fine. Se restituisce un handle non valido, visualizzeremo un messaggio di avviso e restituiremo "Init non riuscito". Infine, imposteremo il buffer utilizzando la funzione arraySetAsSeries per indicare che si tratta di una serie temporale.

Successivamente, definiremo la funzione checkInputs, che verificherà la validità di ciascun input. Verificheremo se il numero magico e la dimensione del lotto rientrano nell'intervallo consentito e restituiremo falso se non lo sono. Inoltre, possiamo aggiungere ulteriori controlli, come garantire che la dimensione del lotto non sia maggiore di 10. Con la funzione onInit e la funzione checkInputs completate, ora possiamo compilare il codice e procedere con i passaggi successivi nel video.

La funzione è progettata per eseguire diversi passaggi. In primo luogo, recupera il tick corrente e lo memorizza nella variabile globale "CT". Quindi, procede all'ottenimento dei valori dell'indicatore utilizzando la funzione "CopyBuffer". La funzione verifica la presenza di errori e, in caso di successo, memorizza i valori nel buffer "Main". Se c'è un errore, stampa un messaggio ed esce dalla funzione.

Il passaggio successivo prevede il conteggio del numero di posizioni aperte. Questo viene fatto utilizzando la funzione "CountOpenPositions" e il conteggio viene memorizzato in due variabili intere, "CountBuy" e "CountSell". Se c'è un errore nel conteggio delle posizioni, viene stampato un messaggio e la funzione esce.

La funzione verifica quindi la presenza di un'operazione di acquisto o vendita. Se non ci sono posizioni di acquisto aperte (CountBuy è zero), controlla i valori dell'indicatore per determinare se deve essere aperta una posizione di acquisto. Le condizioni per l'apertura di un'operazione di acquisto sono che il valore dell'indicatore corrente sia inferiore a un livello inferiore specificato e il valore dell'indicatore precedente sia superiore al livello inferiore. Se queste condizioni sono soddisfatte, viene stampato un messaggio che indica l'apertura di una posizione di acquisto. Allo stesso modo, la funzione verifica la presenza di un'operazione di vendita se non vi è alcuna posizione di vendita aperta (CountSell è zero). Le condizioni per l'apertura di un'operazione di vendita sono che il valore dell'indicatore sia al di sopra di un livello superiore specificato e il valore dell'indicatore precedente sia al di sotto del livello superiore. Se queste condizioni sono soddisfatte, viene stampato un messaggio che indica l'apertura di una posizione di vendita.

Dopo l'implementazione della logica commerciale, la funzione chiude tutte le posizioni di vendita se il parametro di input "ClosedSignal" è impostato su true. Utilizza la funzione "ClosePositions" con il valore del parametro 2 per chiudere tutte le posizioni di vendita. Se c'è un errore nella chiusura delle posizioni, la funzione esce e stampa un messaggio. Successivamente, la funzione calcola i valori di stop loss e take profit in base ai parametri di input. Se il valore di stop loss in ingresso è zero, lo stop loss è impostato su zero; in caso contrario, viene calcolato in base al prezzo del tick corrente e al valore di stop loss inserito. Lo stesso processo viene seguito per il calcolo del valore di take profit.

Prima di aprire una posizione, la funzione normalizza i prezzi di stop loss e take profit utilizzando la funzione "NormalizePrice". Se c'è un errore nella normalizzazione, la funzione esce. Infine, la funzione apre una posizione utilizzando il metodo "PositionOpen" dell'oggetto commerciale. La posizione viene aperta in base al tipo (acquisto o vendita), volume, prezzo, stop loss e take profit. È incluso anche un commento sull'ordine.

La funzione viene compilata per garantire che non vi siano errori, quindi può essere testata in MetaTrader utilizzando i dati storici per vedere se le aperture e le chiusure commerciali desiderate si verificano in base alle condizioni specificate. Dopo aver aperto una posizione, la funzione verifica la presenza di errori utilizzando la funzione "GetLastError". Se c'è un errore, stampa un messaggio ed esce.

Infine, la funzione aggiorna le variabili globali "LastTick" e "LastSignal" rispettivamente con il tick corrente e il tipo di segnale (buy o sell). Questo viene fatto per tenere traccia dell'ultimo tick elaborato e segnalare per calcoli futuri.

Questa funzione recupera il tick corrente, ottiene i valori degli indicatori, conta il numero di posizioni aperte, controlla le opportunità di trading, apre posizioni in base a condizioni specificate, chiude le posizioni di vendita se necessario, calcola i valori di stop loss e take profit, normalizza i prezzi, apre posizioni , gestisce gli errori e aggiorna le variabili globali.

Per utilizzare questa funzione in un ambiente MetaTrader 5, è necessario integrarla in un consulente esperto o script e personalizzare i parametri di input e i valori degli indicatori in base alla propria strategia di trading. Inoltre, potrebbe essere necessario implementare altre funzioni per la gestione delle posizioni, la gestione degli errori e l'esecuzione di altre operazioni di trading.

Si prega di notare che la spiegazione fornita è una comprensione generale basata sulle informazioni fornite e l'implementazione effettiva può variare a seconda della piattaforma di trading specifica e del linguaggio di programmazione utilizzato.

Stochastic trading bot in mql5! | Part 1
Stochastic trading bot in mql5! | Part 1
  • 2023.04.13
  • www.youtube.com
Today I will show you how to code a stochastic trading bot for Metatrader 5. In this video we will create a fully working stochastic Expert Advisor for Metat...
 

EA stocastico per MetaTrader 5 | Parte 2



EA stocastico per MetaTrader 5 | Parte 2

In questo video, Toby si presenta come presentatore e afferma che discuteranno di un semplice filtro per migliorare le strategie di trading utilizzando l'indicatore stocastico. Toby afferma che il filtro può essere applicato non solo all'indicatore stocastico ma anche ad altri indicatori.

Toby spiega che nella prima parte del tutorial sulla codifica, hanno coperto la logica di base dell'EA (Expert Advisor) e dell'indicatore. In questa parte, hanno in programma di aggiungere diversi segnali di ingresso e un filtro per migliorare la strategia. Prima di immergersi nella codifica, Toby sottolinea l'importanza di comprendere l'obiettivo. Spiegano i componenti che vogliono aggiungere all'EA, incluso un secondo tipo di segnale di ingresso basato sull'uscita dalle zone inferiore e superiore dell'indicatore e l'opzione per invertire i segnali.

Toby suggerisce quindi di passare a Visual Studio Code, un editor che consigliano per la codifica MQL5. Dicono che il codice su cui lavoreranno è l'EA creato nella prima parte. Dopo aver compilato per assicurarsi che funzioni correttamente, procedono con la codifica.

Il primo passaggio consiste nell'aggiungere un input per la modalità del segnale utilizzando un enum (enumerazione) per le diverse modalità. Creano l'enumerazione chiamata "signal mode" con opzioni come "exit cross normal", "entry cross normal", "exit cross reversed" e "entry cross reversed". Toby spiega il significato di ciascuna opzione e come influisce sulla strategia di trading.

Dopo aver aggiunto l'enumerazione, Toby lo aggiunge come input nel codice e assegna l'opzione predefinita come "exit cross normal". Si assicurano inoltre di compilare il codice per verificare eventuali errori.

Successivamente, Toby prevede di utilizzare la modalità segnale nella funzione OnTick() per verificare la presenza di nuovi segnali. Per semplificare il codice ed evitare istruzioni if complesse, Toby decide di scrivere una funzione separata chiamata "segnale di controllo" per gestire la logica del segnale. Spiegano che questa funzione restituirà un valore booleano che indica se un'operazione deve essere aperta o meno.

Toby crea la funzione "segnale di controllo", che accetta due parametri: un parametro booleano per specificare se sta controllando un segnale di acquisto o di vendita e un parametro intero per il conteggio delle posizioni aperte. Aggiungono un commento che spiega lo scopo della funzione ei parametri. Aggiungono anche un controllo per restituire falso se una posizione è già aperta.

Successivamente, Toby aggiunge il codice per verificare la presenza di crossover in base alla modalità di segnale selezionata. Creano variabili booleane per ciascuna opzione di crossover, come "incrocio di uscita superiore", "incrocio di ingresso superiore", "incrocio di uscita inferiore" e "incrocio di ingresso inferiore". Spiegano la logica alla base di ogni condizione di crossover, facendo riferimento ai valori dei buffer degli indicatori stocastici.

Dopo aver aggiunto i controlli crossover, Toby compila il codice per assicurarsi che non vi siano errori. Aggiungono anche l'istruzione if mancante e correggono gli errori di compilazione.

Con la funzione "segnale di controllo" e i controlli incrociati in atto, Toby torna alla funzione OnTick() e sostituisce le istruzioni if esistenti per controllare le posizioni di acquisto e vendita con chiamate alla funzione "segnale di controllo". Passano i parametri appropriati e il conteggio delle posizioni aperte alla funzione e controllano se restituisce true prima di aprire un'operazione.

Dopo aver compilato nuovamente il codice, Toby passa a MetaTrader per testare la logica dell'EA. Selezionano l'EA, scelgono la modalità solo prezzo aperto e abilitano la modalità visiva per i test. Configurano i parametri di ingresso per ciascuna modalità di segnale ed eseguono il test visivo. Toby spiega che è importante testare a fondo l'EA per assicurarsi che si comporti come previsto.

Toby conclude che tutte le modalità di segnale funzionano correttamente in base ai risultati del test visivo. Suggeriscono di passare all'aggiunta di un filtro nella parte successiva del tutorial.

Attualmente, recuperiamo i valori "uno" e "due" per verificare la presenza di un segnale. Tuttavia, voglio modificarlo in modo da iniziare dall'indice 0 con il nostro buffer. Inoltre, dovremmo recuperare tre valori per il segnale di controllo. Se il nostro filtro check clear bars è attivo, potremmo aver bisogno di valori aggiuntivi. Per implementare queste modifiche, dobbiamo modificare il codice.

Per prima cosa, scorriamo fino a dove recuperiamo i valori dell'indicatore. Nella funzione "deseleziona", dove abbiamo la riga "ottieni valori indicatore", dobbiamo apportare alcune modifiche. Il primo parametro rappresenta il numero di buffer dell'indicatore. Siamo interessati solo alla linea principale, che è all'indice 0. Quindi rimane lo stesso. Tuttavia, la posizione iniziale è attualmente impostata sull'indice 1 e recuperiamo due valori. Vogliamo cambiare la posizione iniziale in indice 0 e recuperare almeno tre valori. Quindi modifichiamo il codice per iniziare dall'indice 0 e recuperare tre valori: zero, uno e due.

Se il nostro filtro check clear bars è attivo, dobbiamo recuperare valori indicatori aggiuntivi per controllare il filtro. Abbiamo bisogno di recuperare "tre" più il nostro valore di barre chiare di input. Ad esempio, se il valore di input clear bars è impostato su 5, abbiamo bisogno di un totale di otto valori. Quindi modifichiamo il codice di conseguenza per recuperare i valori a partire dall'indice 0 fino al numero richiesto di valori.

Dopo aver apportato queste modifiche, è necessario archiviare i valori recuperati nel buffer denominato "Main". Inoltre, dovremmo controllare se la funzione ha avuto successo nel recuperare i valori richiesti, che sono tre più il nostro valore di barre chiare di input. Modifichiamo il codice per includere questo controllo.

Successivamente, dobbiamo aggiornare il codice in cui controlliamo il segnale. Invece di accedere al buffer Main all'indice 0, ora dobbiamo accedervi all'indice 1 e 2 per il controllo crossover. Sostituiamo tutte le istanze dell'indice 0 con 1 e dell'indice 1 con 2.

Ora abbiamo i valori dell'indicatore corretti e possiamo procedere al ciclo for. Dovremmo compilare il codice per assicurarci che non ci siano errori.

Nel ciclo for, vogliamo controllare il nostro filtro a barre chiare a partire dall'indice 3. Questa è la posizione dopo il controllo del crossover del segnale. Continuiamo questo ciclo fino a quando il nostro contatore è inferiore a tre più il valore delle barre chiare. Ad esempio, se il valore delle barre chiare è impostato su 5, il contatore sarà 8. Ciò significa che controlliamo fino all'indice 7, l'ultimo valore nel nostro ciclo. Lo scopo di questo ciclo è garantire che non vi siano incroci della linea superiore all'interno di queste barre. Aggiorniamo il codice per riflettere queste modifiche.

All'interno del ciclo for, controlliamo prima il livello superiore. Confrontiamo il valore al buffer Main[i-1] con il livello superiore di input. Se è maggiore e il valore nel buffer Main[i] è minore o uguale al livello superiore dell'input, abbiamo un crossover. Controlliamo anche la condizione opposta per un crossover nell'altra direzione. Modifichiamo il codice di conseguenza.

Dopo il ciclo for, aggiungiamo un'altra istruzione if-else. Se il nostro input clear bars reverse è true, restituiamo true perché vogliamo un crossover quando il filtro viene invertito. Altrimenti, restituiamo false.

Infine, aggiungiamo un'istruzione if-else simile per il controllo di livello inferiore. Copiamo l'istruzione if esistente e apportiamo le modifiche necessarie per il controllo di livello inferiore.

Dopo aver apportato queste modifiche, compiliamo nuovamente il codice per assicurarci che non ci siano errori. Ora possiamo utilizzare la funzione di controllo delle barre chiare nella nostra funzione OnTick.

Nella funzione OnTick, aggiungiamo la funzione check clear bars nell'istruzione if dove controlliamo il segnale.

Continuiamo con il processo di ottimizzazione. Abbiamo selezionato il simbolo Euro/Dollaro e il time frame a partire dal 2019. Useremo solo il prezzo di apertura e l'algoritmo veloce generico. Il nostro obiettivo di ottimizzazione è trovare i parametri migliori per il nostro filtro clearbars.

Prima di iniziare l'ottimizzazione, definiamo i parametri che vogliamo ottimizzare. In questo caso, ottimizzeremo il periodo di ricerca del filtro clearbars, che determina il numero di barre da considerare per il filtro. Verificheremo valori compresi tra 5 e 20, con incrementi di 5. Inoltre, ottimizzeremo le soglie di livello superiore e inferiore per il filtro, testando valori da 50 a 150, con incrementi di 25.

Ora eseguiamo l'ottimizzazione e analizziamo i risultati. Esamineremo l'utile netto, le negoziazioni totali e il fattore di profitto per valutare la performance di ciascuna combinazione di parametri. Sulla base di queste metriche, possiamo identificare i migliori valori dei parametri che producono il massimo profitto.

Dopo aver eseguito l'ottimizzazione, possiamo esaminare i risultati e identificare i valori dei parametri che hanno dato i risultati migliori. Potremmo scoprire che un periodo di ricerca di 10, una soglia di livello superiore di 100 e una soglia di livello inferiore di 75 hanno fornito il profitto netto e il fattore di profitto più elevati.

Una volta identificati i valori ottimali dei parametri, possiamo usarli per eseguire il backtest della nostra strategia su un set di dati più ampio o distribuirla su un conto di trading reale.

Ricorda che i risultati dell'ottimizzazione si basano su dati storici e potrebbero non garantire prestazioni future. È importante monitorare e valutare continuamente le prestazioni della strategia e regolare i parametri secondo necessità.

Con i parametri ottimizzati, possiamo perfezionare ulteriormente la nostra strategia ed esplorare altre possibilità di miglioramento. Possiamo prendere in considerazione l'aggiunta di ulteriori filtri o condizioni per migliorare l'efficacia della strategia.

In conclusione, il processo di ottimizzazione ci aiuta a trovare i migliori valori dei parametri per il nostro filtro clearbars, migliorando le prestazioni della strategia e potenzialmente aumentando la redditività. È uno strumento prezioso per lo sviluppo e il perfezionamento delle strategie di trading.

Stochastic EA for MetaTrader 5 | Part 2
Stochastic EA for MetaTrader 5 | Part 2
  • 2023.05.01
  • www.youtube.com
Today I will show you how to code a stochastic trading bot for Metatrader 5. In this video we will improve our stochastic Expert Advisor for Metatrader 5. We...