stop loos dinamico

Viewing 9 posts - 1 through 9 (of 9 total)
  • Author
    Posts
  • #161273 quote
    emanuele81
    Participant
    Senior

    Buongiorno a tutti, vorei inserire uno stop loos dinamico, mi spiego, la posizione una volta aperta funziona senza stop loos, se dovvesse raggiungere i 20 pip di guadagno lo stop loos si piazza al prezzo di acquisto, sia su posizioni long che short. Come posso scrivere il codice?

    Grazie

    #161276 quote
    robertogozzi
    Moderator
    Master

    Eccolo:

    IF Not OnMarket THEN
       StopLoss = 0
    ENDIF
    IF LongOnMarket THEN
       IF (close - PositionPrice) >= 20 * PipSize THEN
          StopLoss = max(StopLoss,PositionPrice)
       ENDIF
       IF StopLoss > 0 THEN
          SELL AT StopLoss STOP
       ENDIF
    ELSIF ShortOnMarket THEN
       IF (PositionPrice - close) >= 20 * PipSize THEN
          StopLoss = min(StopLoss,PositionPrice)
       ENDIF
       IF StopLoss > 0 THEN
          SELLSHORT AT StopLoss STOP
       ENDIF
    ENDIF
    #161278 quote
    emanuele81
    Participant
    Senior

    Grazie Roberto, sulle posizioni long funziona alla grande mentre non funziona sulle posizioni short

    #161282 quote
    robertogozzi
    Moderator
    Master

    Hai ragione, perché non ho messo il controllo sullo zero iniziale dello StopLoss:

    IF Not OnMarket THEN
       StopLoss = 0
    ENDIF
    IF LongOnMarket THEN
       IF (close - PositionPrice) >= 20 * PipSize AND (StopLoss = 0) THEN
          StopLoss = PositionPrice
       ENDIF
       IF StopLoss > 0 THEN
          SELL AT StopLoss STOP
       ENDIF
    ELSIF ShortOnMarket THEN
       IF (PositionPrice - close) >= 20 * PipSize AND (StopLoss = 0) THEN
          StopLoss = PositionPrice
       ENDIF
       IF StopLoss > 0 THEN
          SELLSHORT AT StopLoss STOP
       ENDIF
    ENDIF

    così dovrebbe andare bene (non l’ho priovato).

    #161283 quote
    emanuele81
    Participant
    Senior

    Ho provato, ma niente la posizione short non si chiude come dovrebbe

    #161290 quote
    emanuele81
    Participant
    Senior
    IF Not OnMarket THEN
    StopLoss = 0
    ENDIF
    IF LongOnMarket THEN
    IF (close - PositionPrice) >= 20 * PipSize AND (StopLoss = 0) THEN
    StopLoss = PositionPrice
    ENDIF
    IF StopLoss > 0 THEN
    SELL AT StopLoss STOP
    ENDIF
    ENDIF
    IF ShortOnMarket THEN
    IF (PositionPrice - close) >= 20 * PipSize AND (StopLoss = 0) THEN
    StopLoss = PositionPrice
    ENDIF
    IF StopLoss > 0 THEN
    EXITSHORT AT StopLoss STOP
    ENDIF
    ENDIF

    Ho fatto delle modifiche cosi sembra che funzioni, mi puoi dare uno squardo se va tutto bene, grazie

    #161301 quote
    robertogozzi
    Moderator
    Master

    Si, è corretto.

    #162630 quote
    Gomez
    Participant
    New

    Ciao a tutti, non riesco proprio a fare in modo che lo stop venga spostato a breakeven +5 quando il prezzo raggiunge il targhe price 1.

    Ci tengo a sottolineare che nel backtest sembra che funzioni ma in reale succede che lo stop viene spostato al momento giusto ma alla barra successiva viene rispostato dov’era all’inizio.

    allego il file che sto utilizzando.

    Grazie a chi vorrà aiutarmi.

     

    rem test spostamento stop loss a breakeven al raggingimento di TP1
    DEFPARAM CumulateOrders = false // Posizioni cumulate
    rem ********* INPUT ********
    direzione=-1  //-1=SHORT   +1=LONG
    entry=6100 //prezzo entrata
    TP1=6050   //prezzo targhet price 1
    TP2=5900  //prezzo targhet price 2
    SL=6180   //prezzo stop loss
    
    tp1p=ABS(entry-TP1) //pip TP1
    tp2p=ABS(entry-TP2) //pip TP"
    slp =ABS(entry-SL)  //pip SL
    rem impostazione orario fine programma
    if time >200000 and not onmarket then rem esco se non sono a mercato dopo le 20.00
    quit
    elsif counter=1 and not onmarket then rem esco se posizione è stata chiusa
    quit
    endif
    rem ingresso
    if onmarket and counter=0 then rem contatore voglio che venga aperta una sola operazione
    counter=1
    endif
    rem -------- ingresso + targhet + stop loss
    if direzione=1 and counter=0 then
    buy 1 contract at entry limit
    set stop ploss slp
    set target pprofit tp2p
    endif
    if direzione=-1 and counter=0 then
    sellshort 1 contract at entry limit
    set stop ploss slp
    set target pprofit tp2p
    endif
    rem ------- uscita a breakeven +5 
    if longonmarket and high>TP1 then
    sell at (entry)+(5*pointsize) stop
    endif
    if shortonmarket and low<TP1 then
    exitshort at (entry)-(5*pointsize) stop
    
    endif
    //graph counter
    //graph tp1p
    //graph tp2p
    //graph slp
    
    1-3.jpg 1-3.jpg 1-test.itf
    #162633 quote
    robertogozzi
    Moderator
    Master

    Perché gli ordini pendenti (Limit o Stop che siano) durano solo una barra e vanno piazzati nuovamente barra dopo barra, se ervono ancora.

    Nel tuo caso tu non memorizzi lo SL in una variabile, ma piazzi l’ordine pendente SOLO se il prezzo < TP1 (tra l’altro non usi TP1P).

    Inoltre la riga 38 calcola un presunto SL (che in realtà non è) in modo errato, infatti LOW < TP1 è già vero dalla prima candela, perché il prezzo d’entrata è sicuramente inferiore al LOW.

    Devi rivedere un pò la logica di quel codice.

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

stop loos dinamico


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
emanuele81 @emanuele81 Participant
Summary

This topic contains 8 replies,
has 3 voices, and was last updated by robertogozzi
4 years, 11 months ago.

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