Trading su Notizie

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #44517 quote
    volpiemanuele
    Participant
    Veteran

    Ciao,

    ho scritto il seguente codice per tradare le notizie ma non mi funziona….e non capisco dove sbaglio.

     

    L’idea è questa:

    • Monitorare i MAX e i MIN nei 15 minuti prima della notizia: nell’esempio la notizia è alle 1430…per cui ho impostato due variabili  cosi:starttime=141500
      endtime=143000
    • Individuo i max e i min  nei 15 min prima della notizia e mi memorizzo i valori rispettivamente con + 2 pips sul max e – 2 pips sul min;
    • Se entro i primi 5 minuti successivi alle 1430 viene rotto il max o il min entro long o short e chiudo operazione nei 5 minuti successivi (1440).
    • Ovviamente per altri orari il concetto rimane lo stesso.

    Possiamo usare TF a 1 minuto o anche inferiori….ditemi voi come meglio….mi potete aiutare ? Grazie

    defparam flatbefore=143000
    defparam flatafter=144000
    
    starttime=141500
    endtime=143000
    
    timetotrade=143000
    endtimetotrade=143500
    
    
    if opentime=starttime or (opentime > starttime and opentime[1] < starttime) then
    mymax=high+2*pipsize
    mymin=low-2*pipsize
    elsif opentime> starttime and time <=endtime then
    mymax=max(high+2*pipsize,mymax)
    mymin=min(low-2*pipsize,mymin)
    endif
    
    if time = timetotrade and time <= endtimetotrade then
    if close > mymax then
    buy 1 share at market
    
    elsif close < mymin then
    sellshort 1 share at market
    endif
    endif
    #44531 quote
    robertogozzi
    Moderator
    Master

    L’ho modificato così e funziona, sia su 1 minuto che 5 monuti (DAX):

    defparam flatbefore = 143000
    defparam flatafter  = 144000
    
    timetotrade         = 143000
    endtimetotrade      = 143500
    
    IF time = timetotrade THEN
       mymax = highest[15](high) + (2 * pipsize)
       mymin = lowest[15](low)   - (2 * pipsize)
    endif
    
    if time >= timetotrade and time <= endtimetotrade then
       if close > mymax then
          buy 1 share at market
       elsif close < mymin then
          sellshort 1 share at market
       endif
    endif
    
    #44537 quote
    robertogozzi
    Moderator
    Master

    Le righe 8 e 9 contengono il valore 15 per il TF a 1 minuto (15 candele da un minuto), per quello a 5 minuti devi mettere 3 (3 candele da 5 minuti) e così per altri TF.

    Ovviamente non funziona su TF superiori a 15 minuti, perché ogni candela sarebbe più ampia del periodo che intendi osservare.

    Le righe 8 e 9 consentono di evitare le variabili “starttime” e “endtime”.

    #44602 quote
    volpiemanuele
    Participant
    Veteran

    grazie infinite

    #45233 quote
    volpiemanuele
    Participant
    Veteran

    Ciao,

    torno per capire come risolvere. Ad esempio negli NFP di venerdi’  la strategia è entrata long ma sulla candela delle 1431 (tf 1 minuto su EURUSD) e questo non ha portato frutti in quanto poi il mercato ha preso altra direzione. La soluzione è che l’entrata fosse stata alle 1430 esatte. Con tf 1 minuto per controllare rottura massimi e mini occorre la chiusura della candela e quindi il sistema entrerà sempre alle 1431. L’unica soluzione che mi viene in mente è quella di abbassare il TF a 1 secondo. In questo modo in back il problema sembra risolto. Avevo già provato in reale su altre notizie questa soluzione ma proorder chiude la strategia in quanto l’errore è tipo ” ordine rifiutato”. Mi sapete dire come poter risolvere e perche’ proorder genera questo errore ? Grazie

    #45234 quote
    volpiemanuele
    Participant
    Veteran

    In ogni caso il codice per TF 1 secondo sarebbe cosi’. Ovviamente per controllare max e min ultimi 15 minuti devono controllare ultimi 900 secondi.

    Grazie

     

    DEFPARAM CumulateOrders = False
    
    defparam flatbefore = 143000
    defparam flatafter  = 144000
     
    timetotrade         = 143000
    endtimetotrade      = 143500
     
    IF time = timetotrade THEN
    mymax = highest[900](high) + (1.8 * pipsize)
    mymin = lowest[900](low)   - (1.8 * pipsize)
    endif
     
    if time >= timetotrade and time <= endtimetotrade  then
    if close > mymax then
    buy 1 share at market
    elsif close < mymin then
    sellshort 1 share at market
    endif
    endif
    
    SET STOP PLOSS 18
    SET STOP PTRAILING 10
    #45248 quote
    robertogozzi
    Moderator
    Master

    Il codice mi sembra corretto.

    Il problema può essere il TF di 1 secondo, forse troppo breve per garantire un buon funzionamento. Non ne sono certo, ma può darsi che tra la candela dove l’ordine viene eseguito e la ricezione dell’OK da parte del broker intercorra magari un’altra candela, per cui ProOrder può avere condizioni valide per un altro trade prima che l’ordine precedente non sia stato ancora eseguito.

    Prova a variare il TF a 5 o 10 secondi, rifacendo il calcolo delle barre indietro da verificare.

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

Trading su Notizie


ProOrder: Trading Automatico & Backtesting

New Reply
Author
Summary

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

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 08/24/2017
Status: Active
Attachments: No files
Logo Logo
Loading...