Modifica stop loss e ingresso a distanza ema predefinito

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #192220 quote
    Laufre
    Participant
    New

    Salve buongiorno…ringrazio anticipatamente per aiuto!!!

    Non sono pratico… ma grazie ai vostri forum, ho cercato di buttar giù la mia idea.
    Purtroppo non riesco a chiedergli quello che vorrei fare.
    Dove sbaglio!!

    Esempio di cosa vorrei fargli fare:

    buy se il prezzo corrente è 20 pip sopra EMA 200 a 5 min.
    sellshort se il prezzo corrente è 20 pip sotto EMA 200 a 5 min.

    stop loss 20

    Se vado sopra di 20 pip il mio stop loss diventa il mio ingresso.
    Se vado sopra di 35 pip il mio stop loss diventa ingresso+20 pip
    Se vado sopra di 100pip il mio stop loss diventa ingresso+75 pip
    Se vado sopra di 150pip il mio stop loss diventa ingresso+125 pip
    ….e cosi via..

    Se non esco con gli step preimpostati di cui sopra, ma il prezzo corrente tocca la ema 200 (5min) uscire dal mercato.

    In ogni caso si rientra a mercato solo quando la distanza dalla ema rientra sotto i 20 pip e poi si distanzia di nuovo di 20pip.

     

    Ultima cosa che non sono riuscito a inserire nel codice perchè non ci arrivo proprio…. e questa ulteriore entrata:
    Nel caso entro buy a mercato 10.000 punti… il mercato va sopra i 10.100 punti, riscende ed esco correttamente a +10.075 punti…..
    Vorrei rientrare a mercato (nel caso non riscende nel range dei 20 pipsize dalla Ema)
    al superamento dei 10.100 punti(stop loss sempre 20).

    Grazieee

    Allego file codice di prova

    #192224 quote
    robertogozzi
    Moderator
    Master

    Va bene, dammi solo un pò di tempo e la metto a posto.

    #192229 quote
    Laufre
    Participant
    New

    graziee

    #192401 quote
    Laufre
    Participant
    New

    Buongiorno sig. Gozzi,

    ho provato questa modifica, va un pò meglio ma comunque, nella maggior parte delle volte salta le chiusure

    sia con l’incrocio con la media, sia quando arriva il nuovo stop loss.

    Allego codice.

    Grazie per aiuto.

    #192403 quote
    robertogozzi
    Moderator
    Master

    Mi sembra funzioni come vorresti, però controllalo meglio:

    // Definizione dei parametri del codice
    DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
    
    // Impedisce al sistema di creare nuovi ordini per entrare a mercato o aumentare la taglia della posizione prima dell'orario specificato
    noEntryBeforeTime = 000000
    timeEnterBefore = time >= noEntryBeforeTime
    
    // Impedisce al sistema di piazzare nuovi ordini per entrare a mercato o aumentare la taglia della posizione dopo l'orario indicato
    noEntryAfterTime = 2359000
    timeEnterAfter = time < noEntryAfterTime
    
    // Impedisce al sistema di tradare in giorni specifici della settimana
    daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
    
    
    
    
    TIMEFRAME (5MINUTE, UPDATEONCLOSE)
    
    
    MEDIAEMA= EXPONENTIALAVERAGE[200] (close)
    
    //incrocio del prezzo corrente con media esponenziale a 200
    C1= (CLOSE CROSSES UNDER MEDIAEMA)
    C2= (CLOSE CROSSES OVER MEDIAEMA)
    
    //controlla l'ingresso solo se rientra sotto i 20 pipsize
    MEDIAEMA1=MEDIAEMA+20*PIPSIZE
    MEDIAEMA2=MEDIAEMA-20*PIPSIZE
    
    
    
    
    TIMEFRAME (DEFAULT)
    
    IF Not OnMarket OR (LongOnMarket AND ShortOnMarket[1]) OR (LongOnMarket[1] AND ShortOnMarket) THEN
    NewSL        = 0
    Flag         = 0
    ENDIF
    IF LongOnMarket AND Not (LongOnMarket[1]) THEN
    EntrataLong = TradePrice
    ENDIF
    IF ShortOnMarket AND Not (ShortOnMarket[1]) THEN
    EntrataShort = TradePrice
    ENDIF
    
    
    IF LongOnMarket AND low <= MEDIAEMA THEN
    SELL AT MARKET
    ELSIF ShortOnMarket AND high >= MEDIAEMA THEN
    EXITSHORT AT MARKET
    ENDIF
    
    //controlla l'ingresso solo se rientra sotto i 20 pipsize
    once conto=0
    If not onMarket and onMarket[1] then
    conto=conto+1
    endif
    
    if CLOSE < MEDIAEMA1 and close > MEDIAEMA2 then
    conto=0
    endif
    
    
    //compra se il prezzo va sopra la ema da  20 pipsize in su
    IF CLOSE >= (MEDIAEMA+20*PIPSIZE) AND Not OnMarket AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND CONTO=0 then
    
    Buy 1 contract at market
    ENDIF
    
    
    //vende allo scoperto se il prezzo  va sotto la ema  di 20 pipsize in giù
    IF CLOSE <= (MEDIAEMA-20*PIPSIZE) AND Not OnMarket AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND CONTO=0 then
    
    Sellshort 1 contract at market
    
    ENDIF
    
    IF Not OnMarket AND (conto = 0) THEN
    IF close > EntrataLong THEN
    Buy 1 contract at market
    ELSIF close < EntrataShort THEN
    Sellshort 1 contract at market
    ENDIF
    ENDIF
    
    SET STOP PLOSS 20
    
    //************************************************************************
    //  Trailing Stop
    //
    IF OnMarket THEN
    Profitto = PositionPerf * PositionPrice / PipSize
    IF Flag = 0 THEN
    IF Profitto > 20 THEN                    //Pareggio
    NewSL = Tradeprice
    Flag = 1
    ENDIF
    ENDIF
    IF Flag = 1 THEN
    IF Profitto > 35 THEN
    IF LongOnMarket THEN                 //primo livello di Profitto (oltre il pareggio)
    NewSL = TradePrice + 20*PipSize
    ELSE
    NewSL = TradePrice - 20*PipSize
    ENDIF
    Flag = 2
    ENDIF
    ENDIF
    IF Flag = 2 AND Profitto > 100 THEN       //livelli di profitto successivi al primo
    Livelli50 = floor(Profitto / 50) - 1   //calcolare gli STEP di 50 punti (escluso i primi 50) oltre il pareggio + 25 punti
    IF LongOnMarket THEN
    NewSL  = max(NewSL,Tradeprice + ((25 + (Livelli50 * 50))*PipSize))
    ELSE
    NewSL  = min(NewSL,Tradeprice - ((25 + (Livelli50 * 50))*PipSize))
    ENDIF
    ENDIF
    IF NewSL > 0 THEN
    SELL AT MARKET
    EXITSHORT AT MARKET
    ENDIF
    ENDIF
    //************************************************************************
    GRAPH newSL        as "trailing" coloured(255,0,0,255)
    GRAPH Profitto                   coloured(0,0,255,255)
    GRAPHONPRICE newSL as "trailing" coloured(255,0,0,255)

    Il trailing stop l’ho fatto nuovo, in quanto non era possibile adattare quello di Nicolas alle tue necessità.

    #192414 quote
    Laufre
    Participant
    New

     

    L’ho provato su euro/usd utilizzando come time frame di default anche 5 min per avere più backtest.

    Purtroppo c’è qualcosa che non va…. però non riesco a capire cosa

    • non rispetta l’ingresso (buy a +20 da ema) e lo stesso con (vendita a -20 da ema)
    •  il traling stop non viene preso in considerazione
    • Non riesco a capire se rispetta l’uscita da mercato in caso  d’ incrocio con ema
    #192440 quote
    robertogozzi
    Moderator
    Master

    C’erano 3 errori e li ho corretti, adesso i due errori che segnalavi (più un altro che ho notato) li ho corretti.

    Le entrate però andavano bene, quindi verificale ulteriormente, ma entra alla chiusura della candela che OLTREPASSA i limiti +20 o -20 dalla media (li ho resi visibili in verde sul grafico, quando fai il backtest).

    // Definizione dei parametri del codice
    DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
    
    // Impedisce al sistema di creare nuovi ordini per entrare a mercato o aumentare la taglia della posizione prima dell'orario specificato
    noEntryBeforeTime = 000000
    timeEnterBefore = time >= noEntryBeforeTime
    
    // Impedisce al sistema di piazzare nuovi ordini per entrare a mercato o aumentare la taglia della posizione dopo l'orario indicato
    noEntryAfterTime = 2359000
    timeEnterAfter = time < noEntryAfterTime
    
    // Impedisce al sistema di tradare in giorni specifici della settimana
    daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
    
    
    
    
    TIMEFRAME (5MINUTE, UPDATEONCLOSE)
    
    
    MEDIAEMA= EXPONENTIALAVERAGE[200] (close)
    
    //incrocio del prezzo corrente con media esponenziale a 200
    C1= (CLOSE CROSSES UNDER MEDIAEMA)
    C2= (CLOSE CROSSES OVER MEDIAEMA)
    
    //controlla l'ingresso solo se rientra sotto i 20 pipsize
    MEDIAEMA1=MEDIAEMA+20*PIPSIZE
    MEDIAEMA2=MEDIAEMA-20*PIPSIZE
    
    
    
    
    TIMEFRAME (DEFAULT)
    
    IF Not OnMarket OR (LongOnMarket AND ShortOnMarket[1]) OR (LongOnMarket[1] AND ShortOnMarket) THEN
    NewSL        = 0
    Flag         = 0
    ENDIF
    IF LongOnMarket AND Not (LongOnMarket[1]) THEN
    EntrataLong = TradePrice
    ENDIF
    IF ShortOnMarket AND Not (ShortOnMarket[1]) THEN
    EntrataShort = TradePrice
    ENDIF
    
    
    IF LongOnMarket AND low <= MEDIAEMA THEN
    SELL AT MARKET
    ELSIF ShortOnMarket AND high >= MEDIAEMA THEN
    EXITSHORT AT MARKET
    ENDIF
    
    //controlla l'ingresso solo se rientra sotto i 20 pipsize
    once conto=0
    If not onMarket and onMarket[1] then
    conto=conto+1
    endif
    
    if CLOSE < MEDIAEMA1 and close > MEDIAEMA2 then
    conto=0
    endif
    
    
    //compra se il prezzo va sopra la ema da  20 pipsize in su
    IF CLOSE >= MEDIAEMA1 AND Not OnMarket AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND CONTO=0 then
    
    Buy 1 contract at market
    ENDIF
    
    
    //vende allo scoperto se il prezzo  va sotto la ema  di 20 pipsize in giù
    IF CLOSE <= MEDIAEMA2 AND Not OnMarket AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND CONTO=0 then
    
    Sellshort 1 contract at market
    
    ENDIF
    
    IF Not OnMarket AND (conto <> 0) THEN
    IF close CROSSES OVER EntrataLong THEN
    Buy 1 contract at market
    ELSIF close CROSSES UNDER EntrataShort THEN
    Sellshort 1 contract at market
    ENDIF
    ENDIF
    
    SET STOP PLOSS 20
    
    //************************************************************************
    //  Trailing Stop
    //
    IF OnMarket THEN
    Profitto = PositionPerf * PositionPrice / PipSize
    IF Flag = 0 THEN
    IF Profitto > 20 THEN                    //Pareggio
    NewSL = Tradeprice
    Flag = 1
    ENDIF
    ENDIF
    IF Flag = 1 THEN
    IF Profitto > 35 THEN
    IF LongOnMarket THEN                 //primo livello di Profitto (oltre il pareggio)
    NewSL = TradePrice + 20*PipSize
    ELSE
    NewSL = TradePrice - 20*PipSize
    ENDIF
    Flag = 2
    ENDIF
    ENDIF
    IF Flag = 2 AND Profitto > 100 THEN       //livelli di profitto successivi al primo
    Livelli50 = floor(Profitto / 50) - 1   //calcolare gli STEP di 50 punti (escluso i primi 50) oltre il pareggio + 25 punti
    IF LongOnMarket THEN
    NewSL  = max(NewSL,Tradeprice + ((25 + (Livelli50 * 50))*PipSize))
    ELSE
    NewSL  = min(NewSL,Tradeprice - ((25 + (Livelli50 * 50))*PipSize))
    ENDIF
    ENDIF
    IF NewSL > 0 THEN
    SELL      AT NewSL STOP
    EXITSHORT AT NewSL STOP
    ENDIF
    ENDIF
    //************************************************************************
    GRAPH newSL        as "trailing" coloured(255,0,0,255)
    GRAPH Profitto                   coloured(0,0,255,255)
    GRAPHONPRICE newSL as "trailing" coloured(255,0,0,255)
    graphonprice MEDIAEMA1 AS "Media1" coloured(0,128,0,155)
    graphonprice MEDIAEMA2 AS "Media2" coloured(0,128,0,155)
    #192446 quote
    Laufre
    Participant
    New

    Ok… è perfetto!!.

    Grazie infinite per la disponibilità!!!

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

Modifica stop loss e ingresso a distanza ema predefinito


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
Laufre @laufre Participant
Summary

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

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 04/26/2022
Status: Active
Attachments: 4 files
Logo Logo
Loading...