problema con una strategia a candela pattern

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • #154376 quote
    Gaspare
    Participant
    Veteran
    DEFPARAM CumulateOrders = false
    DEFPARAM FLATBEFORE = 000000
    DEFPARAM FLATAFTER = 000000
    c5= adx[5]> 20
    //**********************************************************************
    // engulfing pattern rialzista (anche reversal day)
    C1=range[0]>=range[1] AND close[1]<open[1] AND close[0]>open[0] AND open[0]<=close[1] AND close[0]>=open[1]AND range[0]>averagetruerange[ B ](close)*1
    // engulfing pattern ribassista (anche reversal day)
    C2=range[0]>=range[1] AND close[1]>open[1] AND close[0]<open[0] AND open[0]>=close[1] AND close[0]<=open[1]AND range[0]>averagetruerange[ C ](close)*1
    //**********************************************************************
    // hammer rialzista
    C3 = close[1]<open[1] AND open[0]>low[0]+(range*0.66) AND close[0]>low[0]+(range*0.66) AND range[0]>abs(open-close)*4 AND low[0]<low[1] AND range[0]>averagetruerange[ D ](close)*1
    // shooting star ribassista
    C4 = close[1]>open[1] AND open[0]<high[0]-(range*0.66) AND close[0]<high[0]-(range*0.66) AND range[0]>abs(open-close)*4 AND high[0]>high[1] AND range[0]>averagetruerange[ E ](close)*1
    //**********************************************************************
    IF  Not OnMarket [( C1 OR C3) AND C5] THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF
    
    IF  Not OnMarket [( C2 OR C4) AND C5] THEN
    SELLSHORT 1 CONTRACT AT MARKET
    ENDIF
    
    SET STOP   pLOSS    50
    SET TARGET pPROFIT  100

    Ciao Roberto,  per favore potresti scoprire cosa non va? Il sistema  gira, ma non apre e non chiude posizioni.

    Se invece lo divido in due parti, C1 e C2,— C3 e C4, allora vanno entrambi, con TF h1 su 1k

    Grazie e perdona la mia ridotta conoscenza di programmazione

    #154377 quote
    robertogozzi
    Moderator
    Master

    Innanzitutto rimuovi (o commenta) le righe 2 e 3, dal momento che non indichi un orario è meglio non  mettere niente, anche perché FLATAFTER=000000 dovrebbe impedire qualunque operatività (non l’ho provato), in quanto qualsiasi orario è > di 000000.

    La linea 16 contiene due errori:

    • manca AND dopo OnMarket
    • NON devi usare le parentesi quadre, ma semplicemente altre tonde, per le espressioni, in quanto con le quadre servono come indice di OnMarket e produrrebbero condizioni sballate, scrivi quella riga (ma anche la 20), così:
    IF  Not OnMarket AND (( C1 OR C3) AND C5) THEN

     

    #157432 quote
    Gaspare
    Participant
    Veteran

    Ciao Roberto

    vorrei chiederti se su questo sistema si puo’ cambiare qualcosa?

    magari scriverlo in forma piu’ corretta o altro?

    TF usato h1 su uno storico di 1k candele, cioè 3 mesi

    è gia’ live da inizio mese e ogni mese lo vorrei aggiornare per eventuali cambio di valori delle variabili.

    Cosa ne pensi? Grazie

    DEFPARAM CumulateOrders = false
    
    c7= adx[5]> A
    //**********************************************************************
    // engulfing pattern rialzista (anche reversal day)
    C1=range[0]>=range[1] AND close[1]<open[1] AND close[0]>open[0] AND open[0]<=close[1] AND close[0]>=open[1]AND range[0]>averagetruerange[ B ](close)*1
    // engulfing pattern ribassista (anche reversal day)
    C2=range[0]>=range[1] AND close[1]>open[1] AND close[0]<open[0] AND open[0]>=close[1] AND close[0]<=open[1]AND range[0]>averagetruerange[ B ](close)*1
    //**********************************************************************
    // hammer rialzista
    C3 = close[1]<open[1] AND open[0]>low[0]+(range*0.66) AND close[0]>low[0]+(range*0.66) AND range[0]>abs(open-close)*4 AND low[0]<low[1] AND range[0]>averagetruerange[ C ](close)*1
    // shooting star ribassista
    C4 = close[1]>open[1] AND open[0]<high[0]-(range*0.66) AND close[0]<high[0]-(range*0.66) AND range[0]>abs(open-close)*4 AND high[0]>high[1] AND range[0]>averagetruerange[ C ](close)*1
    //**********************************************************************
    // swing point low + one white soldier (rialzista)
    C5 = close[2]<open[2] AND low[2]>low[1] AND low[0]>low[1] AND close[0]>open[0] AND close[0]>high[1] AND high[2]>high[1] AND high[0]>high[1] AND high[0]>high[2] AND close[0]>open[2] AND close[0]>=low[0]+(range[1]*0.50) AND range[0]>averagetruerange[ D ](close)*1
    // swing point high + one white soldier (ribassista)
    C6 = close[2]>open[2] AND high[2]<high[1] AND high[0]<high[1] AND close[0]<open[0] AND close[0]<low[1] AND low[2]<low[1] AND low[0]<low[1] AND low[0]<low[2] AND close[0]<open[2] AND close[0]<=high[0]-(range[1]*0.50) AND range[0]>averagetruerange[ D ](close)*1
    //**********************************************************************
    
    IF  Not OnMarket AND (( C1 OR C3 OR C5 ) AND C7) THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF
    
    IF  Not OnMarket AND (( C2 OR C4 OR C6 ) AND C7) THEN
    SELLSHORT 1 CONTRACT AT MARKET
    ENDIF
    
    SET STOP   pLOSS    S
    SET TARGET pPROFIT  S
    
    #157449 quote
    robertogozzi
    Moderator
    Master

    Se è profittevole va bene, non entro nel merito. Direi che va bene che tu lo aggiorni con una certa frequenza, specialmente con un backtest così limitato.

    Quando fai i backtest ti consiglio di farli su 200K barre (o almeno 100K), 1K è davvero poco!

    Quanto al codice direi che in generale è abbastanza chiaro, però per il mio modo di programmare (ed anche per rendere l’esecuzione più efficiente) eviterei di mettere tutte quelle condizioni su una sola riga, oltre a rendere il codice più lento ed inefficiente sono anche difficili da individuare chiaramente e, di conseguenza, è più difficile farci eventuali modifiche. A me piace mettere le singole condizioni separatamente e poi, alla fine, farne il riepilogo in una condizione più generale, esempio:

    c1 = ....
    c2 = ....
    c3 = ....
    c4 = ....
    Cond = c1 AND ((c2 OR c3) AND c4)
Viewing 4 posts - 1 through 4 (of 4 total)
  • You must be logged in to reply to this topic.

problema con una strategia a candela pattern


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
Gaspare @gaspare Participant
Summary

This topic contains 3 replies,
has 2 voices, and was last updated by robertogozzi
5 years, 1 month ago.

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