Sistema Oil H1 – Aiuto per unica operazione giornaliera

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

     

    Ciao a tutti,

    sto lavorando su un sistema che sfrutta il breakout su Oil H1 alla rottura del max/min della candela delle 14-15. Queste le caratteristiche:

    Nessun Take profit.

    Chiusura del sistema alle 22.

    Stop Loss sul max/min della candela di setup.

     

    Per ora ho scritto buona parte del codice e mi sembra funzionare, ma avrei bisogno di impostare il sistema in modo che non esegua più di un’operazione al giorno. Mi spiego meglio. Nel caso in cui il sistema parta con il breakout della candella delle 14 e l’operazione finisca in stop prima delle 22 non voglio che il sistema faccia partire una seconda operazione al successivo break della candela oraria.

    Ho provato a inserire le indicazioni presenti in questo topic:

    come limitare ad una posizione al giorno intraday

    ma non riesco a far funzionare correttamente il sistema.

     

    Potete darmi una mano?

     

    Vi allego il sistema che ho scritto. Grazie!

    Defparam cumulateorders = false
    
    DEFPARAM FLATBEFORE = 150000
    DEFPARAM FLATAFTER = 220000
    
    
    //Set livelli di Stop
    MyStopLossLong= (open-low)+2*Pipsize
    MyStopLossShort= range[1]+2*Pipsize
    
    //candela ingresso -entry-
    BuyPrice = High+2*Pipsize
    SellPrice = Low-2*Pipsize
    
    // Condizioni per entrare su posizioni long
    IF NOT ONMARKET THEN
    BUY 1 CONTRACTS AT BuyPrice STOP
    SET STOP LOSS MyStopLossLong
    ENDIF
    
    // Condizioni per entrare su posizioni short
    IF NOT ONMARKET  THEN
    SELLSHORT 1 CONTRACTS AT SellPrice STOP
    SET STOP LOSS MyStopLossShort
    ENDIF
    #48345 quote
    robertogozzi
    Moderator
    Master

    L’ho modificato e dovrebbe funzionare quasi sempre, nel senso che alcune volte esegue anche più di un trade sulla stessa candela e questo non so come poterlo evitare, ma in generale funziona.

    Defparam cumulateorders = false
     
    DEFPARAM FLATBEFORE = 150000
    DEFPARAM FLATAFTER  = 220000
    
    ONCE TradeOn        = 1                //abilitare il trading per default
    IF OnMarket THEN
       TradeOn = 0                         //disabilitare il trading dopo un'operazione
    ENDIF
    IF IntraDayBarIndex = 0 THEN           //riabilitare il trading all'inizio di ogni giorno
       TradeOn = 1
    ENDIF
    
    //Set livelli di Stop
    MyStopLossLong= (open-low)+2*Pipsize
    MyStopLossShort= range[1]+2*Pipsize
     
    //candela ingresso -entry-
    BuyPrice = High+2*Pipsize
    SellPrice = Low-2*Pipsize
     
    // Condizioni per entrare su posizioni long
    IF NOT ONMARKET AND TradeOn THEN
       BUY 1 CONTRACTS AT BuyPrice STOP
       SET STOP LOSS MyStopLossLong
    ENDIF
     
    // Condizioni per entrare su posizioni short
    IF NOT ONMARKET  AND TradeOn THEN
       SELLSHORT 1 CONTRACTS AT SellPrice STOP
       SET STOP LOSS MyStopLossShort
    ENDIF

    Roberto

    #48346 quote
    robertogozzi
    Moderator
    Master

    Ho capito il problema di più operazioni sulla stessa candela.

    Tu piazzi due ordini pendenti contemporaneamente, siccoma la candela dura un’ora, quindi è un TF abbastanza lungo, può capitare che un’operazione vada in stop e l’altro ordine pendente venga pure esso eseguito!

    #48349 quote
    robertogozzi
    Moderator
    Master

    Un’altra cosa, tu non hai inserito una riga dova prendi i valori alle 15, perché le righe 19-20 (12-13 del tuo codice originale) prendono sempre i valori nuovi ogni ora.

    Tu forse hai ritenuto che

    DEFPARAM FLATBEFORE = 150000

    Facesse partire la strategia alle 15:00. Purtroppo Non è così!!!  Ogni strategia funziona continuamente, candela dopo candela. FLATBEFORE impedisce solo che, anche a condizioni verificate, un’operazione non venga aperta.

    Per cui l’ho ulteriormente modificata:

    Defparam cumulateorders = false
     
    DEFPARAM FLATBEFORE = 150000
    DEFPARAM FLATAFTER  = 220000
    
    ONCE TradeOn        = 1                //abilitare il trading per default
    IF OnMarket THEN
       TradeOn = 0                         //disabilitare il trading dopo un'operazione
    ENDIF
    
    //Set livelli di Stop
    MyStopLossLong= (open-low)+2*Pipsize
    MyStopLossShort= range[1]+2*Pipsize
     
    //candela ingresso -entry-
    IF time = 150000 then                 //alle 15:00 prendi i valori da usare per il breakout
       BuyPrice  = High+2*Pipsize
       SellPrice = Low-2*Pipsize
       TradeOn   = 1                      //riabilitare il trading
    endif
    
    // Condizioni per entrare su posizioni long
    IF NOT ONMARKET AND TradeOn THEN
       BUY 1 CONTRACTS AT BuyPrice STOP
       SET STOP LOSS MyStopLossLong
    ENDIF
     
    // Condizioni per entrare su posizioni short
    IF NOT ONMARKET  AND TradeOn THEN
       SELLSHORT 1 CONTRACTS AT SellPrice STOP
       SET STOP LOSS MyStopLossShort
    ENDIF

    Roberto

    Alessio thanked this post
    #48817 quote
    Giggetto82
    Participant
    New

    Ciao Roberto,

    scusa per il ritardo con cui ti rispondo… in effetti hai centrato perfettamente il mio obiettivo! Ti ringrazio moltissimo per l’implementazione del codice!

    Adesso ho ripreso a litigare con gli stop… mi sembravano corretti quando ti ho scritto ma rifacendo il backtest non mi soddisfano… ma niente di insuperabile!

    Nel caso ti disturbo di nuovo…:-)

     

    Grazie ancora!!!!

    #48823 quote
    Giggetto82
    Participant
    New

    Roberto, ari-eccomi…

    Ho inserito delle modifiche per gli stop e questa è la sequenza completa:

    Defparam cumulateorders = false
     
    DEFPARAM FLATBEFORE = 150000
    DEFPARAM FLATAFTER  = 220000
     
    ONCE TradeOn        = 1                //abilitare il trading per default
    IF OnMarket THEN
    TradeOn = 0                         //disabilitare il trading dopo un'operazione
    ENDIF
     
    //candela ingresso -entry-
    IF time = 150000 then                 //alle 15:00 prendi i valori da usare per il breakout
    BuyPrice  = High+2*Pipsize
    SellPrice = Low-2*Pipsize
    MyStopLossLong= (high-low)+4*pipsize
    MyStopLossShort= (low[1]-high[1])+4*pipsize
    TradeOn   = 1                      //riabilitare il trading
    endif
     
    // Condizioni per entrare su posizioni long
    IF NOT ONMARKET AND TradeOn THEN
    BUY 1 CONTRACTS AT BuyPrice STOP
    SET STOP LOSS MyStopLossLong
    ENDIF
     
    // Condizioni per entrare su posizioni short
    IF NOT ONMARKET  AND TradeOn THEN
    SELLSHORT 1 CONTRACTS AT SellPrice STOP
    SET STOP LOSS MyStopLossShort
    ENDIF
    

    In backtest funziona ma quando vado a metterla in test normale PRT arresta il sistema e mi da questo allarme:

    “Questo sistema di trading si è interrotto perchè ha voluto piazzare uno stop o un limite ad un livello di prezzo negativo. La prego di aggiungere le dovute protezioni al suo codice per prevenire l’immissione di ordini con livelli di rpezzo negativi” … è la prima volta che mi succede… puoi dirmi dove sto sbagliando?

    Grazie ancora!

    #48866 quote
    robertogozzi
    Moderator
    Master

    Intanto devi modificare SET STOP LOSS in

    SET STOP PLOSS

    per settare lo stop in Pips, anziché ad un certo prezzo.

    E’ negativo il valore dello Stop SHORT perché l’espressione

    low[1]-high[1]

    non può che essere negativa (ad esempio, 9999 – 10000), credo tu debba invertirla, oppure sostituirla con:

    abs(low[1]-high[1])

    Inoltre, se vuoi fare il debugging è bene che aggiunga, in backtest soltanto, queste righe che ti consentono di esaminare il valore delle variabili:

    GRAPH BuyPrice
    GRAPH SellPrice
    GRAPH MyStopLossLong
    GRAPH MyStopLossShort

    Roberto

    Nicolas thanked this post
    #50000 quote
    Giggetto82
    Participant
    New

    Roberto, non so come ringraziarti!

    Adesso funziona tutto! Metto il sistema in test e incrocio le dita, grazie ancora per il supporto!!!

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

Sistema Oil H1 – Aiuto per unica operazione giornaliera


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
Giggetto82 @giggetto82 Participant
Summary

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

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