Semplice tutorial sul sistema di trading supporto-resistenza per EA Wizard

In questo articolo vi mostreremo come costruire un semplice sistema di trading semiautomatico basato sui livelli di supporto e resistenza (livelli S/R). Il sistema avrà le seguenti caratteristiche:

  • I prezzi per i livelli S/R saranno definiti dall'utente utilizzando i parametri di input. In caso contrario, l'EA li posizionerà automaticamente sul grafico sopra e sotto il prezzo di mercato corrente.
  • Una volta che il minimo dell'ultima barra incrocia il livello S e chiude sopra il prezzo di apertura della barra, l'EA aprirà una posizione lunga.
  • Una volta che il massimo dell'ultima barra incrocia il livello R definito e la barra chiude al di sotto della sua apertura, l'EA aprirà una posizione corta.
  • potrete limitare il numero di operazioni aperte per ogni livello di S/R, nonché le dimensioni di stop-loss e profit-target
  • L'EA utilizzerà le regole di gestione del denaro fisso % dell'equity del conto
  • L'EA disegnerà anche le linee corrispondenti ai livelli S/R definiti, in modo da poterli modificare facilmente direttamente sui grafici.

Impostazione delle basi

Per prima cosa dobbiamo impostare il nome del nostro EA e le regole di gestione del denaro. Ecco come fare:

Impostazione degli ingressi EA

La maggior parte del lavoro svolto in questa fase è ovvio, ma concentriamoci per un momento sulle variabili. Le esamineremo spiegandone il significato:

ultimoSupporto - è il prezzo inserito per il livello S. Viene impostato automaticamente all'avvio dell'EA e può essere modificato cambiando il parametro o modificando la linea di supporto direttamente sul grafico.
ultimaResistenza - è il prezzo inserito per il livello R. Viene impostato automaticamente all'avvio dell'EA e può essere modificato cambiando il parametro o modificando la linea di resistenza direttamente sul grafico.
scambiLongCounter - questa variabile sarà utilizzata per memorizzare il numero di operazioni long realizzate con l'ultimo livello S/R impostato
scambiContatore corto - questa variabile sarà utilizzata per memorizzare il numero di operazioni short realizzate con l'ultimo livello di S/R impostato

NOTA: questi "contatori di negoziazione" vengono incorporati per limitare il numero massimo di negoziazioni eseguite per ogni livello definito. Questo ci serve per prevenire l'over-trading mentre ci aspettiamo non più di 3 operazioni per ogni livello S o R impostato. Dobbiamo anche azzerare questi contatori una volta modificato il livello S o R a un nuovo prezzo, in modo che l'EA possa ricominciare da capo.

maxTradesPerSR - il numero massimo di operazioni consentite per ogni livello S/R
PT, SL - Sono le distanze degli ordini stop-loss e profit-target espresse in numero di pip.

Per quanto riguarda le regole di gestione del denaro, intendiamo rischiare non più di 3% del nostro conto per ogni operazione con una dimensione massima possibile di 5 lotti.

Dobbiamo anche assicurarci che le regole globali di gestione del denaro funzionino correttamente con le nostre dimensioni PT e SL definite, quindi passiamo alla scheda SL/PT:

Impostazione delle regole MM globali

Impostazione dei livelli S/R

Una volta definiti tutti gli input necessari, possiamo passare al compito successivo: creare le regole e la logica per l'EA stesso.

Abbiamo bisogno che il nostro EA abbia prezzi S/R modificabili (come input) ma abbiamo bisogno che l'EA lavori in modo intelligente, cioè che tracci linee orizzontali anche senza inserire alcun valore di prezzo specifico una volta caricato il nostro EA. Ecco come fare:

Impostazione dei prezzi S/R

se UltimoSupporto = 0 O UltimaResistenza = 0 - se non abbiamo impostato un prezzo specifico sul carico dell'EA, lasciamo che l'EA lo imposti da solo:

lastResistance = (High[1] + ConvertToRealPips(100)) e
lastSupport = (Low[1] - ConvertToRealPips(100))

Se non si imposta alcun prezzo specifico per il livello S o R nel momento in cui si carica l'EA, l'EA lo farà automaticamente posizionandoli 100 pip sopra il massimo corrente (per il livello R) e 100 pip sotto il minimo corrente (per il livello S). Utilizziamo il metodo ConvertToRealPips(pips) per aggiungere e sottrarre un intervallo di prezzo di 100 pips (i pips devono essere convertiti in una differenza di prezzo).

Disegnare i livelli S/R su un grafico

È qui che entra in gioco la vera potenza di EA Wizard. Se una determinata funzione non è disponibile in EA Wizard, è possibile aggiungerla semplicemente utilizzando il codice MQL4 personalizzato.

Occorre aggiungere una condizione che verifichi se una qualsiasi delle linee orizzontali (R O S) sono già presenti nel grafico. Possiamo utilizzare una comoda funzione chiamata Trova oggetto("nome dell'oggetto") (attenzione alle virgolette che devono essere usate qui). Se le linee non esistono nel grafico (la funzione ObjectFind restituisce un numero inferiore a zero), possiamo disegnarle nel passaggio successivo.

Funzione personalizzata: ObjectFind("resistenza1") < 0 OR
Funzione personalizzata: ObjectFind("support1") < 0

Disegnare le linee orizzontali

Azione personalizzata: ObjectCreate("resistance1", OBJ_HLINE, 0, Time[0], lastResistance);
Azione personalizzata: ObjectCreate("support1", OBJ_HLINE, 0, Time[0], lastSupport);

Per disegnare le linee abbiamo utilizzato il metodo Crea oggetto come definito nel file Manuale della lingua MQL4 per creare nuovi oggetti linea orizzontale.

La funzione richiede diversi parametri:

"supporto1", "resistenza1" sono i nomi che abbiamo utilizzato per le nostre linee, poiché ogni oggetto in MetaTrader deve avere un proprio nome.

OBJ_HLINE definisce il tipo di oggetto che vogliamo disegnare. In questo caso abbiamo bisogno di disegnare una linea orizzontale

0 - Il valore "zero" indica l'indice della finestra. 0 indica il grafico principale su cui si vuole disegnare

Tempo[0] - ci riferiamo al punto di disegno dell'ultima barra

ultimoSupporto ultimaResistenza sono i prezzi a cui vogliamo che vengano visualizzate le nostre linee S/R

Si noti anche che abbiamo usato Accesso al diario in modo da poter monitorare il comportamento di EA durante il suo funzionamento. Si tratta di una funzione molto utile, soprattutto se avete bisogno di osservare cosa succede con il valore di alcune variabili.

Aggiornamento dei prezzi S/R

Se si modifica il livello S o R sul grafico, è necessario che l'EA registri tale cambiamento. A tal fine è necessario leggere i prezzi correnti per entrambe le linee, sia che corrispondano a ultimoSupporto ultimaResistenza variabili. Una volta rilevate le modifiche, è necessario aggiornare le variabili.

Ricordate, una volta aggiornati i prezzi S/R, vogliamo anche azzerare il contatore degli scambi, in modo che l'EA possa scambiare liberamente il nuovo livello di prezzo fino a un limite predefinito. maxTradesPerSR.

Aggiornamento del prezzo per il livello di resistenza

lastResistance = CustomFunction: ObjectGet("resistenza1", OBRPROP_PRICE1);

Utilizziamo un'altra funzione di MQL4 per questo - OggettiRaccolti(). Questa funzione permette di ottenere informazioni su una determinata proprietà dell'oggetto, come la proprietà prezzo ad esempio. Questa funzione richiede il nome dell'oggetto e la costante di proprietà corretta che si sta cercando di ottenere (in questo caso è il prezzo principale - PREZZO1).

E facciamo lo stesso per il nostro livello S:

Aggiornamento del prezzo per il livello di supporto

Fare trading sui livelli di S/R - piazzare gli ordini

Una volta preparato tutto il necessario, possiamo iniziare a definire le regole di trading per entrambe le direzioni.

Cominciamo con la condizione lunga:

Trading sul lato lungo

Basso[1] incrocia sopra l'ultimoSupporto - per un segnale long valido consideriamo una situazione in cui il prezzo basso incrocia sopra il livello S definito
La posizione di mercato è piatta - non ci sono altre posizioni già aperte
IsBarOpen è Vero - valutare la condizione solo una volta per ogni barra
tradesLongCounter < maxTradesPerSR - scambiare solo se il limite di scambio non è stato raggiunto

Se la condizione di cui sopra diventa valida, possiamo piazzare un ordine di mercato long con il numero magico 1000. Dobbiamo anche aumentare di 1 il valore del contatore per le operazioni long (per contare l'ultima operazione long). Questo viene fatto utilizzando il parametro Assegnazione della variabile e il Aggiunta funzioni.

Non dimenticate di impostare correttamente le dimensioni di PT e SL e la dimensione del lotto per ogni operazione, come mostrato nello screenshot.

Impostazione di un obiettivo di profitto globale
Impostazione delle dimensioni del lotto

Ora dobbiamo fare lo stesso per il lato corto:

Impostazione delle regole del lato corto

La differenza principale sta nella condizione di incrocio. Vogliamo vedere una barra Alto[1] da incrociare sotto il nostro livello R definito. Per il ordine di mercato breve dobbiamo anche utilizzare un elemento numero magico diverso (2000 nel nostro caso) perché in MetaTrader a ogni ordine viene assegnato un numero magico unico.

A questo punto il nostro EA è completo. L'ultimo passo è esportare il codice in un file EA e testare l'EA in MetaTrader4 utilizzando il backtester o il regime simulato.

Esportare l'EA in MetaTrader4

Una volta salvato l'EA, possiamo avviare il backtester MT4 per verificarne il funzionamento.

Test dell'EA
Abbonarsi
Notificami
5 Commenti
Il più vecchio
Più recente I più votati
Feedback in linea
Visualizza tutti i commenti
Ling
Ling
15. 12. 2017 7:40

L'EA Wizard è in grado di utilizzare un certo numero di candele a ore specifiche (se si tratta di un grafico orario) per identificare i livelli di supporto e resistenza e aprire e chiudere le operazioni in base a questi livelli? Ad esempio, su un grafico orario, disegnare le linee di resistenza e supporto in base al massimo e al minimo delle candele chiuse alle 3, 4 e 5 del mattino.

krikri
krikri
25. 2. 2018 12:00 pm

Ciao Tomas262,

ottimo lavoro, dove posso trovare il file sqw di questo EA (support resistance trading system)?

saluti

Cristiano

Denis Mc Grath
Denis Mc Grath
22. 5. 2018 8:28

Ottimo articolo Tomas.

girija k
22. 6. 2018 11:52

Condividerò con voi una strategia molto semplice basata su un pattern di candele forte e facilmente individuabile. Lo chiamano "Lucky Spike". Tutti possono impararlo, usarlo e guadagnarci. Ci sono trader che si guadagnano da vivere con questo pattern. Date un'occhiata all'ebook che vi offro gratuitamente:==> http://www.forexmystery.com?hgd4h84gdh

girija k
22. 6. 2018 11:54

Condividerò con voi una strategia molto semplice basata su un pattern di candele forte e facilmente individuabile. Lo chiamano "Lucky Spike". Tutti possono impararlo, usarlo e guadagnarci. Ci sono trader che si guadagnano da vivere con questo pattern. Date un'occhiata all'ebook che vi offro gratuitamente:==> http://www.forexmystery.com?hgd4h84gdh

Continua a leggere