problema con una strategia a candela pattern

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • #154376 quote
    GaspareGaspare
    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
    robertogozzirobertogozzi
    Moderator
    Legend

    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
    GaspareGaspare
    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
    robertogozzirobertogozzi
    Moderator
    Legend

    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.
ProRealAI ProRealAI New

Stuck on this ProBuilder code?

Describe what this topic is trying to build, in plain English, and ProRealAI writes the ProRealTime™ indicator, screener or system for you.

Available in 7 languages
Try ProRealAI

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 robertogozzirobertogozzi
5 years, 9 months ago.

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