stop dinamici valori diversi
Forums › ProRealTime forum Italiano › Supporto ProOrder › stop dinamici valori diversi
- This topic has 16 replies, 2 voices, and was last updated 2 years ago by robertogozzi.
-
-
08/23/2021 at 6:50 AM #175966
salve, avendo due valori di setup diversi di trade in trade come potrei fare per sfruttarli, oltre che per gli ingressi, anche per gli stop? per esempio, entro long al maxSetup e lo stop dovrebbe essere al minSetup o addirittura stoppare la posizione aperta ed entrare in reverse (per questo avevo pensato di prendere per esempio 2 contratti contrari così che uno chiude il precedente ed un altro rimane in essere) ho provato a mettere la condizione in caso di long: if close < minSetup then sellshort mycontracts contract at market, scrivendo questo mi sballa i livelli di maxSetup e minSetup. quale potrebbe essere il modo giusto per scrivere questi stop o stop e reverse usando i valori prefissati?
08/23/2021 at 9:36 PM #176030con l’aggiunta dei stop loss su questo codice il risultato si sballa
stop dinamici su valori prefissati giornalmente1234567891011121314151617181920212223242526272829303132333435363738394041424344DEFPARAM FLATAFTER=170000BegTime=094000EndTime=163000Bolld=BollingerUp[20](close)Bollu=BollingerDown[20](close)MyContracts=1IF Time = 094000 THENmaxSetup = highest[3](high[1])minSetup = lowest[3](low[1])sllong = minSetupslshort = maxSetupENDIFc1 = (close > Bolld)//+nbpoint*pointsize)c2 = (close < Bollu)//+nbpoint*pointsize)if intradaybarindex=0 thentradethisday=0elseif barindex=tradeindex thentradethisday=1endifendifIf close > maxsetup and c1 and Time >= BegTime and Time <= EndTime and tradethisday=0 thenBuy mycontracts contract at minSetup stopsell at sllong stopendifIf close < minsetup and c2 and Time >= BegTime and Time <= EndTime and tradethisday=0 thensellshort mycontracts contract at maxSetup stopexitshort at slshort stopendifgraphonprice maxSetup coloured(0,255,0,255)graphonprice minSetup coloured(255,0,0,255)graph tradethisdaygraph c1graph c2graph Time08/24/2021 at 11:29 AM #176065Per prima cosa gli ordini pendenti d’entrata non sono STOP, bensì LIMIT in quanto acquisti & vendi ad un prezzo migliore rispetto a quello corrente (vedi tabella allegata).
Poi ho variato alcune cose nel calcolo dello Stop Loss.
Ho anche aggiunto un target (tp) che è un certo fattore moltiplicativo dello stop loss (ho messo 2, ma puoi provare altri valori, anche decimali se vuoi un TARGET inferiore allo stop loss).
Infine ho variato la parte iniziale della IF CLOSE… nelle righe di entrata, sia long che short.
Per il resto mi pare vada bene.
Volendo puoi aggiungere un trailing stop.
12345678910111213141516171819202122232425262728293031323334353637DEFPARAM FLATAFTER=170000BegTime=094000EndTime=163000Bolld=BollingerUp[20](close)Bollu=BollingerDown[20](close)MyContracts=1IF Time = 094000 THENmaxSetup = highest[3](high[1])minSetup = lowest[3](low[1])sllong = MinSetup - abs(maxSetup-minSetup)//maxSetup//minSetupslshort = MaxSetup + sllong//minSetup//maxSetuptp = abs(maxSetup-minSetup) * 2 //intervallo tra Min e Max * 2ENDIFc1 = (close > Bolld)//+nbpoint*pointsize)c2 = (close < Bollu)//+nbpoint*pointsize)if intradaybarindex=0 thentradethisday=0elseif barindex=tradeindex thentradethisday=1endifendifIf close > minsetup and c1 and Time >= BegTime and Time <= EndTime and tradethisday=0 thenBuy mycontracts contract at minSetup limitsell at sllong stopendifIf close < maxsetup and c2 and Time >= BegTime and Time <= EndTime and tradethisday=0 thensellshort mycontracts contract at maxSetup limitexitshort at slshort stopendifSET TARGET PROFIT tpgraphonprice maxSetup coloured(0,255,0,255)graphonprice minSetup coloured(255,0,0,255)graph tradethisdaygraph c1graph c2graph Time08/24/2021 at 3:44 PM #176104ho provato il codice ma ho notato che non fa piu quello che serve, l’idea è che alle 9e40 il sistema analizza le 4 candele precedenti e da quello ricava il minsetup e maxsetup, successivamente se si verifica che la chiusura barra è superiore al maxsetup e bollinger apre long con stop o stop e reverse al minsetup e viceversa
08/24/2021 at 3:54 PM #176106Ok, allora basta che metti LIMIT al posto di STOP.
Perché se vuoi verificare le 4 candele precedenti hai scritto 3 con high e low?
08/24/2021 at 3:57 PM #176107entra a vari orari senza rispettare le condizioni
08/24/2021 at 4:29 PM #176112Dimmi su quale strumento (Dax, Nasdaq, ecc…) l’hai provato e su quale time frame.
Posta anche l’ultimo codice che hai usato per le prove.08/24/2021 at 5:27 PM #176119questo è il codice aggiornato ma vedo che ci sono ancora errori, io voglio avere gli stop esattamente al valore maxsetup perr gli short e minsetup per i long, ho fatto varie prove ma si sballa tutto, dax a 10 minuti
codice aggiornato12345678910111213141516171819202122232425262728293031323334353637DEFPARAM FLATAFTER=173000BegTime=094000EndTime=163000Bolld=BollingerUp[20](close)Bollu=BollingerDown[20](close)MyContracts=1IF Time = 094000 THENmaxSetup = highest[3](high[1])minSetup = lowest[3](low[1])sllong = MinSetup// - abs(maxSetup-minSetup)//maxSetup//minSetupslshort = MaxSetup// + sllong//minSetup//maxSetuptp = abs(maxSetup-minSetup) * 2 //intervallo tra Min e Max * 2ENDIFc1 = (close > Bolld)//+nbpoint*pointsize)c2 = (close < Bollu)//+nbpoint*pointsize)if intradaybarindex=0 thentradethisday=0elseif barindex=tradeindex thentradethisday=1endifendifIf close > maxsetup and c1 and Time >= BegTime and Time <= EndTime and tradethisday=0 thenBuy mycontracts contract at maxSetup stopsell at sllong stopendifIf close < minsetup and c2 and Time >= BegTime and Time <= EndTime and tradethisday=0 thensellshort mycontracts contract at minSetup stopexitshort at slshort stopendifSET TARGET PROFIT tpgraphonprice maxSetup coloured(0,255,0,255)graphonprice minSetup coloured(255,0,0,255)graph tradethisdaygraph c1graph c2graph Time08/24/2021 at 5:59 PM #176122Perché lo SL lo hai messo all’interno di IF..ENDIF, quindi per gli Short piazza l’ordine STOP solo se il prezzo è < MinSetup, altrimenti no (viceversa per i Long).
Aggiungi queste righe subito dopo la 30:
12345IF LongOnMarket THENsell at sllong stopELSIF ShortOnMarket THENexitshort at slshort stopENDIF10/28/2021 at 11:18 AM #18045912345678910111213141516171819202122232425262728293031DEFPARAM FLATAFTER=220000BegTime=094000EndTime=163000MyContracts=1IF Time = 094000 THENmaxSetup = highest[3](high[1])minSetup = lowest[3](low[1])sllong = MinSetupslshort = MaxSetup + sllong//minSetup//maxSetuptp = maxSetup+40*pipsize// * 2 //intervallo tra Min e Max * 2ENDIFif intradaybarindex=0 thentradethisday=0elseif barindex=tradeindex thentradethisday=1endifendifIf close > maxsetup and Time >= BegTime and Time <= EndTime and tradethisday=0 thenBuy mycontracts contract at maxSetup limitsell at sllong stopendifset target profit tpgraphonprice tp coloured(255,255,0,255)graphonprice maxSetup coloured(0,255,0,255)graphonprice minSetup coloured(255,0,0,255)graph tradethisdaygraph Timeciao, sto facendo delle prove con questo codice ma benchè individui bene il tp non vende al raggiungimento di tale valore, qual’è l’errore?
10/28/2021 at 11:51 AM #180462Perché set target profit richiede una differenza espressa in prezzo e set target pprofit una differenza espressa in pips (sul Dax è uguale, ma su EurUsd, ad esempio, il primo richiede 0.0040 ed il secondo 40).
Tu hai assegnato a TP il valore di maxSetup+40*pipsize (linea 11), che è un prezzo MAGGIORATO di 40 pips, quindi inserisce uno STOP LOSS di quasi 16000 pip! (sul grafico lo vedi perfettamente perché è un prezzo, ma SET STOP… lo vede completamente errato).
Alla linea 11 metti tp = 40*pipsize e alla linea 25 è meglio che tu usi set target pprofit tp.
Con GRAPHONPRICE usa graphonprice MaxSeup + tp coloured(255,255,0,255), altrimenti non lo vedi più sul grafico.
Aggiungi anche queste righe subito dopo la 26, prima dei vari GRAPH…:
123if LongOnMarket thensell at sllong stopendifaltrimenti ti mette lo SL quando entra a mercato, ma non successivamente, perché gli ordini pendenti SCADONO automaticamente alla chiusura di ogni candela e, se ti servono ancora, occorre piazzarli di nuovo.
10/28/2021 at 6:29 PM #180490io volevo un tp del valore maxsetup(che cambia di volta in volta) + x*pipsize mentre come hai scritto tu c è solo 40*pipsize… in più pensavo di mettere al. posto del tp la. seguente stringa, if longonmarket then sell at tp stop endif. secondo te può andare?
10/28/2021 at 7:41 PM #180493Si, può andare, in questo modo risolvi il problema.
10/29/2021 at 6:29 AM #180498123456789101112131415161718192021222324252627282930313233343536DEFPARAM FLATAFTER=220000BegTime=094000EndTime=163000MyContracts=1IF Time = 094000 THENmaxSetup = highest[3](high[1])minSetup = lowest[3](low[1])sllong = MinSetupslshort = MaxSetup + sllong//minSetup//maxSetuptp = maxSetup+40*pipsize// * 2 //intervallo tra Min e Max * 2ENDIFif intradaybarindex=0 thentradethisday=0elseif barindex=tradeindex thentradethisday=1endifendifIf close > maxsetup and Time >= BegTime and Time <= EndTime and tradethisday=0 thenBuy mycontracts contract at maxSetup limitendifif longonmarket thensell at sllong stopendifif longonmarket thensell at tp stopendifgraphonprice tp coloured(255,255,0,255)graphonprice maxSetup coloured(0,255,0,255)graphonprice minSetup coloured(255,0,0,255)graph tradethisdaygraph Timeusando questo codice le operazioni risultano sballate e anche modificando il valore del tp vende sempre alla barra successiva
10/29/2021 at 10:30 AM #180534Perché stai usando STOP al posto di LIMIT (alla riga 28).
Gli ordini pendenti possono essere di due tipi:
- STOP quando il prezzo attuale (nel momento in cui gli ordini vengono piazzati) è migliore del prezzo dell’ordine pendente (in apertura o chiusura che sia), quindi entri o esci ad un prezzo peggiore
- LIMIT quando il prezzo attuale (nel momento in cui gli ordini vengono piazzati) è peggiore del prezzo dell’ordine pendente (in apertura o chiusura che sia), quindi entri o esci ad un prezzo migliore.
Ti allego una foto con un grafico che illustra quando usare STOP e quando LIMIT. Le linee VERDI e ROSSE indicano il prezzo d’entrata, il punto BLU indica il prezzo corrente.
Dovresti SEMPRE verificare, quando piazzi un ordine pendente, se deve essere di tipo LIMIT o STOP, basta che con IF… verifichi se il prezzo attuale è maggiore o minore e se entry Long o Short (la chiusura di un Long è un ordine Short, e viceversa).
Dovresti anche sempre verificare, con gli ordini pendenti, se il prezzo d’entrata o uscita è sufficientemente distante dal prezzo corrente in modo da rispettare la distanza minima richiesta dal broker (IG in questo caso). Per ogni strumento è diverso, va verificato sulla piattaforma o sul sito di IG. Durante il giorno può variare anche molto. Sul Dax è normalmente 6-7 pip, ma a volte di notte o in caso di alta volatilità può arrivare a 300! Se non la rispetti il backtest non può saperlo, ma quando esegui in demo o in reale la strategia ti verrà interrotta con il relativo messaggio d’errore.
-
AuthorPosts
Find exclusive trading pro-tools on