Possibile Bug proOrder
Forums › ProRealTime forum Italiano › Supporto ProOrder › Possibile Bug proOrder
- This topic has 36 replies, 2 voices, and was last updated 3 years ago by MauroPro.
-
-
03/15/2021 at 9:28 AM #164197
Usa sempre il pulsante “Insert PRT code” quando inserisci il codice nei tuoi post per facilitare la lettura degli altri.
Grazie 🙂
Il tuo codice mi sembra vada bene, l’hai provato?
Sulla stessa barra puoi entrare se hai piazzato più ordini pendenti, se ne hai piazzato solo uno no, perché una volta entrato viene cancellato.
Alla chiusura della barra vengono comunque cancellati tutti gli ordini pendenti non entrati a mercato.
03/15/2021 at 9:44 AM #164201Il codice lo ho provato e funziona. Volevo solo accertarmi che non ci fosse il pericolo di più entrate sulla stessa barra, come dicevi:
“Addirittura gli ordini pendenti, se non stai attento a come li metti, possono accumulare posizioni anche se hai messo DEFPARAM CumulateOrders = FALSE”
Non capisco cosa significa che sulla barra posso entrare se ho piazzato più ordini pendenti. Nel caso sopra ne piazzo uno ed il TS entra.
Sembrerebbe anche che il pericolo non c’è di entrare più volte sulla stessa barra con il codice sopra riportato. Corretto?
03/15/2021 at 9:46 AM #16420203/15/2021 at 10:18 AM #164203Se c’è il pericolo puoi saperlo solo tu, se piazzi due ordini pendenti a distanza di 500 pips l’uno dall’altro… di pericolo ce n’è poco, a meno che tu non stia lavorando con grafici settimanali o mensili.
Se li piazzi a distanze ravvicinate potrebbero entrare entrambi; se sono nella stessa direzione accumulando più posizioni, se sono in direzioni opposte il secondo che entra chiude il primo.
DEFPARAM CumulateOrders = FALSE NON ha nessun effetto con gli ordini pendenti, nel senso che se tu l’hai messo all’inizio, ma piazzi due ordini poendenti che potrebbero entrare entrambi, puoi trovarti con due ordini eseguiti.
Basta fare un pò d’attenzione nel creare una strategia, non dovrebbero essertci problemi, basta esserne consapevoli.
03/15/2021 at 10:42 AM #164204Controllerò bene empiricamente tutti i casi, ma non mi sembra a prima vista che si possano avere POTENZIALMENTE due entrate long nella stessa barra (che era la mia semplice domanda iniziale), con la formula :
123IF cLongEntry THENBUY 1 CONTRACTS at close-0.2*pointSize LIMITendifIn ogni caso ho appena scoperto che la condizione per cui si esclude correttamente un entrata se in conflitto con le condizioni di uscita, non vale per gli ordini pendenti.
Questo lo avevamo chiarito se l’ordine pendente era nella condizione di entrata (che come hai scritto, scavalca le altre condizioni), ma non pensavo che potesse accadere anche se l’ordine pendente era per l’uscita!
In pratica, il TS entra in un long conflittuale anche con la seguente formula:
123456IF cLongEntry THENBUY 1 CONTRACTS at marketENDIFIF cLongExit thenSELL 1 CONTRACTS at close+0.2*pointSize limitendif03/15/2021 at 11:04 AM #164206Nel primo esempio non possono esserci doppie entrate perché c’è un solo ordine ed una volta eseguito viene cancellato.
Nel secondo può esserci un conflitto, ma non succede gran che… la posizione aperta viene chiusa ed è quello che deve fare se c’è la condizione di uscita. Se non vuoi il conflitto puoi aggiungere come condizione, alla riga 4:
1AND LongOnMarketin questo caso all’entrata questo ordine non viene eseguito, ma solo dalla seconda barra in poi. Attenzione però… se fai così è consigliabile, subito dopo il BUY della riga 2 aggiungere almeno uno SL o anche il TP, altrimenti resti senza paracadute per la prima barra!
03/23/2021 at 8:19 PM #165095Ciao Roberto, vorrei far durare un ordine limite, nel codice sotto riportato, per la durata di tre barre. Vorrei usare un flag, ma non trattandosi di una condizione, ma di un ordine pendente non so come scriverlo. Riesci a scriverlo? (ho inserito in ogni caso uno stop loss aggiuntivo, come consigliavi, per l’ordine limite in uscita!)
[Lo scopo di usare ordini limite con il close della barra precedente è quello, rischiando in rarissimi casi (ho controllato) di non essere eseguito, di eliminare la differenza tra proBackTest e proOrder, quindi lo spread]
123IF cLongEntry and tradeAllowed=1 and nLoss<6 THENBUY 1 CONTRACTS AT close limitENDIF03/23/2021 at 9:54 PM #165108Prova così:
12345678Once Conto = 0If OnMarket thenConto = 0EndifIF cLongEntry and tradeAllowed=1 and nLoss<6 and Conto < 3 THENBUY 1 CONTRACTS AT close limitConto = Conto + 1ENDIF03/23/2021 at 10:41 PM #165115Ho provato ma non funziona: ci sono casi in cui mantenendo l’ordine limite per due barre dovrebbe chiaramente entrare, invece non entra. Possibile che dipenda dal fatto che il TS non è ancora a mercato quando piazza l’ordine pendente? Hai altre prove ?
03/23/2021 at 11:56 PM #165123Tu hai chiesto di potere reimmettere per 3 volte l’ordine. Questo è quello che fa.
03/24/2021 at 11:26 AM #165149Da me non mantiene le condizioni, non ha alcun effetto. Mi puoi controllare questo che ho scritto che non funziona e non capisco il motivo?
1234567891011121314151617181920nBarsLimit=5countBars=countBars+1if onMarket thenlimitOk=1countBars=0endifif countBars>=nBarsLimit thenlimitOk=0endif// -------------------------------------------------------------------IF cLongEntry and tradeAllowed=1 and nLoss<6 and limitOk=1 THENBUY 1 CONTRACTS AT close limitlimitOk=0ENDIFIF cLongExit and not shortonmarket thenSELL 1 contracts at close limitendif03/24/2021 at 11:57 AM #165152Nel caso che ho postato è induicato un limite MASSIMO di barre,nel caso in cui le condizioni durino più di 3 barre. Questo è quanto avevi chiesto (o almeno io l’ho capito così).
Tu, invece,vuoi che siano le condizioni ad essere mantenute valide per 3 barre?
Se è così, allora il codice è:
1234Cond = cLongEntry and tradeAllowed=1 and nLoss<6IF summation[3](Cond) THENBUY 1 CONTRACTS AT close limitENDIFin questo caso piazza l’ordine pendente fino a 3 volte, anche se le condizioni non sono mantenute la seconda e la terza volta.
03/24/2021 at 12:29 PM #165154Ho provato, ma il TS funziona malissimo: si vanno a confondere troppe condizioni.
La condizione deve scattare in una barra, non posso mantenere le condizioni valide ulteriormente. Quindi l’unica soluzione, se possibile, è far si che solo l’ordine limite venga mantenuto per x barre dopo la prima barra (nel mio esempio 5 barre).
Se è possibile correggere il codice che ho postato sopra lo provo, altrimenti mantengo l’ordine limite solo per una barra (come fa naturalmente il programma). Grazie
03/24/2021 at 2:46 PM #165181Nel mio esempio sostituisci il 3 col 5 e funziona!
03/24/2021 at 3:36 PM #165183Non vedo perché complicare le cose semplici, ad ogni modo credo che nel tuo codice l’errore sia nel non avere inserito la riga 2 tra Not OnMarket:
123IF Not OnMarket THENcountBars=countBars+1ENDIFma non è chiaro se anche facendo così funzionerà, è l’impostazione logica che non torna.
Tu vuoi che una condizione, una volta verificata, sia valutata per 3 o 5 barre anche se non è più verificata. Basta usare SUMMATION!
-
AuthorPosts
Find exclusive trading pro-tools on