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/02/2021 at 9:26 AM #162923
Ciao Roberto ho notato due cose molto strane (bug?) in un TS.
1)Ti è mai capitato che un TS non entra a mercato, mentre dalle condizioni inserite nei Graph dovrebbe entrare? (ho creato ad hoc un TS semplificato con sole 2 condizioni e tolto tutto il resto: short, condizioni temporali…., quindi sono solo 2 graph)
2)Smontando tutte le condizioni una ad una ho notato un altra cosa ancora più strana: se in questo TS tolgo una condizione di quelle di uscita allora entra! Ti è mai capitato che una condizione di uscita entra in conflitto e NON far entrare un TS? (se è così è sicuramente un bug)
03/02/2021 at 10:34 AM #162931Ho capito. Un Ts long non entra long se ha le condizioni per entrare long, ma contemporaneamente sono presenti delle condizioni che lo farebbero uscire subito.
Pensavo che in una situazione del genere il TS entrava ed usciva subito, non che non entrava per niente se sono presenti contemporaneamente condizioni di entrata ed uscita (condizioni di uscita molto particolari chiaramente altrimenti sarebbe una contraddizione logica).
Questo spiega anche la presenza dei Graph senza segnale di acquisto in quanto il Graph segnala solo le condizioni di acquisto senza considerare il resto.
03/02/2021 at 10:44 AM #162932Per potere dare una risposta e verificare se è un bug o un tuo errore occorre il coduice cmpleto e funzionante, oltre a sapere su quale strumento e TF l’hai usato e data ed ora della candela dove non ha (apparentemente) funzionato come desuiderato.
1) A me è capitato quando ho settato orari di personalizzati (sul DAX), togliendo i fine settimana. Durante la candela del fine settimana si verificava un incrocio (che io non vedevo sul grafico, avendo eliminato, solo visivamente, quei dati) ed entrava a mercato. Anch’io ho subito pensato ad un bug, invece ero io che avevo cambiato gli orari o impedito che i dati venissero visualizzati. Ce n’è voluto di tempo e solo grazie a Nicolas sono riuscito a capire il problema.
2) Si, può succedere se la condizione di uscita è subito dopo quella d’entrata e non verifica se sei già a mercato, ad esempio, questa uscita fa si che non avvenga neppure l’entrata (si annullano a vicenda se entrambe le condizioni sono vere):
12345678x = 1y = 1IF x = 1 THENBUY at MarketENDIFIF y = 1 THENSELL at MarketENDIFquesta, invece, funziona:
12345678x = 1y = 1IF x = 1 THENBUY at MarketENDIFIF y = 1 AND LongOnMarket THENSELL at MarketENDIFperché verifica che sia già a mercato, informazione per la quale serve una barra di tempo affinché sia conosciuta.
03/02/2021 at 10:46 AM #16293303/02/2021 at 10:59 AM #162934Ho controllato e semplicemente accadeva quello che hai scritto nel punto 2: “(si annullano a vicenda se entrambe le condizioni sono vere)”.
Nel mio caso la questione era abbastanza complicata in quanto le condizioni di entry ed Exit erano ben separate.
Semplificando al massimo il mio caso: il Ts entra long con: “close crosses over media”, ma una delle condizioni di uscita era che: “close < determinato livello” che nel 99% dei casi è sotto tale cross.
Poi pensavo erroneamente che il TS sarebbe entrato ed uscito e non che annullava l’operazione.
Grazie per il chiarimento
03/11/2021 at 11:08 AM #163818Mi collego a questo topic per chiarire due punti:
- c’è un modo per far durare più di una barra un ordine stop/limite?
- c’e un modo per far si che un ordine stop/limite non scavalchi l’annullamento di un operazione? (per il verificarsi di essere entrambe vere le condizioni di entrata ed uscita?)
Un esempio (vd immagine): il TS base, sopra il grafico, che ha come entrata :
If cShortEntry THEN
SELLSHORT 1 CONTRACTS AT MARKET
ENDIFnon entra giustamente a mercato in quanto, come si vede dal GRAPH arancione, sono vere entrambe le condizioni di entrata ed uscita. Il graph è questo:
graph (cShortEntry and c1SellExit) coloured (237, 168, 105)
se invece nello stesso TS utilizzo per entrare un ordine limite (nell’immagine TS in alto con le frecce viola):
If cShortEntry THEN
SELLSHORT 1 CONTRACTS AT low stop
ENDIFil TS entra a mercato al minimo della barra, come da condizione, MA scavalcando la contraddittorietà delle condizioni di entrata-uscita.
03/11/2021 at 11:43 AM #163823Ho controllato che la differenza tra il prezzo a mercato ed il prezzo limite non è mai abbastanza grande da annullare la condizione di contraddittorietà (c1SellExit), quindi potrebbe anche essere un malfunzionamento. Cosa ne pensi? (In ogni casa mi interessa evitare l’entrata con ordine limite se possibile)
03/11/2021 at 12:05 PM #163824La durata è una barra e non si può cambiare (sul Daily dura un giorno, su 1 secondo dura 1 secondo). Per farlo durare più di una basta basta reinserirlo ad ogni barra, finché le tue condizioni lo richiedono.
Dalle immagini non vedo niente, solo delle barre e frecce, ma non ho idea del perché ci siano o perché tu ce le abbia messe. Probabilmente sono le tue condizioni, che non conosco.
Un Ordine pendente, una volta piazzato, entra a quel livello di prezzo indipendentemente da qualunque altra condizione. Termina la sia validità alla fine della barra e non c’è altro da fare- Se, nel corso della barra, certe condizioni si annullano…. lui non può saperlo e puoi solo sperare che non entri.
Addirittura gli ordini pendenti, se non stai attento a come li metti, possono accumulare posizioni anche se hai messo DEFPARAM CumulateOrders = FALSE, ad esempio se metti un ordine BUY LIMIT ed uno BUY STOP possono entrare entrambi, perché una volta piazzati la gestione passa al broker, ProOrder ne riprende il controllo alla chiusura della barra, a cose ormai fatte!
03/11/2021 at 12:12 PM #163826Ok, quindi ecco perchè entra: “Un Ordine pendente, una volta piazzato, entra a quel livello di prezzo indipendentemente da qualunque altra condizione”
Grazie per le info sul pericolo degli ordini pendenti, non lo conoscevo.
Per reinserire ad ogni barra l’ordine pendente in automatico, come devo modificare il codice di entrata? Grazie
If cShortEntry THEN
SELLSHORT 1 CONTRACTS AT low stop
ENDIF03/11/2021 at 12:52 PM #163835Esatto, se vuoi puoi aggiungere AND Not OnMarket alla condizione d’entrata. E, nel caso fosse contemporaneamente VERA anche c1SellExit, puoi anche aggiungere AND Not c1SellExit:
123If cShortEntry AND Not OnMarket AND Not c1SellExit THENSELLSHORT 1 CONTRACTS AT low stopENDIF03/11/2021 at 1:15 PM #163837Perfetto grazie. Ti chiedo un ultima cosa sugli ordini pendenti. Questa volta stop loss di un Ts automatico (operazione reale). Ieri mi è scattato uno stop loss automatico (set stop %loss 0.6) con proOrder, mentre in proBackTest non è scattato.
Ho scoperto che la causa è stata un slippage sul CFD Nasdaq di 1.2 tick!, Il prezzo di entrata long di proBackTest è stato: 12827.9, quello di proOrder: 12829.1 – se metto nel proBackTest lo stop a 0.59% scatta!)
A parte il caso sfortunato ma istruttivo (ecco perchè lo riporto), ho anche visto che l’ordine stop è stato eseguito a 12751.2, mentre come si vede nella foto, il minimo della barra è stato superiore: 12751.4
Ti chiedo: questa uscita STOP sotto il minimo della barra, penso dovuto ancora a slippage di uscita e mancanza di liquidità dei CFD, può accadere con un ordine stop garantito?
(PS mi puoi anche indicare uno snippet code per inserire lo slippage?) Ciao e grazie
03/11/2021 at 2:39 PM #163845Lo stop garantito è garantito che sia quello effettivo, indipendentemente da slippage o gap.
In che senso vuoi inserire lo slippage? Fammi un esempio.
03/11/2021 at 3:02 PM #163846Pensavo semplicemente ad una condizione da definire all’inizio del codice, in cui si determinano i pips da aggiungere alle condizioni di entrata/uscita.
Es. buy 1 contract at market + slippage
Non penso sia complicato da costruire, se però c’erano dei codici già pronti era meglio
03/11/2021 at 5:29 PM #163867Lo Slippage non è fisso, può essere 0.5 pips, 1, 5 o 20 pips! Dipende dal momento, se per caso la tua strategia fa un entrata tra le 14:30 e le 14:40 di un venerdì in cui ci sono i dati Usa NFP…. si può arrivare davvero a 20 pips!
La tua idea, più che allo slipèpèage può essere usata per la distanza minima dal prezzo corrente richiesta per molti strumenti quando devi piazzare ordini pendenti. Un esempio è questo codice che ho fatto per il trailing stop, dove, alle righe 82 e 103, verifico la distanza dal prezzo in modo da entrare a Mercato, Limit o Stop https://www.prorealcode.com/topic/breakeeven-trailing-profit/page/3/#post-158898.
03/15/2021 at 9:23 AM #164195Ciao Roberto, ho visto il tuo codice sulla distanza minima che potrebbe essere usato al posto dello slippage.
Ti volevo chiedere un altra cosa: c’è un modo qualsiasi per escludere il pericolo di entrare più volte sulla stessa barra con un ordine limite? (se l’ordine non viene preso in quella barra e viene cancellato non importa)
Vorrei sostituire l’entrata a mercato con qualcosa come:
123IF cLongEntry THENBUY 1 CONTRACTS at close-0.2*pointSize LIMITENDIF -
AuthorPosts
Find exclusive trading pro-tools on