ONCE TS multiday

Viewing 15 posts - 1 through 15 (of 16 total)
  • #162317

    Ciao Roberto, se in certe situazioni da definire volessi aggiungere come filtro ad un TS sul 5 minuti (che opera long e short) la condizione extra multiday per cui non deve prendere soltanto per il primo long (se gli capita naturalmente, mentre per lo short può operare) il primo segnale rialzista finchè il prezzo è sopra il minimo di ieri e non torna sopra tale minimo sul timeframe inferiore di default, posso usare in qualche modo ONCE (e dove devo inserirlo) oppure la cosa è più complessa?

    GRAZIE

    timeframe (daily, updateOnClose)

    previous DayHigh =Dhigh(0)

    previousDayLow=Dlow(0)

    timeframe (5 minute)

    cExtraBuy=close[1]<previousDayLow and close>previousDayLow

    #162323

    Non sono riuscito a capire bene, per lo Short non occorre fare niente, in caso di segnale Long, invece, non deve prendere il primo?

     

    #162326

    Cerco di essere più preciso: in un Ts che opera long e short (sul timeframe a 5 minuti) vorrei, in certe circostanze (ancora da definire), aggiungere una condizione che riguarda il massimo\minimo del timeframe daily.

    Nell’esempio del caso long: non voglio che il TS prenda un segnale long prima che il prezzo sia sceso sotto il minimo del giorno prima sul daily, e sia tornato, sul timeframe a 5 minuti, sopra tale minimo. [Per lo short, il TS può sempre operare in quanto non guarda questa condizione sul timeframe daily.]

    Ora, per non farlo operare long fino a che il prezzo sia sceso sotto il minimo sul daily e sia tornato sopra tale minimo sul 5 minuti, va bene aggiungere alle altre condizioni long la condizione che ho scritto:

    cExtraBuy=close[1]<previousDayLow and close>previousDayLow

    quello che vorrei fare con ONCE è limitare tale condizione solo alla prima volta: se, dopo che il prezzo è sceso sotto il minimo daily e ritornato long sul 5 minuti, dovesse capitare nella giornata una seconda  operazione long non voglio più che  sia attiva questa condizione sul daily (per cui bisogna attendere una seconda volta che il prezzo scenda di nuovo sotto il minimo daily e risalga sopra tale minimo nel 5 minuti).

    La domanda è: basta utilizzare ONCE (ed in tal caso in che posizione va inserito), oppure la formula va scritta in modo più complesso? GRAZIE

     

    #162330

    La logica dell’operazione è questa: mi aspetto che il mercato salga, ma “penso” che prima di salire in modo consistente debba andare a prendere (e poi “riassorbire” sul 5 minuti) i minimi di ieri, per cui non voglio prendere eventuali operazioni long fino a che, solo la prima volta, il mercato abbia preso i minimi di ieri.

    #162331

    La tua istruzione va benissimo, puoi scriverla anche:

    ONCE non va bene da sola, serve senz’altro per iniziare una variabile, ma poi questa variabile (che in gergo si chiama FLAG in quanto segnala qualcosa) deve essere gestita.

    Faccio un esempio con una variabile che chiamerò LongOK, che se avrà valore 0 (falso) non permetterà di tradare. Si tratta di assegnarli valore 1 iniziale e poi rimetterla ad 1 ad ogni nuovo giorno. Quando entri LONG, invece, la metterai a 0. Nelle tue condizioni per entrare Long dovrai anche aggiungerci AND LongOK:

     

    #162344

    Ho provato, ma non mi funziona. Alcune considerazioni:

    • il long deve essere disabilitato fino a che il prezzo non scende sotto il minimo daily, quindi non è che devo scrivere: longOk=0?
    • once con più timeframes dà errore. Inserisco: Once… ed if intraday… dopo: timeframe (daily, updateOnClose) oppure dopo timeframe (5,minutes)?
    • non è preferibile a questo punto creare un flag che al posto di uguale ad 1 sia uguale a : close CROSSES OVER previousDayLow?

     

    #162349

    LongOK non ha niente a che vedere con il prezzo.

    Quello fa parte delle tue condizioni.

    Ogni variabile deve essere definita e variata in un solo timeframe, anche se puoi leggerla dappertutto.

     

    #162352

    Si può scrivere solo con i FLAG senza ONCE?

    #162355

    Non capisco cosa tu intenda, comunque ONCE può anche non essere utilizzato, dipende da come scrivi il codice.

     

    #162358

    OK ci penso un pò, faccio delle prove e ti faccio sapere.

    Mi “sembra” che l’esempio che hai riportato sopra:

    IF MieCondizioniLong AND LongOK THEN
    BUY 1 CONTRACT AT MARKET
    LongOK = 0 //disabilitare i LONG dopo la prima entrata
    ENDIF

    non tenga conto del fatto che non posso disabilitare tutte le condizioni, in quanto il mio scopo è disabilitare solo una condizione di quelle presenti tra “mie condizioni”, ossia solo:  cExtraBuy = close CROSSES OVER previousDayLow

    #162359

    disabilitarla dopo che la prima volta si è verificata, mentre le altre condizioni devono rimanere sempre attive

    #162378

    Dopo molte prove così sembra funzionare, puoi controllare? (il Ts deve inibire all’inizio di ogni giorno il primo long SOLO fino a che il prezzo non va sotto il minimo di ieri e poi risale. Futuri long della giornata devono funzionare normalmente senza più questa condizione).

    • inizio con un flag = 0
    • viene posto il flag = 1 solo al verificarsi della condizione desiderata
    • non c’è bisogno di disabilitare il flag dopo il long altrimenti, dalle prove, non entra più in nessun caso durante la giornata

    Vale sempre:

    timeframe (daily, updateOnClose)

    previous DayHigh =Dhigh(0)

    previousDayLow=Dlow(0)

    timeframe (3 minute)

    previousDayLowReached=close[1]<previousDayLow and close>previousDayLow

     

     

     

    #162386

    La riga 20 mi sembra contraddica quello che dici, vuoi che la condizione extra sia abilitata solo la prima volta, ma se non l’azzeri quando entri la prima volta resta valida anche per l’entrate successive, no?

     

    #162391

    Ciao Roberto, ho controllato, ma ti confermo che se abilito la riga 20 togliendo il rem il TS prende altre operazioni solo se il prezzo torna sotto il minimo del giorno prima. Mi sembra naturale in quanto se all’inizio il flag è uguale a 0 e diventa 1 solo se si presenta la condizione per cui il prezzo va sotto il minimo di ieri, se resetto il flag dopo il buy questo ritorna alla condizione iniziale del flag uguale a zero: ossia devo aspettare nuovamente che il prezzo ritorni sotto il minimo anche per il secondo, terzo … long.

    Questo è un esempio che conferma la cosa: FLAG è il TS in basso con il rem, FLAG(1) è il TS in alto che pone il flag uguale a 0 dopo il buy della riga 19.

    La linea orizzontale è il minimo del giorno prima: si vede che il primo long viene preso da entrambi in quanto il prezzo scende e risale sopra la linea, mentre il secondo long viene preso solo dal TS con il rem, mentre il secondo non lo prende in quanto aspetta NUOVAMENTE che il prezzo torni sotto la linea orizzontale in quanto azzerando il flag si comporta come la prima volta.

    1. Ti risulta corretta la cosa?
    2. Tra l’altro ho visto in altri esempio che nel lunedi viene calcolato come giorno anche la barra daily della domenica notte, anche se vengono esclusi i giorni 6 e 7. Ho scritto ed aggiunto questo (vd sotto) alle condizioni di acquisto/vendita, è corretto?

    tradingDays = (OpenDayOfWeek >= 1 and OpenDayOfWeek <= 5). Se si, sai come posso escludere la barra daily della domenica?

    (PS: ho riscritto anche ad Emanuele Dolce per l’errore delle 3 operazioni sullo stop&reverse che come vedi nell’immagine continua a presentarsi (operazione tra le 17 e le 18), mi ha detto che ci vuole ancora tempo, CIAO

    #162392

    Ecco l’immagine allegata

Viewing 15 posts - 1 through 15 (of 16 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login