Aiuto x strategia reversal

Viewing 10 posts - 1 through 10 (of 10 total)
  • Author
    Posts
  • #51876 quote
    maximus78
    Participant
    Senior

    Buonasera a tutti,

    vorrei scrivere questa semplice strategia ma non riesco ad impostare le seguenti condizioni successive che il sistema deve monitorare per piazzare gli ordini.

    Questa è la versione sell di esempio, la versione Buy è opposta, allego uno screenshot per capire meglio il sistema reversal.

     

    1) il sistema parte appena il prezzo fa un nuovo massimo che imposto, es: high[0]>highest[50](high)[1] –> resistenza di donchian blu

    2) il massimo non è violato e si formano dei minimi descrescenti , possono essere 1, 2 o molti. (frecce rosse) –

    (solo i minimi decrescenti, non importa i massimi, a meno che un massimo superi il massimo del punto1, allora il sistema riparte da capo).

    3) Appena il prezzo fa un nuovo minimo superiore rispetto al precedente (freccia verde), il sistema imposta un ordine pendente sell stop al minimo precedente (candela con più bassa freccia rossa)

    4) Allo stesso tempo imposta uno stop loss al massimo della candela del punto 1

    5)Allo stesso tempo imposta un take profit pari a 2 volte lo stop loss (massimo punto 1) -entry price (punto 4).

    6) Se il prezzo non tocca il livello dell’ordine sell pendente ma ritraccia, l’ordine rimane attivo e se il prezzo ritraccia oltre il massimo al punto 1, elimina tutti gli ordini e riparte a leggere il nuovo massimo facendo un nuovo ciclo dal punto 1.

    Grazie mille in anticipo!!

    Max

     

    Allego uno screenshot

    #51902 quote
    robertogozzi
    Moderator
    Master
    • il massimo di cui al tuo punto 1 di quanti periodi deve essere?
    • il Donchian a quanti periodi?

    Proverò a scrivere qualcosa con i suddetti dettagli.

    Roberto

    #51911 quote
    maximus78
    Participant
    Senior

    Ciao Roberto, fai pure periodo 100, poi sarà da ottimizzare.

    Grazie

    #51922 quote
    robertogozzi
    Moderator
    Master

    Provala, io l’ho testata sul DAX a 10 minuti e sembra funzionare, ma l’ho solo provata una volta, non so se la logica va bene al 100%:

    DEFPARAM CumulateOrders = false
    // inizializzazione Costanti e Variabili
    ONCE Periodi            = 100
    ONCE Massimo            = 999999
    ONCE Minimo             = 0
    ONCE StopLoss           = 0
    ONCE TargetProfit       = 0
    ONCE CandeleInverse     = 3                   //Numero di candele con nuovi Minimi/Massimi prima di entrare
    ONCE Moltiplicatore     = 1.5                 //Moltiplicatore per Target Profit
    
    // all'inizio, oppure quando una posizione è aperta, ricominciare daccapo
    IF OnMarket OR Massimo = 999999 THEN
       Massimo = highest[Periodi](high)
       Minimo  = lowest[Periodi](low)
    ENDIF
    
    // Entrare LONG
    a1 = close > Minimo
    a2 = summation[CandeleInverse](high[1] > high[2]) = CandeleInverse   //almeno "n" massimi più alti
    a3 = high < high[1]                                                  //Massimo attuale < quello precedente
    ax = a1 AND a2 AND a3
    IF ax THEN
       StopLoss = Minimo
       TargetProfit = high[1] - ((high[1] + StopLoss) * Moltiplicatore)
       BUY 1 CONTRACTS AT high[1] STOP                                   //Ordine BUY pendente
    ENDIF
    
    // Entrare SHORT
    b1 = close < Massimo
    b2 = summation[CandeleInverse](low[1] < low[2]) = CandeleInverse     //almeno "n" minimi più bassi
    b3 = low > low[1]                                                    //Minimo attuale > quello precedente
    bx = b1 AND b2 AND b3
    IF bx THEN
       StopLoss     = Massimo
       TargetProfit = low[1] + ((StopLoss - low[1]) * Moltiplicatore)
       SELLSHORT 1 CONTRACTS AT low[1] STOP                              //Ordine SELL pendente
    ENDIF
    // Stop Loss & Target/Take Profit
    SET STOP   LOSS   StopLoss
    SET TARGET PROFIT TargetProfit
    Nicolas thanked this post
    #52012 quote
    maximus78
    Participant
    Senior

    Grazie Roberto,

    di primo acchito ho notato che imposti un numero minimo di candele con nuovi massimi o minimi (ONCE CandeleInverse     = 3 ), l’dea è che non ci sia un n° minimo di candele da impostare

    perchè questo numero può essere viariabile, può essere 1 solo minimo come 10 di fila prima che il prezzo faccia un nuovo minimo superiore.

    Non si può impostare in questo modo? Magari con una funzione tipo………….  WHILE low[attuale]<low[precedente]……..

    Ho fatto girare il sistema su EUR/USD e noto anche che è sempre in posizione, quando chiude uno short, apre un long e sembra che non rispetti il take profit.

    Comunque domani ci guardo meglio e ti dico.

    Grazie

    Massimo

    #52110 quote
    robertogozzi
    Moderator
    Master

    Per il numero di candele ho indicato un numero a caso, puoi mettere 1 e dovrebbe funzionare come vuoi tu.

    Force c’è un problema con HIGHEST e LOWEST secondo il numero di PreLoadBars caricate.

    Però il problema vero, forse ho capito, è diverso. Perché quando lanci la strategia va a cercare dei massimi/minimi precedenti, dopodiché entra quando fa un minimo superiore al minimo precedente. A quel punto però il prezzo può trovarsi lontano dal massimo/munimo rilevato.

    Quindi, confermami l’interpretazione se è corretta, quando entra rileva Massimi/minimi entro un certo periodo, dopodiché attende che il prezzo SUPERI quei Massimi/Minimi e da li attende il ritracciamento ecc… come hai indicato tu.

    Va bene?

    #52124 quote
    maximus78
    Participant
    Senior

    Ciao Roberto,

    si infatti la logica è semplice ma per me è difficile scriverla perchè sono condizioni successive che non avvengono nello stesso tempo e vengono confermate nella candela successiva a cambiamento già avvenuto.

    la logica per me è questa:

    1) imposto un massimo/minimo tipo highest[100](high), quando il sistema rileva il nuovo massimo, attende che la candela successiva non superi il massimo precedente, perchè ovviamente farebbe un nuovo massimo, quindi la condizione è confermata quando si crea un massimo minore rispetto al punto 1 della strategia:

    1. high[1]>highest[100](high)[1]       e     high[0] < high[1]

    2) se fa un massimo minore, allora il sistema deve rilevare i successivi minimi, perchè a questo punto il prezzo sta ritracciando. I minimi successivi possono essere vari.

    low[corrente]<low[precedenti]

    3) Quando il prezzo fa un minimo superiore rispetto al precedente, significa che il ritracciamento potrebbe essere concluso.

    Quindi il sistema considera il minimo precedente perchè è il più basso della serie, e quindi un potenziale supporto e lì imposta l’ordine di entrata pendente in sell stop.

    quando  : low[corrente]>low[precedente]

    imposta ordine su low precedente :  sell 1 contracts at low[precedente] stop ……….che è anche lowest[1](low) perchè è il più basso dei due ultimi minimi

    4) impostato l’ordine sell stop, imposta anche l’ordine stop loss sul massimo che considera all’inizio (resistenza).

    5) Allo stesso tempo calcola la differenza tra i due ordini e imposta il take profit.

    In questo modo ho supporto e resistenza definiti con i 3 ordini di entrata, stop loss e take profit per un potenziale reversal.

    6) Se il prezzo continua nel trend precedente senza toccare l’ordine pendente e oltrepassa la nostra resistenza, gli ordini vengono annullati.

    #52155 quote
    robertogozzi
    Moderator
    Master

    Ho rifatto daccapo la strategia e la sto provando:

    DEFPARAM CumulateOrders = false
    DEFPARAM PreLoadBars    = 0
    // inizializzazione Costanti e Variabili
    ONCE Massimo            = 0
    ONCE Minimo             = 999999
    ONCE StopLoss           = 0
    ONCE TargetProfit       = 0
    ONCE Moltiplicatore     = 1.5                                        //Moltiplicatore per Target Profit
    ONCE StopMinimo         = 6 * pipsize
    
    // Se nuovi Massimo/Minimo salvarli e ricominciare daccapo
    IF high > Massimo THEN
       Massimo = high
       Minimo  = 999999
    ELSIF low < Minimo THEN
       Minimo  = low
       Massimo = 0
    ENDIF
    //
    //         Entrare LONG
    a1 = (close > Minimo)
    a2 = high < high[1]
    ax = a1 AND a2
    IF ax AND NOT OnMarket THEN
       StopLoss     = Min(Minimo, high[1] - StopMinimo)                  //Usare lo Stop Loss minimo se necessario
       TargetProfit = high[1] + ((high[1] - StopLoss) * Moltiplicatore)
       BUY 1 CONTRACTS AT high[1] STOP                                   //Ordine BUY pendente
    ENDIF
    //
    //         Entrare SHORT
    b1 = (close < Massimo)
    b2 = low > low[1]
    bx = b1 AND b2
    IF bx AND NOT OnMarket THEN
       StopLoss     = Max(Massimo, low[1] + StopMinimo)                  //Usare lo Stop Loss minimo se necessario
       TargetProfit = low[1] - ((StopLoss + low[1]) * Moltiplicatore)
       SELLSHORT 1 CONTRACTS AT low[1] STOP                              //Ordine SELL pendente
    ENDIF
    //   Stop Loss & Target/Take Profit
    SET STOP   LOSS   StopLoss
    SET TARGET PROFIT TargetProfit
    //
    GRAPH Massimo
    GRAPH Minimo
    GRAPH StopLoss
    GRAPH TargetProfit
    GRAPH StopMinimo

    Però per il momento non funziona, non so perché ma non esce in STOP LOSS, pur essendo stato colpito!

    In pratica, come si vede dalla foto (EurUsd h1), il 2 Ottobre alle ore 06:00 è entrato in posizione LONG ad 1.1780, con Target Profit ad 1.7902 e Stop Loss ad 1,17732 (l’ho indicato con una linea orizzontale rossa tratteggiata). Alla candela successiva l’ha colpito e l’operazione avrebbe dovuto terminare, mentre il report mi segnala l’operazione ancora in corso!

    Attendiamo un chiarimento da Nicolas, appena potrà.

    #52436 quote
    maximus78
    Participant
    Senior

    Grazie Roberto, si infatti non considera i take profit,

    ho provato a scrivere il codice e sono riuscito a ricostruire il sistema partendo dalla successione di minimi con l’istruzione WHILE ed andando a ritroso, purtroppo non riesco a definire il punto 1 di partenza, cioè l’Higher high di 100 periodi (HH100) ed il comando di cancellazione degli ordini pendenti se close sale al di sopra di HH100.

    Magari riesci ad aiutarmi, anche tu Nicolas se puoi darci una mano, grazie mille!

    Massimo

    defparam cumulateorders=false
    // trova successione di lower lows
    decrease = (low[0] < low[1])
    lowerlows =0
    WHILE decrease[lowerlows] DO
    lowerlows = lowerlows+1
    wend
    //trova ultimo lower low 
    LL=lowerlows[1]>0
    //trova higher low corrente
    HL=lowerlows[0]=0
    
    //trova Higher high 100 periodi prima dei lower lows
    HH100=
    
    // definizione stop loss sopra HH100
    SL= HH100-low[1]
    // definizione target profit
    TP=TP=(HH-low[1])*1.5
    
    // elimina ordini pendenti impostati se close>HH100
    ERASEORDERS= close>HH100
    
    // imposta ordine pendente su minimo precedente
    if LL and HL and uptrend and not onmarket then
    sellshort 1 contracts at low[1] stop
    set stop loss SL
    TP=(HH-low[1])*1.5
    set target profit TP
    if eraseorders and not onmarket then............
    endif
    
    #52437 quote
    maximus78
    Participant
    Senior

    Ci sono degli errori, il codice è questo.

    defparam cumulateorders=false
    // trova successione di lower lows
    decrease = (low[0] < low[1])
    lowerlows =0
    WHILE decrease[lowerlows] DO
    lowerlows = lowerlows+1
    wend
    
    //trova ultimo lower low
    LL=lowerlows[1]>0
    
    //trova higher low corrente
    HL=lowerlows[0]=0
    
    //trova Higher high 100 periodi prima dei lower lows
    HH100=
    
    // definizione stop loss sopra HH100
    SL= HH100-low[1]
    // definizione target profit
    TP=TP=(HH-low[1])*1.5
    
    // elimina ordini pendenti impostati se close>HH100
    eraseorders=close>HH100
    
    // imposta ordine pendente su minimo precedente
    if LL and HL and HH100 and not onmarket then
    sellshort 1 contracts at low[1] stop
    set stop loss SL
    set target profit TP
    endif
    
    
Viewing 10 posts - 1 through 10 (of 10 total)
  • You must be logged in to reply to this topic.

Aiuto x strategia reversal


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
maximus78 @maximus78 Participant
Summary

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

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