Mancata entrata su ordine pendente

Viewing 15 posts - 1 through 15 (of 16 total)
  • Author
    Posts
  • #133776 quote
    Giovanni Belli
    Participant
    Average

    Grazie per la risposta esaustiva.. ora però mi piacerebbe capire come mai in questo caso gli ordini non partono con cadenza 5 min…

    si è appena verificata la situazione per cui sarebbe dovuto partire e invece niente.. allego il codice fresco fresco

    grazie

    //-------------------------------------------------------------------------
    // Codice principale : Price action
    //-------------------------------------------------------------------------
    // Definizione dei parametri del codice
    DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
    // Il sistema cancellerà tutti gli ordini in attesa e chiuderà tutte le posizioni a 0:00. Dopo l'orario "Flat Before" non saranno piazzati nuovi ordini o posizioni.
    DEFPARAM FLATBEFORE = 090000
    // Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all'orario "Flat After"
    DEFPARAM FLATAFTER = 201500
    
    // Impedisce al sistema di tradare in giorni specifici della settimana
    daysForbiddenEntry =  OpenDayOfWeek = 6 OR OpenDayOfWeek = 0 or OpenDayOfWeek = 1
    
    c1=not daysForbiddenEntry
    
    timeframe (daily,UpdateOnClose)
    
    levup=75 // % ratio1
    levdw=25 // % ratio1
    
    ratio1=abs(high-low)
    Dbot=min(high,low)
    Dtop=max(high,low)
    
    bodyrange=(abs(close-open))/pointsize
    
    limitBuy=(dtop > ((ratio1/100)*levup)+low) and close > open
    limitSell=(dbot < ((ratio1/100)*levdw)+low) and open > close
    
    sllong=(abs(dtop-close))/pointsize
    slshort=(abs(close-dbot))/pointsize
    
    timeframe(5mn, UpdateOnClose )
    
    IF intradaybarindex = 0 then
    countposition=0
    endif
    
    count=countposition < 1
    
    if c1 and limitbuy and count and close crosses over dtop then
    buy 1 contract at dtop stop
    countposition=countposition + 1
    endif
    
    set target pprofit (bodyrange * 0.8)
    set stop ploss sllong
    
    
    if c1 and limitsell and count and close crosses under dbot then
    sellshort 1 contract at dbot stop
    countposition=countposition + 1
    endif
    
    set target pprofit (bodyrange * 0.8)
    set stop ploss slshort
    #133779 quote
    Giovanni Belli
    Participant
    Average

    essendo live in questo momento, ho catturato il momento in cui sarebbe dovuto partire e invece non è avvenuto nulla. Ho lanciato il programma martedì alle 9,36

    Grazie

    Schermata-2020-05-29-alle-14.45.21.png Schermata-2020-05-29-alle-14.45.21.png
    #133783 quote
    robertogozzi
    Moderator
    Master

    Il tuo codice dice che appena inserito un ordine pendente non deve inserirne altri, quindi solo una volta.

    Quindi l’ordine viene piazzato alla prima barra del giorno.

    Siccome gli ordini pendenti durano una sola barra, o entra alla prima barra o mai più.

    Ho creato un nuovo argomento in quanto di tratta di una donanda diversa dalla precedente. Non postare su altri argomenti. Grazie 🙂

    #133789 quote
    Giovanni Belli
    Participant
    Average

    Ti chiedo scusa se posso aver creato confusione involontariamente. Detto questo volevo chiederti ulteriori chiarimenti cortesemente.

    Io volevo con un timeframe giornaliero identificare le caratteristiche di entrata e poi , con un timeframe 5min, far verificare se ci sono le caratteristiche per inserire l’ordine.

    Perchè mi parli di prima barra? nelle simulazioni lui parte in svariati orari una volta in cui incrocia il prezzo impostato con il timeframe daily

    é qui che non capisco.

    Grazie ancora

    #133795 quote
    robertogozzi
    Moderator
    Master

    No, scusami, avevo travisato una riga.

    Cambia gli ordini pendenti da STOP a LIMIT, perché tu acquisti e vendi sempre a prezzi migliori (quindi LIMIT), cioè dopo l’incrocio vuoi che il prezzo torni indietro per acquistare o vendere ad un prezzo migliore. In pratica acquisti e vendi su un breve pullback.

    Mentre STOP si usa per acquistare o vendere a prezzi peggiori.

    Una cosa a cui fare attenzione è che la distanza tra il prezzo del momento in cui piazzi l’ordine pendente ed il prezzo d’entrata sia almeno il minimo richiesto dal broker per quello strumento (va visto sulla pagina del broker o chiesto, ma può capitare che vari in funzione anche della volatilità, un pò come lo stop loss), altrimenti l’ordine non viene piazzato o viene piazzato a mercato.

    Prova e fammi sapere.

    #133799 quote
    Giovanni Belli
    Participant
    Average

    Faccio prima a spiegarti cosa voglio fare 🙂

     

    Vorrei che lavorasse dal martedì al venerdì

    Vorrei che partisse a considerare gli ordini dalle 9 alle 20.15

    all’inizio della nuova candela Daily vorrei che prendesse High e Low della giornata appena trascorsa e li trasformasse in range mentre la close e la open mi servono per determinare il Take profit e stop loss.

    Il giorno seguente il programma dovrà partire long se la candela chiusa il giorno precedente sia verde con una close al oltre il 75% del range totale al raggiungimento della high precedente

    oppure

    Il giorno seguente il programma dovrà partire short se la candela chiusa il giorno precedente sia rossa con una close al di sotto del  25% del range totale al raggiungimento della low precedente

    esempio pratico:

    28/5 high 1,2344, low 1,2233 open 1,2263 close 1,2319

    il ragionamento sarebbe (high – low) 0,0111 di cui il 75% è 0,0083 e il 25% 0,0027 (aggiungendoli alla low trovo il segnale Daily per una ipotetica entrata. A questo punto , vista la candela verde con chiusura a 1,2319 e dunque oltre il 75% del range totale (1,2233 + 0,0083 = 1,2316),

    avrei ottenuto il bypassare per un eventuale operazione long qualora il prezzo avesse incrociato al rialzo la high del giorno precedente quindi 1,2344…. cosa che non è avvenuta pur avendo tutte queste caratteristiche

    Spero sia riuscito a trasmettere il mio problema.

    Fammi sapere se non ti è chiaro

    Grazie

    #133803 quote
    Giovanni Belli
    Participant
    Average

    Ps:non si sarebbe attivato nemmeno con limit

    #133804 quote
    robertogozzi
    Moderator
    Master

    Mi sembra tu faccia un pò di confusione con i termini e questo rende difficile la comprensione, tanto per farti un esempio attuale (mentre sto scrivendo), su Daily:

    quale candela intendi per quella di ieri (se usi updateonclose quella di ieri è la [0], se usi default quella di ieri è la [1])?

    Riparti indicando le date esatte:

    chiusura del giorno 27/5, ieri l’altro serve oppure no?

    chiusura del giorno 28/5 ieri, quali caratteristiche deve avere la candela?

    prezzo corrente del 29/5 oggi, quando dovrebbe entrare?

    #133827 quote
    Giovanni Belli
    Participant
    Average

    Ok scusa .. correggo..

    con la candela Daily di oggi 29/5 , il conteggio iniziale del programma per determinare High,Low,Open e close deve essere effettuato con la candela del 28/5 quindi ieri…

    poi nel corso della giornata del 29/5 , con le candele ogni 5 minuti, deve avvenire l’ipotetica entrata

    è un pò più chiaro?

    #133898 quote
    robertogozzi
    Moderator
    Master

    Prova questo e fammi sapere:

    DEFPARAM CumulateOrders = false
    DEFPARAM FLATBEFORE     = 090000
    DEFPARAM FLATAFTER      = 201500
    //
    TIMEFRAME(default)
    daysForbiddenEntry      = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0 or OpenDayOfWeek = 1
    c1                      = not daysForbiddenEntry
    c2                      = time >= 090000 AND time <= 211500
    //
    TIMEFRAME(1 Day,UpdateOnClose)
    Level75                 = low[1] + (range[1] * 0.75)
    Level25                 = low[1] + (range[1] * 0.25)
    Bullish                 = (close > open) AND close > Level75
    Bearish                 = (close < open) AND close < level25
    PrezzoLong              = high
    PrezzoShort             = low
    Tp                      = abs(close - open) * 0.8
    SlLong                  = high - close
    SlShort                 = close - low
    //
    TIMEFRAME(5 minute,UpdateOnClose)
    // Long
    IF c1 AND c2 AND Bullish AND close >= PrezzoLong  AND Not Onmarket THEN
       BUY 1 CONTRACT AT MARKET
       SET TARGET PROFIT Tp
       SET STOP   LOSS   SlLong
    ENDIF
    // Short
    IF c1 AND c2 AND Bearish AND close <= PrezzoShort AND Not Onmarket THEN
       SELLSHORT 1 CONTRACT AT MARKET
       SET TARGET PROFIT Tp
       SET STOP   LOSS   SlShort
    ENDIF
    #133927 quote
    Giovanni Belli
    Participant
    Average

    Bingo… Funziona e parte esattamente quando avrei voluto partisse!!! Grazie.. ti inoltro il mio codice finale che prevede la limitazione di 1 ordine al giorno al massimo.

     

    solo 1 domanda.. perchè in Level75 e Leve25 utilizzi Low[1] e range[1] mentre per i restanti calcoli utilizzi la close e open in corso?

    Grazie

    DEFPARAM CumulateOrders = false
    DEFPARAM FLATBEFORE = 110000
    DEFPARAM FLATAFTER = 190000
    //
    TIMEFRAME(default)
    daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0 or OpenDayOfWeek = 1
    c1 = not daysForbiddenEntry
    c2 = time >= 110000 AND time <= 190000
    //
    TIMEFRAME(1 Day,UpdateOnClose)
    Level75 = low[1] + (range[1] * 0.75)
    Level25 = low[1] + (range[1] * 0.25)
    Bullish = (close > open) AND close > Level75
    Bearish = (close < open) AND close < level25
    PrezzoLong = high
    PrezzoShort = low
    Tp = abs(close - open) * 0.7
    //SlLong = high - close
    //SlShort = close - low
    //
    TIMEFRAME(5 minute,UpdateOnClose)
    
    IF intradaybarindex = 0 then
    countposition=0
    endif
    
    count=countposition < 1
    // Long
    IF c1 AND c2 AND Bullish and count AND close >= PrezzoLong AND Not Onmarket THEN
    BUY 1 CONTRACT AT MARKET
    SET TARGET PROFIT Tp
    SET STOP pLOSS 60 //Sllong
    countposition=countposition + 1
    ENDIF
    // Short
    IF c1 AND c2 AND Bearish and count AND close <= PrezzoShort AND Not Onmarket THEN
    SELLSHORT 1 CONTRACT AT MARKET
    SET TARGET PROFIT Tp
    SET STOP pLOSS 60 //SlShort
    countposition=countposition + 1
    ENDIF
    
    #133931 quote
    robertogozzi
    Moderator
    Master

    Utilizzo low[1]  e range[1] perché ho interpretato che tu li volessi calcolare sulla candela del giorno prima, quella del 28/5 tornando al tuo esempio.

    Ok alla limitazione. È quello che intendevo all’inizio quando avevo notato che faceva una sola operazione.

    #133932 quote
    robertogozzi
    Moderator
    Master

    La differenza è che adesso fa un’operazione perché l’entrata è a mercato e sei certo che entra.

    Come l’avevi fatto te inizialmente piazzava l’ordine pendente solo i primi 5 minuti del giorno e basta. Se entrava i  quei 5 minuti bene, altrimenti per quel giorni era finita.

    Limitare gli ordini pendenti è un po’ più complicato perché se durano più barre si può usare OnMarket, altrimenti è più difficile scoprire se sono entrati ed uscire sulla stessa barra, occorre verificare se il risultato della strategia è diverso rispetto alla barra precedente utilizzando STRATEGYPROFIT.

    #133939 quote
    Giovanni Belli
    Participant
    Average

    Peró se posso permettermi, quando simulavo in backtest per un lungo periodo lui partiva in alcuni casi ad orari differenti dalla mattina al tardo pomeriggio.. non sono i primi 5 minuti della giornata

    come mai?

    #133950 quote
    robertogozzi
    Moderator
    Master

    Erano i 5 minuti in cui per la prima volta le condizioni erano soddisfatte, o entrava allora o mai più, perché in quel momento incrementavi il contatore senza sapere se poi l’entrata ci sarebbe stata o meno.

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

Mancata entrata su ordine pendente


ProOrder: Trading Automatico & Backtesting

New Reply
Author
Summary

This topic contains 15 replies,
has 2 voices, and was last updated by Giovanni Belli
5 years, 8 months ago.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 05/29/2020
Status: Active
Attachments: 1 files
Logo Logo
Loading...