Directional movement

Viewing 10 posts - 1 through 10 (of 10 total)
  • Author
    Posts
  • #107434 quote
    R05
    Participant
    Veteran

    Gent.mi, vorrei implementare il sistema seguente (lo sto testando in manuale sul Dax time frame 30 secondi):

    1. compra appena il directional movement (DI+) incrocia al rialzo il directional movemente (DI-), però solo se l’ADX è maggiore del valore dell’ADX corrispondente al minimo a N periodi; se adx ancora inferiore all’adx a n periodi si sta fermi, ma si entra appena supera quel valore (vi allego un esempio)

    Di seguito ho messo giù la parte long, ma non riesco a indicare nel sistema il valore che aveva l’ADX in corrispondenza del minimo suddetto. Nel trading system allegato ho riportato ADX > del valore ADX di 10 periodi fa, ma non è corretto, perchè vorrei che fosse maggiore proprio del valore ADX in corrispondenza del minimo a N periodi.

    // Definizione dei parametri del codice
    DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
    // Il sistema cancellerà tutti gli ordini in attesa e chiuderà tutte le posizioni a 0:00. Dopo l'orario "Flat Before" non saranno piazzati nuovi ordini o posizioni.
    DEFPARAM FLATBEFORE = 090000
    // Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all'orario "Flat After"
    DEFPARAM FLATAFTER = 173000
    
    // Condizioni per entrare su posizioni long
    indicator1 = DIplus[14](close)
    indicator2 = DI[14](close)
    c1 = (indicator1 CROSSES OVER indicator2)
    indicator3 = ADX[14]
    c2 = (indicator3 > indicator3[10])
    
    IF c1 AND c2 THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF
    
    // Stop e target
    SET STOP pLOSS 15
    SET TARGET pPROFIT 15
    esempio.jpg esempio.jpg
    #107439 quote
    robertogozzi
    Moderator
    Master

    Provalo:

    // Definizione dei parametri del codice
    DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
    // Il sistema cancellerà tutti gli ordini in attesa e chiuderà tutte le posizioni a 0:00. Dopo l'orario "Flat Before" non saranno piazzati nuovi ordini o posizioni.
    DEFPARAM FLATBEFORE = 090000
    // Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all'orario "Flat After"
    DEFPARAM FLATAFTER = 173000
     
    // Condizioni per entrare su posizioni long
    indicator1 = DIplus[14](close)
    indicator2 = DI[14](close)
    c1 = (indicator1 CROSSES OVER indicator2)
    indicator3 = ADX[14]
    IF c1 THEN
       MinimoADX  = lowest[10](indicator3)
    ENDIF
    c2 = (indicator3 > MinimoADX)
    IF OnMarket THEN
      c2 = 0
    ENDIF
    IF c2 THEN
       BUY 1 CONTRACT AT MARKET
    ENDIF
     
    // Stop e target
    SET STOP pLOSS 15
    SET TARGET pPROFIT 15
    #107454 quote
    R05
    Participant
    Veteran

    Si grazie Roberto, ho provato ma non fa quello che vorrei. Ho allegato un esempio di entrata col tuo trading system con il problema da risolvere.

    Il fatto è che non si riesce a indicare il valore dell’ADX in corrispondenza di un minimo o di una candela precedente, perchè è fondamentale sapere il valore dell’ADX in corrispondenza proprio di quel minimo particolare.

    Cattura.jpg Cattura.jpg
    #107466 quote
    robertogozzi
    Moderator
    Master

    Calcola il minimo dell’ADX degli ultimi N periodi quando c’è l’incrocio ed al superamento di quel valore minimo dell’ADX ti fa entrare.

    Dalla tua foto non vedo data ed orario delle candele, per cui non riesco a replicare.

    Dalla mia foto puoi vedere quando c’è un incrocio e salva il minimo ADX delle ultime 10 candele, che è proprio in quella candela, per cui quando l’ADX supererà quel valore entrerà a mercato.

    x-4.jpg x-4.jpg
    #107479 quote
    R05
    Participant
    Veteran

    Ok Roberto grazie anche se il sistema non so se salva il valore dell’ADX quando incrociano il DI+ e il DI-. Ti allego un esempio di oggi preso dal backtest.

    Cattura-1.jpg Cattura-1.jpg
    #107481 quote
    R05
    Participant
    Veteran

    Riprendo l’esempio precedente e sembra che il sistema abbia fatto entrare subito all’incrocio di DI+ con DI-.

    #107490 quote
    robertogozzi
    Moderator
    Master

    In effetti l’incrocio che tu hai indicato è tra DIplus (linea DI+) e DI (istogramma), sei sicuro che non sia DIminus (DI-), perché l’istogramma non lo incrocia mai!

    #107495 quote
    R05
    Participant
    Veteran

    Si Roberto scusa, ho sbagliato. E’ DIminus. L’ho corretto, ora va, solo che ogni volta che prende il target o lo stop se l’adx attuale è superiore al valore dell’adx a 10 periodi apre una posizione. Mentre se volessi trovare il valore dell’ADX in corrispondenza di un minimo o massimo di prezzo come dovrei fare?

    #107522 quote
    robertogozzi
    Moderator
    Master

    Per trovare l’ADX in corrispondenza di un minimo/massimo (non l’ho provato):

    Periodi = 20
    HH      = highest[Periodi](high)
    LL      = lowest[Periodi](low)
    MyADX   = Adx[14]
    IF high = HH THEN
       HighADX = MyADX
    ENDIF
    IF low = LL THEN
       LowADX = MyADX
    ENDIF

    al termine HighADX conterrà l’ADX del momento in cui è stato registrato un massimo e LowADX quando è stato registrato un minimo.

    #107592 quote
    R05
    Participant
    Veteran

    Si Roberto grazie, gentilissimo. Funziona.

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

Directional movement


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
R05 @r05 Participant
Summary

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

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 09/13/2019
Status: Active
Attachments: 4 files
Logo Logo
Loading...