Ordine non chiuso.
Forums › ProRealTime forum Italiano › Supporto ProOrder › Ordine non chiuso.
- This topic has 11 replies, 2 voices, and was last updated 6 years ago by robertogozzi.
-
-
12/14/2017 at 6:22 PM #55691
Ciao a tutti, ho fatto un trading sistem ma presenta due bug che non capisco, in pratica non mi chiude i long quando vorrei nonostante io abbia impostato questo parametro di uscita:
// Condizioni per uscire da posizioni long
ciclo = CCI[7]
escilong = (ciclo CROSSES UNDER 100)
IF escilong THEN
SELL AT MARKET
ENDIFCome ho messo nella foto sarebbe dovuto essere inserito un ordine di chiusura quando il CCI oltrepassa in discesa 100, ma ciò non è avvenuto. (meno male che sta solo in demo).
Ho un altro problema, lo script, nonostante abbia questi parametri iniziali;
DEFPARAM FLATBEFORE = 080000
// Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all’orario “Flat After”
DEFPARAM FLATAFTER = 210000Mantiene le posizioni aperte oltre le ore 21, non le chiude proprio la sera.
Non capisco perchè. Potete aiutarmi?
12/14/2017 at 6:38 PM #5569512/14/2017 at 6:47 PM #55697Per quanto riguarda la prima domanda, forse alla candela da te indicata può darsi che il CCI fosse 100,00 e quindi non ancora UNDER, però avrebbe dovuto chiudere il trade alla candela successiva. Occorrerebbe il codice completo, perché può darsi che quelle poche righe che tu hai scritto facciano parte, per tua scelta o per tuo errore, di unblocco IF che risulta FALSO e non viene mai eseguito, quindi anche gli IF più interni seguono la stessa sorte.
Per la seconda domanda, non so proprio dirti, prova con altri strumenti oppure stesso strumento ma di diverso tipo, mini ecc….
Per scrivere il codice , utilizza il pulsante <> “insert PRT code”
12/14/2017 at 7:00 PM #55699Per quanto riguarda la prima domanda, forse alla candela da te indicata può darsi che il CCI fosse 100,00 e quindi non ancora UNDER, però avrebbe dovuto chiudere il trade alla candela successiva. Occorrerebbe il codice completo, perché può darsi che quelle poche righe che tu hai scritto facciano parte, per tua scelta o per tuo errore, di unblocco IF che risulta FALSO e non viene mai eseguito, quindi anche gli IF più interni seguono la stessa sorte. Per la seconda domanda, non so proprio dirti, prova con altri strumenti oppure stesso strumento ma di diverso tipo, mini ecc…. Per scrivere il codice , utilizza il pulsante <> “insert PRT code”
Grazie mille! Il problema era proprio la funzione IF in origine avevo questa funzione:
//*****APERTURA LONG***** Condizioni per entrare su posizioni long
IF NOT ONMARKET THEN
parametri
if time > 080000 and C1 and c2 and not daysForbiddenEntry then
BUY PositionSize CONTRACT AT MARKET
ENDIF
// Condizioni per uscire da posizioni long
ciclo = CCI[55]
escilong = (ciclo CROSSES UNDER 100)
IF escilong THEN
SELL AT MARKET
ENDIF
ENDIFed infatti non usciva, allora ho eliminato il primo if not on market ed ho fatto così
if time > 080000 and C1 and c2 and not daysForbiddenEntry and not onmarket then
BUY PositionSize CONTRACT AT MARKET
ENDIFed ora è uscito!
12/14/2017 at 7:08 PM #5570012/14/2017 at 7:18 PM #55701123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102// Definizione dei parametri del codiceDEFPARAM CumulateOrders = False // Posizioni cumulate disattivatedaysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0// /////////////////////////////////////////////////////////////////////////positionsize=1//+2*round((strategyprofit*2)/10000)// PARAMETRI DI PREZZO// Stop e targetSET STOP PLOSS 70set target profit 187//WeightedClose//TotalPrice//TypicalPrice//TRADEPRICE//TOTALPRICE//*****APERTURA LONG***** Condizioni per entrare su posizioni longIF NOT ONMARKET THENI1 =I2 =c1 =c2 =if time > 080000 and C1 and c2 and not daysForbiddenEntry thenBUY PositionSize CONTRACT AT MARKETENDIF// Condizioni per uscire da posizioni longciclo = CCI[7]escilong = (ciclo CROSSES UNDER 100)IF escilong THENSELL AT MARKETENDIFENDIF//*****APERTURA SHORT*****///////////////////IF NOT ONMARKET THENI1 =I2 =c1 =c2 =if time>080000 and C1 and c2 and not daysForbiddenEntry thensellshort PositionSize CONTRACT AT MARKETENDIF// Condizioni per uscire da posizioni longciclo = CCI[55]escishort = (ciclo CROSSES UNDER 84.1)IF escishort THENexitshort AT MARKETENDIFENDIF//************************************************************************//trailing stop functiontrailingstart = 96 //trailing will start @trailinstart points profittrailingstep = 8 //trailing step to move the "stoploss"//reset the stoploss valueIF NOT ONMARKET THENnewSL=0ENDIF//manage long positionsIF LONGONMARKET THEN//first move (breakeven)IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THENnewSL = tradeprice(1)+trailingstep*pipsizeENDIF//next movesIF newSL>0 AND close-newSL>=trailingstep*pipsize THENnewSL = newSL+trailingstep*pipsizeENDIFENDIF//manage short positionsIF SHORTONMARKET THEN//first move (breakeven)IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THENnewSL = tradeprice(1)-trailingstep*pipsizeENDIF//next movesIF newSL>0 AND newSL-close>=trailingstep*pipsize THENnewSL = newSL-trailingstep*pipsizeENDIFENDIF//stop order to exit the positionsIF newSL>0 THENSELL AT newSL STOPEXITSHORT AT newSL STOPENDIF//************************************************************************/////////////////////////////////////////////////////////////////////////////////////// Sell at end of dayif time>215300 thenexitshort at marketsell at marketendif// Earlier friday exit. Insurance against accidental holding over weekendsif dayofweek=5 and time>212300 thenexitshort at marketsell at marketendif12/14/2017 at 7:19 PM #55702Se elimino la riga 18 e la 31, l’uscita viene recepita dal sistema e l’ordine viene chiuso correttamente, ma se vado ad eliminare ugualmente la 35 e la 48 il problema mi si ripresenta 🙁
12/14/2017 at 10:43 PM #55710La riga 45 credo dovrebbe essere
1escishort = (ciclo CROSSES OVER 84.1)questo credo sia il problema, non l’avere tolto le righe 35 e 48.
12/15/2017 at 9:58 PM #5578012/15/2017 at 10:57 PM #55785La riga 45 credo dovrebbe essere
1escishort = (ciclo CROSSES OVER 84.1)questo credo sia il problema, non l’avere tolto le righe 35 e 48.
L’hai fatto?
12/16/2017 at 12:48 AM #55791Intanto grazie per avermi fatto notare l’errore. Ma pare che oggi quell’operazione che ieri apriva e non chiudeva non sarebbe stata aperta… possibile che possa esser stato per causa del rollover sullo strumento della data di ieri?
Il problema è che backtestare sui 30 minuti viene molto limitato nel tempo, e questo rende il tutto molto aleatorio.
12/16/2017 at 1:47 AM #55793Non credo c’entri il rollover, ma non saprei dirlo con certezza.
-
AuthorPosts
Find exclusive trading pro-tools on