Problema di due condizioni

Viewing 14 posts - 1 through 14 (of 14 total)
  • Author
    Posts
  • #133998 quote
    Gattotrader
    Participant
    New
    TrendLong = DClose(1)> Mediana AND DClose(1)>DOpen(1) //ChiusuraGiornoPrima > MedianaGiornoPrima
    TrendShort = DClose(1)< Mediana//ChiusuraGiornoPrima < MedianaGiornoPrima
    CloseLong = DClose(1)>DOpen(1)//ChiusuraGiornoPrima > AperturaGiornoPrima
    CloseShort = DClose(1)<DOpen(1)//ChiusuraGiornoPrima < AperturaGiornoPrima
    PriceLong = Close<DClose(1)
    PriceShort = Close>DClose(1)
    //------------------------------------------------------------------------------------------------------------
    If NOT LONGONMARKET AND TrendLong AND CloseLong AND PriceLong then
    buy 1 shares at market

    Buonasera, il pezzo di codice che allego nelle mie intenzioni dovrebbe aprire la posizione al giorno n+1 se e solo se per esempio la chiusura della barra giornaliera (la valutazione è sulla barra giornaliera anche se poi opero sui 15 minuti per il giorno successivo) è stata sopra la mediana con chiusura sopra l’apertura, purtroppo backtestando questa prima parte mi ritrovo che apre le posizioni ogni giorno anche se, per esempio la chiusura è sopra la mediana ma sotto l’apertura.

    Qualcuno può farmi capire dove sbaglio?.

    Ringrazio sentitamente.

    #134008 quote
    robertogozzi
    Moderator
    Master

    È difficile dirlo senza il cudice completo.

    Così sembra corretto, seppure con qualche ridondanza (la riga 3 è già compresa nella 1).

    Tu operi sui 15 minuti del giorno 5 (supponiamo sia oggi ad esempio), sulla base delle candele giornaliere dei giorni 4 e 3. Oppure del solo giorno 4. Dipende se hai usato UpdateOnClose o Default con il timeframe giornaliero.

    #134090 quote
    Gattotrader
    Participant
    New

    Buongiorno, grazie della risposta. In effetti riga 3 l’ho inglobata nella 1 dopo per fare una verifica. Mi spiego meglio: io opero nel giorno 5 (a 15 minuti) e voglio che entri in posizione solo se sono verificate entrambe le condizioni nella candela giornaliera del giorno 4 (quindi chiusura sopra la mediana del giorno e chiusura verde). Backtestando il sistema lui entra ogni giorno, anche se quello precedente non ha chisuo sopra la mediana o sopra l’apertura. Mi puoi spiegare cosa intendi per “Dipende se hai usato UpdateOnClose o Default con il timeframe giornaliero”.

    Il codice completo in realtà lo sto costruendo perchè è complesso, ma già la prima parte non funziona nel senso che apre la posizione anche se non dovrebbe e non riesco a capire perchè.

    #134096 quote
    robertogozzi
    Moderator
    Master

    UpdateOnClose aggiorna i dati alla chiusura della barra, quindi CLOSE si riferisce all’ultima candela chiusa, mentre Default aggiorna i dati secondo il passo del TF che è sul grafico quando la strategia viene eseguita, in backtest o autotrading, nel tuo caso 15 minuti, per cui CLOSE si riferisce al prezzo corrente.

    #134119 quote
    Gattotrader
    Participant
    New

    Mi par di capire che così come è scritto prende le barre a 15 minuti mentre deve prendere i dati della barra giornaliera precedente. Come si può fare? Devo settare il grafico sul giornaliero in modo che per es. peschi nel giorno 2 i dati del giorno precedente? Non è rilevante il time frame 15 minuti anche perchè la logica è di entrare nel giorno 2 e poi o andare a take profit/stop loss o chiudere entro le 22; si entra una sola volta a determinate condizioni.

    Grazie della risposta.

    #134122 quote
    robertogozzi
    Moderator
    Master

    Con questo vedrai sul grafico dei prezzi la differenza della media a 20 periodi calcolata sia sulla chiusura che in corsi.

    Eseguila da un TF a 15 minuti:

    Defparam CumulateOrders = false
    //
    timeframe(daily,updateonclose)
    mm1 = average[20,0](close)
    //
    timeframe(daily,default)
    mm2 = average[20,0](close)
    //
    timeframe(default)
    Buy at -close limit
    GraphOnPrice mm1 coloured(255,0,0,255) as “mm1”
    GraphOnPrice mm2 coloured(0,0,255,255) as “mm2”
    #134138 quote
    Gattotrader
    Participant
    New

    Buongiorno, scusami ma non capisco la tua risposta. Non è possibile impostare le condizioni?

    #134152 quote
    robertogozzi
    Moderator
    Master

    Senza il codice non riesco a dirti niente circa il tuo codice.

    Dal mio esempio vedi come fare. In ognuno di essi basta che aggiungi [1] per accedere ai dati della candela precedente, [2] per la seconda candela precedente, ecc… .
    Quindi scegli tu quale giorno prendere.

    #134213 quote
    Gattotrader
    Participant
    New

    Buongiorno, il codice è:

    DEFPARAM CUMULATEORDERS = false
    DEFPARAM FLATAFTER = 215500
    //------------------------------------------------------------------------------------------------------------
    Mediana = (DHigh(1)+DLow(1))/2
    MyRange = (DHigh(1)-DLow(1))/2
    TrendLong = DClose(1)> Mediana AND DClose(1)>DOpen(1) //ChiusuraGiornoPrima > MedianaGiornoPrima
    TrendShort = DClose(1)< Mediana//ChiusuraGiornoPrima < MedianaGiornoPrima
    CloseLong = DClose(1)>DOpen(1)//ChiusuraGiornoPrima > AperturaGiornoPrima
    CloseShort = DClose(1)<DOpen(1)//ChiusuraGiornoPrima < AperturaGiornoPrima
    //------------------------------------------------------------------------------------------------------------
    if intradaybarindex = 0 then
    countposition=0
    endif
    condnbposperday=countposition < 1
    If NOT LONGONMARKET AND TrendLong AND CloseLong AND condnbposperday then
    buy 1 shares at DClose(1)limit
    countposition=countposition+1
    set stop ploss DLow(1)
    set target profit (DHigh(1)+MyRange)
    endif
    If NOT SHORTONMARKET AND TrendShort AND CloseShort AND condnbposperday then
    buy 1 shares at DClose(1)stop
    countposition=countposition+1
    set stop ploss DLow(1)
    set target profit (DLow (1)-MyRange)
    IF time = 214500 AND OnMarket THEN
    SELL      AT MARKET  //chiudere i   LONG,  se aperti
    EXITSHORT AT MARKET  //chiudere gli SHORT, se aperti
    ENDIF
    endif

    E’ da sistemare in molti punti, la mia intenzione è: verificate le condizioni sulla barra del giorno n apro la posizione il giorno n+1 e la chiudo o a target, o in stop loss o alle 21.45. Backtesando così non apre e chiude come dovrebbe.

    #134225 quote
    robertogozzi
    Moderator
    Master

    Alla riga 16 usi LIMIT, ma sei certo che la chiusura sia maggiore della chiusura di ieri + la distanza richiesta da IG?

    Alla riga 22, invece c’è il problema opposto, perché STOP?

    Alle righe 18 e 24 indichi lo SL in modo errato: 1) usa LOSS, senza “p” iniziale in quanto non usi pips 2) devi indicare una differenza di prezzo, non un prezzo, pensa che se fosse il Dax indicheresti quasi 12000 pips di SL!

    Alle righe 19 e 25 non hai usato la “p” con PROFIT, correttamente, però il TP è enorme, più dello SL!

    Per il resto mi pare possa andare bene.

    #134231 quote
    Gattotrader
    Participant
    New

    Alla riga 16 usi LIMIT, ma sei certo che la chiusura sia maggiore della chiusura di ieri + la distanza richiesta da IG? Forse ho sbagliato istruzione intendevo “compra al prezzo di chiusura di ieri o inferiore”

    Alla riga 22, invece c’è il problema opposto, perché STOP? “Forse ho sbagliato istruzione intendevo “compra al prezzo di chiusura di ieri o superiore”

    Alle righe 18 e 24 indichi lo SL in modo errato: 1) usa LOSS, senza “p” iniziale in quanto non usi pips 2) devi indicare una differenza di prezzo, non un prezzo, pensa che se fosse il Dax indicheresti quasi 12000 pips di SL! OK un refuso

    Alle righe 19 e 25 non hai usato la “p” con PROFIT, correttamente, però il TP è enorme, più dello SL! Perchè il take profit è il max di ieri più metà del range di ieri non mi sembra enorme in condizioni normali sul dax circa 6o punti

    Per il resto mi pare possa andare bene. Sistemo e riprovo a backtestare

    Grazie della tua cortesia e disponibilità

    #134244 quote
    robertogozzi
    Moderator
    Master

    60???

    Forse 12060!

    #134248 quote
    Gattotrader
    Participant
    New

    Hai ragione, devo indicare una differenza di prezzo e non un prezzo, sono abituato a fissare take profit di prezzo.

    Grazie mille

    #134279 quote
    robertogozzi
    Moderator
    Master

    Se ci fosse anche la possibilità di indicare un prezzo, sia per il TP che per lo SL sarebbe utile, per non dovere fare i calcoli col rischio di sbagliare  🙂

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

Problema di due condizioni


ProOrder: Trading Automatico & Backtesting

New Reply
Author
Summary

This topic contains 13 replies,
has 2 voices, and was last updated by robertogozzi
5 years, 8 months ago.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 06/01/2020
Status: Active
Attachments: No files
Logo Logo
Loading...