Idee di trading basate sulla direzione dei prezzi e sulla velocità di movimento
Introduzione
È noto da tempo che quando un prezzo si muove tutti i mercati liquidi rivelano una sorta di natura ciclica dell'onda che prima sale e poi scende. È chiaramente visibile sui grafici di intervalli di tempo più elevati. La natura sinusoidale è un riflesso del fatto che il prezzo ha una certa persistenza. Altrimenti sembrerebbe uno zigzag: bruschi movimenti verso l'alto e verso il basso in brevi periodi di tempo. Cerchiamo di scoprire le ragioni di questo fenomeno e le modalità di impiego nel commercio.
Inizio e persistenza del movimento
Qualsiasi movimento nel nostro mondo può essere caratterizzato dalla sua direzione, accelerazione e velocità. Funziona anche nei mercati liquidi. Ciò implica una regola importante che dice che mai un forte movimento diretto del prezzo può finire duramente. Può essere paragonato a un treno: quando un intero treno frena alla sua massima velocità, la sua via frenante può arrivare fino a un chilometro.
Quindi, quando inizia una tendenza? Quando la maggior parte dei partecipanti al mercato cambia opinione contraria per alcuni motivi, sia che si tratti di un cambiamento globale di direzione o di un cambiamento in alcuni fattori importanti che influenzano il mercato o le notizie. Con ciò si forma un'opinione collettiva considerata e inizia la tendenza. I partecipanti al mercato hanno una crescente convinzione che il movimento stia diventando più forte e andrà avanti. Ha una direzione, un'accelerazione e una certa velocità perché i grandi attori entrano nel mercato con grandi posizioni. È qui che coloro che sono entrati all'inizio del movimento e gli hanno dato un impulso e una velocità, iniziano a guadagnare profitto. Altri trader entrano nel mercato più tardi e con un prezzo meno interessante. Ma a differenza dei primi trader, cercano di usare la direzione del movimento dei prezzi.
La tendenza termina quando si verificano cambiamenti. Ma perché il prezzo si muove ancora allo stesso modo? Perché non cambia bruscamente? La ragione di tale comportamento è che coloro che stavano accelerando e spingendo il prezzo nella direzione desiderata, iniziano a chiudere le loro posizioni e quindi a sopprimere la tendenza. E quelli, che stavano solo "cavalcando l'onda", credono ancora che nulla sia cambiato e cercano persino di spostare il prezzo. Ma questo "treno" non si ferma. Inizia a muoversi nella direzione opposta e qui finisce la storia.
Idea di trading e come non essere investiti dal "treno"
L'idea di utilizzare il movimento e ottenere profitto si basa sull'analisi della profondità di tendenza attuale, cioè delle sue dimensioni e durata.
Per fornire un esempio vivido utilizziamo indicatori standard: RSI (Relative Strength Index) e AC (Accelerazione/Decelerazione).
1. Condizioni per l'ingresso sul mercato
Utilizzeremo il primo indicatore per dimostrare quanto lontano e profondo il prezzo si è attualmente spostato.
Posizioneremo i livelli per determinare una distanza e una profondità:
Fig. 1. Livelli dell'oscillatore RSI
I criteri di valutazione della profondità del movimento dei prezzi:
- Un'area tra i livelli 40 - 60 è considerata una zona pianeggiante (zona laterale). Non c'è alcuna tendenza quando il prezzo è in questa zona. Assegniamo l'indice 0 all'assenza di un movimento diretto.
Acquista zone di movimento dei prezzi:
- Zona 60-70 - questo è un possibile inizio del movimento verso l'alto. Assegniamo l'indice 1 a questo movimento.
- Zona 70-80 - il movimento verso l'alto è più distinto. Il movimento aumenta la sua velocità. Assegnare l'indice 2.
- Zona 80-90 - il movimento ha una direzione stabile. La velocità è raggiunta. Assegnare l'indice 3.
- Zona 90-100. Di norma questo è un forte movimento a senso unico che non ha pullback. Molto raro. Il suo indice di movimento sarà 4.
Cerchiamo di indicizzare allo stesso modo i prezzi di vendita:
- Zona 30-40. Il movimento inizia a scendere. Indice - 1.
- Zona 20-30. Il movimento aumenta la sua velocità. Indice -2.
- Zona 10-20. Direzione stabile verso il basso. Indice -3.
- Zona 0-10. Forte zona di movimento uni senso. Indice -4.
Possiamo descrivere questa condizione nel linguaggio MQL4 come segue:
//--- determining buy index double rsi=iRSI(Symbol(),tf,period,PRICE_CLOSE,0); index_rsi = 0; if(rsi>90.0) index_rsi=4; else if( rsi > 80.0 ) index_rsi = 3; else if( rsi > 70.0 ) index_rsi = 2; else if( rsi > 60.0 ) index_rsi = 1; else if( rsi < 10.0 ) index_rsi = -4; else if( rsi < 20.0 ) index_rsi = -3; else if( rsi < 30.0 ) index_rsi = -2; else if( rsi < 40.0 ) index_rsi = -1;
Useremo l'indicatore AC di Bill Williams per lo scopo previsto, vale a dire misureremo la velocità e l'accelerazione del movimento attuale.
Fig. 2. Indicatore
Criteri di valutazione della velocità:
Crescita.
- Il primo criterio è il confronto degli istogrammi attuali e precedenti. Se l'istogramma corrente supera quello precedente, c'è una probabile accelerazione della crescita dei prezzi. Definiamolo come indice di velocità pari a 1.
- Il secondo criterio è il confronto di 3 barre vicine (dalla barra zero alla seconda barra). Possiamo parlare di aumento dell'accelerazione se il valore di ogni barra successiva supera il valore della barra precedente. L'indice di velocità sarà uguale a 2.
- C'è un confronto simile di 4 barre per verificare se ogni barra precedente è più piccola di quella successiva. L'indice di velocità è 3.
- Confronto delle ultime 5 barre con il dovuto rispetto a quella attuale per verificare la stessa condizione. L'indice di velocità è 4.
Cadere.
- Likewise. Confronto tra la barra corrente e quella precedente. Se la barra corrente è più piccola della precedente, l'indice di velocità è uguale a -1.
- Confronto di 3 bar di riduzione dal precedente a quello attuale. L'indice è -2.
- Confronto di 4 barre. L'indice è -3.
- Confronto di 5 barre. L'indice è -4.
In MQL4 avrà l'aspetto seguente:
double ac[]; ArrayResize(ac,5); for(int i=0; i<5; i++) ac[i]=iAC(Symbol(),tf,i); index_ac=0; //--- buy signal if(ac[0]>ac[1]) index_ac=1; else if(ac[0]>ac[1] && ac[1]>ac[2]) index_ac=2; else if(ac[0]>ac[1] && ac[1]>ac[2] && ac[2]>ac[3]) index_ac=3; else if(ac[0]>ac[1] && ac[1]>ac[2] && ac[2]>ac[3] && ac[3]>ac[4]) index_ac=4; //--- sell signal else if(ac[0]<ac[1]) index_ac=-1; else if(ac[0]<ac[1] && ac[1]<ac[2]) index_ac=-2; else if(ac[0]<ac[1] && ac[1]<ac[2] && ac[2]<ac[3]) index_ac=-3; else if(ac[0]<ac[1] && ac[1]<ac[2] && ac[2]<ac[3] && ac[3]<ac[4]) index_ac=-4;
Se abbiamo indici di profondità di movimento e conosciamo la velocità di movimento, possiamo stabilire e classificare alcune condizioni di ingresso.
Ci sono opzioni di ingresso sul mercato:
//--- buy signal if(index_rsi==1 && index_ac>=1) //possible buy movement if(index_rsi==2 && index_ac>=1) //weak buy movement if(index_rsi==3 && index_ac==1) //weak buy movement if(index_rsi==3 && index_ac>=2) //moderate buy movement if(index_rsi==4 && index_ac>=1) //strong buy movement //--- sell signal if(index_rsi==-1 && index_ac<=-1) //possible sell movement if(index_rsi==-2 && index_ac<=-1) //weak sell movement if(index_rsi==-3 && index_ac==-1) //weak sell movement if(index_rsi==-3 && index_ac<=-2) //moderate sell movement if(index_rsi==-4 && index_ac<=-1) //strong sell movement //--- flat if(index_rsi==0)
2. Condizioni per uscire dal mercato
Abbiamo definito e classificato i parametri di ingresso. Faremo la seguente analogia per spiegare come si sono formate le condizioni di uscita dal mercato.
Pensate, per esempio, a una palla di gomma per bambini. E ora pensiamo a cosa succederà se qualcuno lancia questa palla in acqua da un punto molto alto. In primo luogo cadrà e raccoglierà velocità a causa dell'accelerazione gravitazionale. Poi urta contro l'acqua. Ma ha abbastanza velocità per immergersi a una certa profondità perdendo la sua velocità e avendo un valore negativo. La palla è influenzata dal principio di Archimede quindi viene spinta in superficie.
Ora eseguiremo il drill-down di questo esempio:
- Come hai già capito, la nostra palla è il prezzo.
- Una persona che lancia la palla rappresenta i partecipanti al mercato che hanno iniziato la tendenza.
- La forza di gravità che causa l'accelerazione gravitazionale rappresenta i trader che si sono uniti alla direzione dei prezzi dopo l'inizio della tendenza.
- L'acqua rappresenta fattori importanti che influenzano il cambiamento di direzione.
- Il principio di Archimede rappresenta le posizioni chiuse di coloro che hanno iniziato la tendenza.
Due obiettivi principali per ottenere profitti sono i seguenti:
- Determinare tempestivamente un momento in cui la palla è già stata lanciata e comprare o vendere.
- Chiudi una posizione quando la palla si tuffa in acqua e rallenta.
Può essere difficile determinare la durata e l'esatta distanza di caduta della palla poiché non vediamo una persona che lancia la palla né acqua nei mercati finanziari. Possiamo solo vedere la velocità e la direzione della palla.
Abbiamo esaminato i criteri di valutazione della profondità e della velocità del movimento dei prezzi di cui sopra.
Ora definiremo le condizioni di uscita:
//--- possible downward reversal if(index_rsi>2 && index_ac<0)
Se il prezzo si muoveva verso l'alto abbastanza a lungo, la sua accelerazione diventa negativa (al ribasso). Ciò indica il fatto che il cambiamento di tendenza è del tutto possibile.
//--- possible upward reversal if(index_rsi<-2 && index_ac>0)
Allo stesso modo con l'esempio dato: la palla stava cadendo abbastanza a lungo, ma cadeva in acqua, e l'acqua spinge la palla fuori nella direzione opposta. Indica il momento per la chiusura delle posizioni.
3. Miglioramento dell'efficienza di entrata e uscita
È noto che alcuni indicatori di trading aumentano la loro velocità di risposta al cambiamento di tendenza quando utilizziamo un periodo più ampio. Ma appaiono anche altri falsi segnali.
Il modo alternativo non è quello di modificare il periodo di calcolo sul lato inferiore, ma di tracciarlo su diversi intervalli di tempo.
Fig. 3. Andamento su diversi intervalli di tempo in base ai segnali RSI e AC
La tendenza al movimento dei prezzi può essere chiaramente vista nella figura a causa dei nostri criteri e degli indicatori RSI e AC. Diamo un'occhiata dettagliata.
Movimento e velocità su M1: movimento forte, indice AC è 4, profondità indice RSI è 2. M5 ha la stessa profondità ma la velocità è pari a 1. Lo stesso movimento è determinato su M15 ma è meno visibile rispetto ai grafici più bassi. Parlando di 30 minuti e un grafico delle ore, è impressionante vedere che M30 ha già un segnale e H1 ha una decelerazione e persino un segnale di possibile inversione.
Questo esempio ci dà una conclusione pesante:
4. Implementazione della strategia di trading sotto forma di un Expert Advisor
Tipo di Expert Advisor
//+------------------------------------------------------------------+ //| tester.mq4 | //| Alexander Fedosov | //+------------------------------------------------------------------+ #property copyright "Alexander Fedosov" #property strict #include <trading.mqh> //Support library for trade operations //+------------------------------------------------------------------+ //| Parameters | //+------------------------------------------------------------------+ input int SL = 40; // Stop loss input int TP = 70; // Take profit input bool Lot_perm=true; // Lot of balance? input double lt=0.01; // Lot input double risk = 2; // Risk of deposit, % input int slippage= 5; // Slippage input int magic=2356; // Magic number input int period=8; // RSI indicator period input ENUM_TIMEFRAMES tf=PERIOD_CURRENT; // Working timeframe int dg,index_rsi,index_ac; trading tr; //+------------------------------------------------------------------+ //| Expert Advisor initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- determining variables for auxiliary class of trading functions //--- language for displaying errors, Russian of by default. tr.ruErr=true; tr.Magic=magic; tr.slipag=slippage; tr.Lot_const=Lot_perm; tr.Lot=lt; tr.Risk=risk; //--- number of attempts. tr.NumTry=5; //--- determining decimal places on the current chart dg=tr.Dig(); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Main calculation function | //+------------------------------------------------------------------+ void OnTick() { depth_trend(); speed_ac(); //--- check for presence of open orders if(OrdersTotal()<1) { //--- check of buy conditions if(Buy()) tr.OpnOrd(OP_BUY,tr.Lots(),Ask,SL*dg,TP*dg); //--- check of sell conditions if(Sell()) tr.OpnOrd(OP_SELL,tr.Lots(),Bid,SL*dg,TP*dg); } //--- are there open orders? if(OrdersTotal()>0) { //--- check and close sell orders which meet closing conditions. if(Sell_close()) tr.ClosePosAll(OP_SELL); //--- check and close buy orders which meet closing conditions. if(Buy_close()) tr.ClosePosAll(OP_BUY); } } //+------------------------------------------------------------------+ //| Function for determining the trend depth | //+------------------------------------------------------------------+ void depth_trend() { //--- determining buy index double rsi=iRSI(Symbol(),tf,period,PRICE_CLOSE,0); index_rsi = 0; if(rsi>90.0) index_rsi=4; else if(rsi>80.0) index_rsi=3; else if(rsi>70.0) index_rsi=2; else if(rsi>60.0) index_rsi=1; else if(rsi<10.0) index_rsi=-4; else if(rsi<20.0) index_rsi=-3; else if(rsi<30.0) index_rsi=-2; else if(rsi<40.0) index_rsi=-1; } //+------------------------------------------------------------------+ //| Function for determining the trend speed | //+------------------------------------------------------------------+ void speed_ac() { double ac[]; ArrayResize(ac,5); for(int i=0; i<5; i++) ac[i]=iAC(Symbol(),tf,i); index_ac=0; //--- buy signal if(ac[0]>ac[1]) index_ac=1; else if(ac[0]>ac[1] && ac[1]>ac[2]) index_ac=2; else if(ac[0]>ac[1] && ac[1]>ac[2] && ac[2]>ac[3]) index_ac=3; else if(ac[0]>ac[1] && ac[1]>ac[2] && ac[2]>ac[3] && ac[3]>ac[4]) index_ac=4; //--- sell signal else if(ac[0]<ac[1]) index_ac=-1; else if(ac[0]<ac[1] && ac[1]<ac[2]) index_ac=-2; else if(ac[0]<ac[1] && ac[1]<ac[2] && ac[2]<ac[3]) index_ac=-3; else if(ac[0]<ac[1] && ac[1]<ac[2] && ac[2]<ac[3] && ac[3]<ac[4]) index_ac=-4; } //+------------------------------------------------------------------+ //| Function for checking buy conditions | //+------------------------------------------------------------------+ bool Buy() { bool res=false; if((index_rsi==2 && index_ac>=1) || (index_rsi==3 && index_ac==1)) res=true; return (res); } //+------------------------------------------------------------------+ //| Function for checking sell conditions | //+------------------------------------------------------------------+ bool Sell() { bool res=false; if((index_rsi==-2 && index_ac<=-1) || (index_rsi==-3 && index_ac==-1)) res=true; return (res); } //+------------------------------------------------------------------+ //| Function for checking buy position closing conditions | //+------------------------------------------------------------------+ bool Buy_close() { bool res=false; if(index_rsi>2 && index_ac<0) res=true; return (res); } //+------------------------------------------------------------------+ //| Function for checking sell position closing conditions | //+------------------------------------------------------------------+ bool Sell_close() { bool res=false; if(index_rsi<-2 && index_ac>0) res=true; return (res); }
Abbiamo eseguito una piccola ottimizzazione utilizzando solo due parametri: tf (working timeframe) e period (RSI indicator period).
E abbiamo ottenuto i seguenti risultati su M15:
Fig. 4. Risultati del backtesting di Expert Advisor
Conclusione
La determinazione dell'inizio e della fine della tendenza è uno dei compiti complicati per i trader di tutto il mondo in quanto è impossibile prevedere il comportamento del mercato.
Ma è del tutto possibile determinare i momenti di entrata e di uscita nella tendenza attuale e quindi ottenere profitti considerevoli. E l'idea generale di determinazione e traccia dinamica della velocità di movimento può essere utile in questa materia.
Ti auguro un trading di successo.
Tradotto dal russo da MetaQuotes Ltd.
Articolo originale: https://www.mql5.com/ru/articles/1747
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso