Chiusura parziale in guadagno

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #156920 quote
    supermyguel
    Participant
    Average

    Buongiorno

    Mi riallaccio a questo thread visto che l’argomento è più o meno lo stesso.

    Visto che con PRT11 si possono fare vendite parziali volevo inserire un’istruzione nel trading system che:

    • mi venda metà posizione ad un determinato guadagno (e funziona)
    • sposti lo stop loss iniziale dal valore inserito a tradeprice. Qua mi blocco perchè il sistema modifica correttamente lo stop loss (lo vedo da graph), ma poi, la candela successiva alla vendità della metà, chiude interamente la posizione perchè “vede” ancora la condizione della prima metà. Come posso evitare che la “veda”?
    if not onmarket then
    halfposition=0
    endif
    
    if miecondizioni then 
    IF miecondizioni2 then
    buy N shares AT MARKET
    halfposition=1
    SET STOP %LOSS 0.92
    SET TARGET %PROFIT 0.6
    else
    if miecondizioni3 then
    sellshort N shares at market
    halfposition=1
    SET STOP %LOSS 0.92
    SET TARGET %PROFIT 0.6
    endif
    endif
    endif
    
    chiusuraparziale= (positionprice*10000*0.0045)
    livellolong=  (close-positionprice)*10000
    livelloshort= (positionprice-close)*10000
    
    
    
    If longonmarket and livellolong*pipsize > chiusuraparziale*pipsize then
    sell partial shares at market
    halfposition=2
    endif
    
    If shortonmarket and livelloshort*pipsize > chiusuraparziale*pipsize  then
    exitshort partial shares at market
    halfposition=2
    endif
    
    
    If Not OnMarket Then
    NewSL = 0
    Else
    If onmarket and partial Then
    If halfposition=2 Then
    NewSL = tradeprice
    Endif
    If NewSL > 0 Then
    SELL at NewSL Stop
    EXITSHORT at NewSL Stop
    Endif
    Endif
    Endif
    #156926 quote
    robertogozzi
    Moderator
    Master

    Per ogni domanda diversa (anche se lievemente) va creato un nuovo argomento.

    Grazie 🙂

    L’ho fatto io stavolta.

    supermyguel thanked this post
    #157071 quote
    robertogozzi
    Moderator
    Master

    Aggiungi:

    halfposition=0

    tra la riga 43 e la 44.

    Sposta le righe 45-48 (diventate 46-49) a subito dopo la 49 (divenuta 50).

    #157221 quote
    supermyguel
    Participant
    Average

    Se è corretto come l’ho riscritto (credo di si) non funziona….. vedo da graph che il Newsl si attiva correttamente ma il sistema vede sempre l’istruzione iniziale “vendi metà posizione al raggiungimento di livellolong*pipsize > chiusuraparziale*pipsize” e quindi una/due barre dopo esce completamente.

    In allegato esempio di quanto scrivo.

    Entrata 15 contratti a 1.2098

    Attivazione corretta di livellolong (verde) e chiusuraparziale (rosso)

    Non appena livellolong è maggiore di chiusuraparziale viene venduta metà posizione (corretto) e si attiva il Newsl (blu).

    A questo punto però il Ts vende l’ulteriore metà, non rispettando la condizione Newsl

    if not onmarket then
    halfposition=0
    endif
    
    if miacondizione1  then 
    IF miacondizione2 then
    buy N shares AT MARKET
    halfposition=1
    SET STOP %LOSS 0.92
    SET TARGET %PROFIT 0.6
    else
    if miacondizione3 then
    sellshort N shares at market
    halfposition=1
    SET STOP %LOSS 0.92
    SET TARGET %PROFIT 0.6
    endif
    endif
    endif
    
    chiusuraparziale= (positionprice*10000*0.0045)
    livellolong=  (close-positionprice)*10000
    livelloshort= (positionprice-close)*10000
    
    
    
    If longonmarket and livellolong*pipsize > chiusuraparziale*pipsize then
    sell partial shares at market
    halfposition=2
    endif
    
    If shortonmarket and livelloshort*pipsize > chiusuraparziale*pipsize  then
    exitshort partial shares at market
    halfposition=2
    endif
    
    
    If Not OnMarket Then
    NewSL = 0
    Else
    If onmarket and partial Then
    If halfposition=2 Then
    NewSL = tradeprice
    halfposition=0
    Endif
    
    Endif
    Endif
    If NewSL > 0 Then
    SELL at NewSL Stop
    EXITSHORT at NewSL Stop
    Endif
    Immagine.png Immagine.png
    #157288 quote
    robertogozzi
    Moderator
    Master

    Perché manca AND Not OnMarket alle righe 6 e 12, per cui rieseguetutto il blocco IF…ENDIF quiando le condizioni sono vere, che se sei a mercato. L’avere messo DEFPARAM CumulateOrders = FALSE impeduisce di aprire altre posizioni, ma le righe vengono eseguite comunque, per cui riparte sempre da halfposition=1.

    #157301 quote
    supermyguel
    Participant
    Average

    Ho inserito i 2 AND NOT ONMARKET ma non cambia nulla. L’operazione in allegato rimane invariata con la chiusura della seconda metà la barra successiva alla prima metà….

    Ma è tecnicamente possibile, per semplificare, inserire un’istruzione:

    se onmarket e partial=false  allora Set Stop %loss 0.92, se onmarket e partial=true allora Set Stop %Loss=tradeprice?

    #157316 quote
    robertogozzi
    Moderator
    Master

    No, TRADEPRICE è un prezzo, non una differenza.

    Occorre il codice completo per verificare bene, indicando anche lo strumento, il timeframe, la data ed ora di apertura di un’operazione errata.

    #157337 quote
    supermyguel
    Participant
    Average

    Sono riuscito a risolvere 🙂

    If halfposition=1 then
    If longonmarket and livellolong*pipsize > chiusuraparziale*pipsize then
    sell partial shares at market
    halfposition=2
    endif
    If shortonmarket and livelloshort*pipsize > chiusuraparziale*pipsize  then
    exitshort partial shares at market
    halfposition=2
    endif
    
    If Not OnMarket Then
    NewSL = 0
    Else
    If onmarket and halfposition=2 Then
    NewSL = tradeprice
    Endif
    
    Endif
    If NewSL > 0 Then
    SELL at NewSL Stop
    EXITSHORT at NewSL Stop
    Endif
    endif
Viewing 8 posts - 1 through 8 (of 8 total)
  • You must be logged in to reply to this topic.

Chiusura parziale in guadagno


ProOrder: Trading Automatico & Backtesting

New Reply
Author
Summary

This topic contains 7 replies,
has 2 voices, and was last updated by supermyguel
5 years, 1 month ago.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 01/08/2021
Status: Active
Attachments: 1 files
Logo Logo
Loading...