Info uscita ordini limite

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #204228 quote
    MauroPro
    Participant
    Veteran

    Ciao Roberto, non riesco ad uscire correttamente con gli ordini limite nel secondo codice sotto riportato. Lo puoi controllare – riscrivere (anche diversamente)?

    Questo codice (codice 1) con ordini “normali” funziona correttamente (prova su cfd Dax  – 15m) : il sistema liquida la prima parte della posizione dopo 50 punti di gain e la seconda parte dopo 100 punti oltre questi 50 punti.

    defParam cumulateOrders =false
    positionSize = 2
    cLong = close crosses over average[50,0]

    If not onMarket and cLong then
    buy positionSize contract at market
    set stop pLoss 100
    flagL = 0
    elsIf longOnMarket and (close – tradePrice(1)) > 50*pointSize and flagL = 0 then
    sell (positionSize/2) contract at market
    flagL = 1
    elsIf longOnMarket and (close – tradePrice(1)) > 100*pointSize and flagL = 1 then
    sell (positionSize/2) contract at market
    flagL = 0
    endif

    Poi ho riscritto il codice con ordini limite in modo che il TS esca ESATTAMENTE a 50 e 100 punti (100 sempre contando dopo i primi 50 punti).

    Tuttavia il TS liquida correttamente la prima parte a 50 punti esatti e sempre ad altri 50 punti (e non 100) la seconda parte, e non capisco il motivo (vedi immagine, sistema B sopra).

    defParam cumulateOrders =false
    positionSize = 2
    cLong = close crosses over average[50,0]

    If not onMarket and cLong then
    buy positionSize contract at market
    set stop pLoss 100
    flagL = 0
    elsIf longOnMarket and flagL = 0 then
    sell (positionSize/2) contract at tradePrice(1) + 50*pointSize limit
    flagL = 1
    elsIf longOnMarket and flagL = 1 then
    sell (positionSize/2) contract at tradePrice(1) + 100*pointSize limit
    flagL = 0
    endif

    #204560 quote
    robertogozzi
    Moderator
    Master

    Alla riga 14 scrivi:

    flagL = 2
    #204568 quote
    MauroPro
    Participant
    Veteran

    Ho provato ma non funziona, inoltre non splitta più nemmeno la posizione.

    #204570 quote
    robertogozzi
    Moderator
    Master

    Perché FlagL va settato ad 1 al di fuori dell’IF dove vengono piazzati gli ordini, altrimenti lo rimette a zero dopo la prima uscita:

    defParam cumulateOrders =false
    positionSize = 2
    cLong = close crosses over average[50,0]
    IF lONGOnMarket THEN
       IF abs(CountOfPosition) < abs(CountOfPosition)[1] THEN
          Flagl = 1
       ENDIF
    ENDIF
    If not onMarket and cLong then
       buy positionSize contract at market
       set stop pLoss 100
       flagL = 0
    elsIf longOnMarket and flagL = 0 then
       sell (positionSize/2) contract at tradePrice(1) + 50*pointSize limit
    elsIf longOnMarket and flagL = 1 then
       sell (positionSize/2) contract at tradePrice(1) + 100*pointSize limit
    endif
    MauroPro thanked this post
    #204577 quote
    MauroPro
    Participant
    Veteran

    Ciao Roberto, lo ho provato e funziona, ora provo a metterlo nel sistema reale.

    Una cosa al volo: in base alla tua esperienza da che cosa può dipendere se un TS viene eseguito nel backtest e non viene eseguito nel proOrder? (nella lista del proOrdere il TS è attivo ma non entra e non compare nesun segnale)

    #204578 quote
    robertogozzi
    Moderator
    Master

    Queste possono essere le principali cause (tradotto da un post di Nicolas):

    • Differenza di prezzo (Spread)
    • Slittamento (slippage)
    • Rifiuto di ordini per uno dei motivi sopra indicati, ma anche per la distanza consentita dal prezzo corrente per inserire ordini in sospeso (nota come “distanza minima”)
    • Orari di negoziazione diversi (codice ProOrder lanciato in un fuso orario diverso / orari personalizzati, dall’utente)
    • Problema di codifica: divisione per errore zero, periodi nulli o negativi per indicatori, ecc…
    • Mancanza di reattività dei server demo IG (se IG è il broker), anche se questo è notevolmente migliorato rispetto allo scorso anno
    • Effettuare backtest senza l’opzione tick-by-tick
    • L’istruzione “set stop trailing” che dà a IG il controllo totale del tuo stoploss, può essere spostata in modo diverso tra i conti a causa dei punti di cui sopra
    • Conti a rischio limitato e loro regole
    • Regole e commissioni di stoploss garantite
    • Avviare una strategia in un momento diverso (1 ora o anche 1 minuto dopo): a seconda del codice della strategia, i risultati di alcuni calcoli potrebbero essere diversi
    • Margine richiesto sul conto di trading (non vengono effettuati test demo o backtest su questo argomento)
    • Tariffe notturne e infrasettimanali
    • Adeguamento automatico degli ordini stop controllati o meno all’avvio del ProOrder
    • Distanza minima utilizzata nei backtest per ordini pendenti, non la stessa del trading reale, a causa dei requisiti del broker
    • Dimensioni del contratto diverse tra backtest e live

    poiché i backtest vengono testati solo sulla cronologia senza alcuna connessione al mercato live, potresti riscontrare differenze con l’ambiente di trading dal vivo reale soggetto ad allargamento dello spread, slippage, ecc…

    #204579 quote
    MauroPro
    Participant
    Veteran

    Controllo bene e ti farò sapere, comunque lo stesso TS era già entrato quindi oggi o IG o il proOrder non hanno rispsto al segnale

    #204580 quote
    MauroPro
    Participant
    Veteran

    ora ho disattivato il TS da proOrder (era ancora in attesa di segnali), appena il TS esce da proBackTest lo riattivo in proOrder

Viewing 8 posts - 1 through 8 (of 8 total)
  • You must be logged in to reply to this topic.

Info uscita ordini limite


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
MauroPro @mauropro Participant
Summary

This topic contains 7 replies,
has 2 voices, and was last updated by MauroPro
3 years, 2 months ago.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 11/15/2022
Status: Active
Attachments: 1 files
Logo Logo
Loading...