Possibile Bug proOrder

Viewing 15 posts - 16 through 30 (of 37 total)
  • Author
    Posts
  • #164197 quote
    robertogozzi
    Moderator
    Master

    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.

    #164201 quote
    MauroPro
    Participant
    Veteran

    Il 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?

    #164202 quote
    MauroPro
    Participant
    Veteran

    Intendi dire che il pericolo c’è (di più entrate sulla stessa barra) solo se piazzo più ordini pendenti sulla stessa barra?

    #164203 quote
    robertogozzi
    Moderator
    Master

    Se 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.

    #164204 quote
    MauroPro
    Participant
    Veteran

    Controllerò 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 :

    IF  cLongEntry THEN
    BUY 1 CONTRACTS at close-0.2*pointSize LIMIT
    endif

    In 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:

    IF  cLongEntry   THEN
    BUY 1 CONTRACTS at market
    ENDIF
    IF   cLongExit then
    SELL 1 CONTRACTS at close+0.2*pointSize limit
    endif
    #164206 quote
    robertogozzi
    Moderator
    Master

    Nel 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:

    AND LongOnMarket

    in 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!

    #165095 quote
    MauroPro
    Participant
    Veteran

    Ciao 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]

    IF  cLongEntry  and tradeAllowed=1 and nLoss<6 THEN
    BUY 1 CONTRACTS AT close limit
    ENDIF
    #165108 quote
    robertogozzi
    Moderator
    Master

    Prova così:

    Once Conto = 0
    If OnMarket then
       Conto = 0
    Endif
    IF  cLongEntry  and tradeAllowed=1 and nLoss<6  and Conto < 3 THEN
       BUY 1 CONTRACTS AT close limit
       Conto = Conto + 1
    ENDIF
    #165115 quote
    MauroPro
    Participant
    Veteran

    Ho 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 ?

    #165123 quote
    robertogozzi
    Moderator
    Master

    Tu hai chiesto di potere reimmettere per 3 volte l’ordine. Questo è quello che fa.

    #165149 quote
    MauroPro
    Participant
    Veteran

    Da me non mantiene le condizioni, non ha alcun effetto. Mi puoi controllare questo che ho scritto che non funziona e non capisco il motivo?

    nBarsLimit=5
    countBars=countBars+1
    
    if onMarket then
    limitOk=1
    countBars=0
    endif
    
    if countBars>=nBarsLimit then
    limitOk=0
    endif
    // -------------------------------------------------------------------                               
    IF  cLongEntry  and tradeAllowed=1 and nLoss<6 and limitOk=1 THEN
    BUY 1 CONTRACTS AT close limit
    limitOk=0
    ENDIF
    
    IF   cLongExit and not shortonmarket then
    SELL 1 contracts at close limit
    endif
    #165152 quote
    robertogozzi
    Moderator
    Master

    Nel 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 è:

    Cond = cLongEntry and tradeAllowed=1 and nLoss<6
    IF summation[3](Cond) THEN
       BUY 1 CONTRACTS AT close limit
    ENDIF

    in questo caso piazza l’ordine pendente fino a 3 volte, anche se le condizioni non sono mantenute la seconda e la terza volta.

    #165154 quote
    MauroPro
    Participant
    Veteran

    Ho 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

    #165181 quote
    robertogozzi
    Moderator
    Master

    Nel mio esempio sostituisci il 3 col 5 e funziona!

    #165183 quote
    robertogozzi
    Moderator
    Master

    Non 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:

    IF Not OnMarket THEN
       countBars=countBars+1
    ENDIF

    ma 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!

Viewing 15 posts - 16 through 30 (of 37 total)
  • You must be logged in to reply to this topic.

Possibile Bug proOrder


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
MauroPro @mauropro Participant
Summary

This topic contains 36 replies,
has 2 voices, and was last updated by MauroPro
4 years, 10 months ago.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 03/02/2021
Status: Active
Attachments: 3 files
Logo Logo
Loading...