Ho fatto un programma in che tiene conto di due medie a 9 e 21 periodi nel time frame orario, ed l’indicatore stocastico nel 5 minuti, le condizioni sono che se nel time frame 1h la media a 9 periodi è sotto la media a 21 e lo stocastico e in ipercomprato deve entrare short,mentre se la media 9 periodi e sopra la 21 e lo stocastico è in ipervenduto deve entrare long,ma ho notato mentre controllavo le posizioni che pure avendo incrociato la media a 9 periodi verso il basso, mi apriva comunque posizioni long nell’ora successiva per poi, cambiare e aprire posizioni short che è quello che dovrebbe succedere mi sapete dire perchè?grazie
Vi allego due foto per farvi capire il punto preciso dove intendo
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
// Il sistema cancellerà tutti gli ordini in attesa e chiuderà tutte le posizioni a 0:00. Dopo l’orario “Flat Before” non saranno piazzati nuovi ordini o posizioni.
DEFPARAM FLATBEFORE = 000000
// Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all’orario “Flat After”
DEFPARAM FLATAFTER = 235900
//
TIMEFRAME(default)
// Impedisce al sistema di tradare in giorni specifici della settimana
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
// Condizioni per entrare su posizioni long
indicator1 = Average[5](Stochastic[5,8](close))
c1 = (indicator1 CROSSES OVER 20)
//
TIMEFRAME(1 hour,UpdateOnClose)
indicator2 = ExponentialAverage[9](close)
indicator3 = ExponentialAverage[21](close)
c2 = (indicator2[1] > indicator3[1])
//
TIMEFRAME(default)
IF (c1 AND c2) AND not daysForbiddenEntry THEN
BUY 1 SHARES AT MARKET
ENDIF
// Condizioni per entrare su posizioni short
indicator4 = Average[5](Stochastic[5,8](close))
c3 = (indicator4 CROSSES UNDER 80)
//
TIMEFRAME(1 hour,UpdateOnClose)
indicator5 = ExponentialAverage[9](close)
indicator6 = ExponentialAverage[21](close)
c4 = (indicator5[1] < indicator6[1])
//
TIMEFRAME(default)
IF (c3 AND c4) AND not daysForbiddenEntry THEN
SELLSHORT 1 SHARES AT MARKET
ENDIF
// Stop e target
SET STOP pLOSS 1
SET TARGET pPROFIT 2
Le condizioni sono che deve entrare long quando la media 9 periodi si trova sopra la media a 21 periodi nel timeframe h1 e lo stocastico deve incrociare al rialzo il valore 20, mentre deve entrare short quando la media a 9 periodi si trova sotto la media a 21 periodi e lo stocastico deve incrociare verso l’alto il valore 20, ma ho notato spesso che quando c’è l’incrocio delle due medie e già si sono leggermente distanziate mi continua ad aprire posizioni dal verso sbagliato come posso fare? grazie
Aggiungi
And Not OnMarket
alle condizioni d’entrata alle righe 21 e 35.
Ho inserito quello che mi ha detto lei ma ancora sbagliato le ho postato due foto dove mi fa un entrata long alle 18:35 (time frame 5 minuti) anche se l’incrocio delle due medie nell?timeframe h1 già c’è stato con la candela che va dalle 17 alle 18 come in foto
Lo strumento tradato: EUR/USD
Candela: mercoledi 19 agosto 17:00 timeframe h1 dove c’è stato l’incrocio delle due medi mobili, mentre aperta posizione nella candela mercoledi 19 agosto 18:35 time frame 5 minuti
I settaggi sono: medie mobili esponenziali 9 e 21 periodi, stocastico (5,3,3)
Stoploss:3.5
Takeprofit:10.5
Grazie per l’aiuto
Va bene, la candela che ha registrato l’incrocio è quella aperta alle 17, ma l’incrocio viene rilevato alla chiusura, cioè alle 18 e vale fino alla chiusura della barra successiva, cioè le 19.
Nella foto dei due grafici messi insieme si vede bene la sovrapposizione dei tempi. Col cursore fermo sulla candela oraria che apre alle 18, nel TF a 5 minuti si vede che ti viene evidenziata l’ultina candela a 5 minuti, quella che chiude alle 19 (ed si è aperta alle 17:55), mentre la parte grigiata è quella dell’intera ora coinvolta, che parte alle 18:00.
Se vuoi provare a non attendere la chiusura delle candele orarie, ma solo quella delle candele a 5 minuti (in questo caso rileverà prima l’incrocio, ma potrebbe non essere confermato alla chiusura), sostituisci “UPDATEONCLOSE” con “DEFAULT” dove c’è TIMEFRAME, così:
TIMEFRAME(1 hour,default)
questo significa che farà le verifiche e gli aggiornamenti delle variabili ad 1 ora secondo il passo stabilito dal TF di default (quello più piccolo, in questo caso 5 minuti, ma potrebbe essere anche 15 minuti o 2 minuti o 10 secondi, secondo le tue preferenze).
Vedi cosa succede, poi decidi quele soluzione va meglio per te.
Grazie per il tuo aiuto è migliorato molto grazie a te, ti volevo chiedere se volessi aggiungere un trailing stop a 7 periodi in timeframe 5 minuti con stop loss 3,5 pips+ valore atr e take profit 3 volte lo stoploss come dovrei modificare il codice qua sopra?
Per SL e TP con Average True Range ti ho già risposto sull’altro topic.
Per il trailing stop scrivi:
TIMEFRAME(5 minute,UpdateOnClose)
// trailing stop code
dove ho scritto TRAILING STOP CODE copiaci le righe dalla 17 alla 56 di questo link https://www.prorealcode.com/blog/trading/complete-trailing-stop-code-function/.
Dovrai solo modificare i due valori, TRAILINGSTART e TRAILINGSTEP, per dirgli dopo quanti pips iniziare ed il passo da tenere.
No forse non mi sono spiegato bene io vorrei usare il valore dell’atr per decidere lo stop loss e il take profit senza che segua l’operazione,ad esempio deve farmi un entrata short voglio che prenda il valore dell’atr e lo divida per 2-3(questo lo devo decidere) e il take profit sia 3 volte lo stop loss. Per me è importante solo il valore dell’atr nel momento in cui apro la posizione per decidere la perdita e il profitto,non mi deve seguire la posizione e spostrmeli, spero di essere stato più chiaro.
Non è che non ti sei spiegato bene, è che non hai letto bene.
Più che non avere letto bene, direi che è necessaria un’interpretazione che forse non è facile.
SE vuoi che l’ATR non segua l’andamento dell’operazione devi aggiungere, alle tue condizioni della riga 1, la condizione:
AND Not OnMarket
in questo modo quando è a mercato il resto delle operazioni non viene eseguita, quindi SL e TP restano invariati per tutto il tempo.