Problema di due condizioni
Forums › ProRealTime forum Italiano › Supporto ProOrder › Problema di due condizioni
- This topic has 13 replies, 2 voices, and was last updated 3 years ago by robertogozzi.
-
-
06/01/2020 at 2:03 AM #133998123456789TrendLong = DClose(1)> Mediana AND DClose(1)>DOpen(1) //ChiusuraGiornoPrima > MedianaGiornoPrimaTrendShort = DClose(1)< Mediana//ChiusuraGiornoPrima < MedianaGiornoPrimaCloseLong = DClose(1)>DOpen(1)//ChiusuraGiornoPrima > AperturaGiornoPrimaCloseShort = DClose(1)<DOpen(1)//ChiusuraGiornoPrima < AperturaGiornoPrimaPriceLong = Close<DClose(1)PriceShort = Close>DClose(1)//------------------------------------------------------------------------------------------------------------If NOT LONGONMARKET AND TrendLong AND CloseLong AND PriceLong thenbuy 1 shares at market
Buonasera, il pezzo di codice che allego nelle mie intenzioni dovrebbe aprire la posizione al giorno n+1 se e solo se per esempio la chiusura della barra giornaliera (la valutazione è sulla barra giornaliera anche se poi opero sui 15 minuti per il giorno successivo) è stata sopra la mediana con chiusura sopra l’apertura, purtroppo backtestando questa prima parte mi ritrovo che apre le posizioni ogni giorno anche se, per esempio la chiusura è sopra la mediana ma sotto l’apertura.
Qualcuno può farmi capire dove sbaglio?.
Ringrazio sentitamente.
06/01/2020 at 7:41 AM #134008È difficile dirlo senza il cudice completo.
Così sembra corretto, seppure con qualche ridondanza (la riga 3 è già compresa nella 1).
Tu operi sui 15 minuti del giorno 5 (supponiamo sia oggi ad esempio), sulla base delle candele giornaliere dei giorni 4 e 3. Oppure del solo giorno 4. Dipende se hai usato UpdateOnClose o Default con il timeframe giornaliero.
06/01/2020 at 7:29 PM #134090Buongiorno, grazie della risposta. In effetti riga 3 l’ho inglobata nella 1 dopo per fare una verifica. Mi spiego meglio: io opero nel giorno 5 (a 15 minuti) e voglio che entri in posizione solo se sono verificate entrambe le condizioni nella candela giornaliera del giorno 4 (quindi chiusura sopra la mediana del giorno e chiusura verde). Backtestando il sistema lui entra ogni giorno, anche se quello precedente non ha chisuo sopra la mediana o sopra l’apertura. Mi puoi spiegare cosa intendi per “Dipende se hai usato UpdateOnClose o Default con il timeframe giornaliero”.
Il codice completo in realtà lo sto costruendo perchè è complesso, ma già la prima parte non funziona nel senso che apre la posizione anche se non dovrebbe e non riesco a capire perchè.
06/01/2020 at 8:18 PM #134096UpdateOnClose aggiorna i dati alla chiusura della barra, quindi CLOSE si riferisce all’ultima candela chiusa, mentre Default aggiorna i dati secondo il passo del TF che è sul grafico quando la strategia viene eseguita, in backtest o autotrading, nel tuo caso 15 minuti, per cui CLOSE si riferisce al prezzo corrente.
06/01/2020 at 9:41 PM #134119Mi par di capire che così come è scritto prende le barre a 15 minuti mentre deve prendere i dati della barra giornaliera precedente. Come si può fare? Devo settare il grafico sul giornaliero in modo che per es. peschi nel giorno 2 i dati del giorno precedente? Non è rilevante il time frame 15 minuti anche perchè la logica è di entrare nel giorno 2 e poi o andare a take profit/stop loss o chiudere entro le 22; si entra una sola volta a determinate condizioni.
Grazie della risposta.
06/01/2020 at 10:15 PM #134122Con questo vedrai sul grafico dei prezzi la differenza della media a 20 periodi calcolata sia sulla chiusura che in corsi.
Eseguila da un TF a 15 minuti:
123456789101112Defparam CumulateOrders = false//timeframe(daily,updateonclose)mm1 = average[20,0](close)//timeframe(daily,default)mm2 = average[20,0](close)//timeframe(default)Buy at -close limitGraphOnPrice mm1 coloured(255,0,0,255) as “mm1”GraphOnPrice mm2 coloured(0,0,255,255) as “mm2”06/02/2020 at 6:46 AM #134138Buongiorno, scusami ma non capisco la tua risposta. Non è possibile impostare le condizioni?
06/02/2020 at 9:10 AM #134152Senza il codice non riesco a dirti niente circa il tuo codice.
Dal mio esempio vedi come fare. In ognuno di essi basta che aggiungi [1] per accedere ai dati della candela precedente, [2] per la seconda candela precedente, ecc… .
Quindi scegli tu quale giorno prendere.06/02/2020 at 1:38 PM #134213Buongiorno, il codice è:
123456789101112131415161718192021222324252627282930DEFPARAM CUMULATEORDERS = falseDEFPARAM FLATAFTER = 215500//------------------------------------------------------------------------------------------------------------Mediana = (DHigh(1)+DLow(1))/2MyRange = (DHigh(1)-DLow(1))/2TrendLong = DClose(1)> Mediana AND DClose(1)>DOpen(1) //ChiusuraGiornoPrima > MedianaGiornoPrimaTrendShort = DClose(1)< Mediana//ChiusuraGiornoPrima < MedianaGiornoPrimaCloseLong = DClose(1)>DOpen(1)//ChiusuraGiornoPrima > AperturaGiornoPrimaCloseShort = DClose(1)<DOpen(1)//ChiusuraGiornoPrima < AperturaGiornoPrima//------------------------------------------------------------------------------------------------------------if intradaybarindex = 0 thencountposition=0endifcondnbposperday=countposition < 1If NOT LONGONMARKET AND TrendLong AND CloseLong AND condnbposperday thenbuy 1 shares at DClose(1)limitcountposition=countposition+1set stop ploss DLow(1)set target profit (DHigh(1)+MyRange)endifIf NOT SHORTONMARKET AND TrendShort AND CloseShort AND condnbposperday thenbuy 1 shares at DClose(1)stopcountposition=countposition+1set stop ploss DLow(1)set target profit (DLow (1)-MyRange)IF time = 214500 AND OnMarket THENSELL AT MARKET //chiudere i LONG, se apertiEXITSHORT AT MARKET //chiudere gli SHORT, se apertiENDIFendifE’ da sistemare in molti punti, la mia intenzione è: verificate le condizioni sulla barra del giorno n apro la posizione il giorno n+1 e la chiudo o a target, o in stop loss o alle 21.45. Backtesando così non apre e chiude come dovrebbe.
06/02/2020 at 3:01 PM #134225Alla riga 16 usi LIMIT, ma sei certo che la chiusura sia maggiore della chiusura di ieri + la distanza richiesta da IG?
Alla riga 22, invece c’è il problema opposto, perché STOP?
Alle righe 18 e 24 indichi lo SL in modo errato: 1) usa LOSS, senza “p” iniziale in quanto non usi pips 2) devi indicare una differenza di prezzo, non un prezzo, pensa che se fosse il Dax indicheresti quasi 12000 pips di SL!
Alle righe 19 e 25 non hai usato la “p” con PROFIT, correttamente, però il TP è enorme, più dello SL!
Per il resto mi pare possa andare bene.
06/02/2020 at 3:26 PM #134231Alla riga 16 usi LIMIT, ma sei certo che la chiusura sia maggiore della chiusura di ieri + la distanza richiesta da IG? Forse ho sbagliato istruzione intendevo “compra al prezzo di chiusura di ieri o inferiore”
Alla riga 22, invece c’è il problema opposto, perché STOP? “Forse ho sbagliato istruzione intendevo “compra al prezzo di chiusura di ieri o superiore”
Alle righe 18 e 24 indichi lo SL in modo errato: 1) usa LOSS, senza “p” iniziale in quanto non usi pips 2) devi indicare una differenza di prezzo, non un prezzo, pensa che se fosse il Dax indicheresti quasi 12000 pips di SL! OK un refuso
Alle righe 19 e 25 non hai usato la “p” con PROFIT, correttamente, però il TP è enorme, più dello SL! Perchè il take profit è il max di ieri più metà del range di ieri non mi sembra enorme in condizioni normali sul dax circa 6o punti
Per il resto mi pare possa andare bene. Sistemo e riprovo a backtestare
Grazie della tua cortesia e disponibilità
06/02/2020 at 4:44 PM #13424460???
Forse 12060!
06/02/2020 at 5:00 PM #134248Hai ragione, devo indicare una differenza di prezzo e non un prezzo, sono abituato a fissare take profit di prezzo.
Grazie mille
06/02/2020 at 6:46 PM #134279Se ci fosse anche la possibilità di indicare un prezzo, sia per il TP che per lo SL sarebbe utile, per non dovere fare i calcoli col rischio di sbagliare 🙂
-
AuthorPosts
Find exclusive trading pro-tools on