TS DIVERGENZA

Viewing 10 posts - 1 through 10 (of 10 total)
  • Author
    Posts
  • #51092 quote
    traderwin
    Participant
    Average

    Salve, sono nuovo del forum.

    Vorrei chiedervi come faccio in un ts ad implemntare il comando divergenza.

    Ad esempio, se io dico al ts di entrare al break di una media, poi come faccio a dirli: entrami al break della media, ma solo quando si verifica una divergenza in un range di n ultime candele (come in foto), su rsi settato a 10-30-70-20

    Grazie anticipatamente a chi mi aiuta 🙂

    #51101 quote
    robertogozzi
    Moderator
    Master

    Non ho quell’indicatore, quindi non posso fare prove, puoi dirmi come si chiama ed il link dove trovarlo (oppure lo alleghi in formato testo con copia & incolla, oppure come file .ITF)?

    Ho provato a cercare quel nome (Divergenze RSI) nel forum, ma non c’è nbiente con quel nome.

    Roberto

    #51102 quote
    traderwin
    Participant
    Average

    Salve Roberto. L’inidicatore è negli indicatori predefiniti prorealtime.

    Si chiama Divergenze RSI

    #51111 quote
    traderwin
    Participant
    Average

    Salve Roberto, finalemnte ho trovato l’indicatore. Lo allego in formato itf

    La ringrazio per la sua disponibilità 🙂

    #51189 quote
    robertogozzi
    Moderator
    Master

    L’indicatore che hai allegato è un pò diverso da quello nella tua foto. Io ti allego la foto di quello che hai allegato tu e da cui ho tratto gli esempi.

    Ad ogni modo, il nome dell’indicatore serve nella CALL per richiamarlo dall’interno del tuo codice. Non ci sono parametri da indicare tra parentesi nella CALL (se ci fossero basta indicarli nell’ordine corretto). I valori restituiti sono tre:

    • 2   = divergenza Rialzista    (0 = nessuna divergenza)
    • -2 = divergenza Ribassista (0 = nessuna divergenza)
    • 0  = zero    (questa è la linea dello zero e serve solo visivamente sul grafico, va ignorato nel codice)
    //   esempio LONG
    DivergenzaLONG, DivergenzaSHORT, ignored = CALL "Divergences RSX"
    IF close CROSSES OVER Average[20] THEN
       IF DivergenzaLONG THEN
          BUY 1 CONTRACTS AT MARKET
       ENDIF
    ENDIF
    
    //   esempio SHORT
    DivergenzaLONG, DivergenzaSHORT, ignored = CALL "Divergences RSX"
    IF close CROSSES UNDER Average[20] THEN
       IF DivergenzaSHORT THEN
          SELLSHORT 1 CONTRACTS AT MARKET
       ENDIF
    ENDIF

    Roberto

    #51194 quote
    traderwin
    Participant
    Average

    ciao roberto, innanzitutto grazie tante.

    Il problema che provando il tuo codice, l’entrata il ts me la fa solo quando si verificano entrambi i parametri di ingresso long o short.

    Cio che chiedo io è questo: il prezzo brekka al rialzo una media e mi entri in posizione quando nelle precedneti N candele si è verificata una divergenza.

    Questo perchè se ad esempio su ungrafico in m5 la divergenza si è verificata alle ore 10:20 e il break della media è avvenuto alle ore 10:30 il ts non entra in posizione, perche’ tiene conto del verificarsi sulla stessa candela sia del brek che della divergenza.

    Saluti, Marco

    #51197 quote
    robertogozzi
    Moderator
    Master

    Ho capito, così dovrebbe andare bene (l’ho provato solo per la sintassi, non per la logica):

    DEFPARAM CumulateOrders = FALSE                           //Solo un'operazione per volta
    
    // inizializzazione variabili
    ONCE NumeroCandele      = 20                              //20 candele dopo le quali divergenza annullata
    ONCE DivergenzaIndex    = 0
    ONCE DivergenzaBULL     = 0
    ONCE DivergenzaBEAR     = 0
    
    // verificare se sono trascorse "n" candele prima di annullare il segnale di divergenza
    IF (BarIndex - DivergenzaIndex) >= NumeroCandele THEN    //Superato il numero di candele annullare il segnale
       DivergenzaBULL       = 0
       DivergenzaBEAR       = 0
    ENDIF
    
    // richiamare l'indicatore e settare le variabili di conseguenza
    DivergenzaLONG, DivergenzaSHORT, ignored = CALL "Divergences RSX"
    IF DivergenzaLONG THEN
       DivergenzaIndex      = BarIndex                       //salvare il numero della barra della divergenza
       DivergenzaBULL       = 1
       DivergenzaBEAR       = 0
    ENDIF
    IF DivergenzaSHORT THEN
       DivergenzaIndex      = BarIndex                       //salvare il numero della barra della divergenza
       DivergenzaBULL       = 0
       DivergenzaBEAR       = 1
    ENDIF
    
    // calcolare la media
    MiaMedia                = Average[20,0](close)           //sma 20
    
    //                  LONG
    IF close CROSSES OVER MiaMedia AND DivergenzaBULL THEN
       BUY 1 CONTRACTS AT MARKET
    ENDIF
    //                  SHORT
    IF close CROSSES UNDER MiaMedia AND DivergenzaBEAR THEN
       SELLSHORT 1 CONTRACTS AT MARKET
    ENDIF

    Ovviamente mancano le condizioni per uscire, il TP e lo SL e gli orari di trading. Queste cose le deciderai tu.

    Il numero di candele ed il numero di periodi della media mobile li cambierai te secondo la tua strategia.

    Per il valore da indicare come secondo parametro nella media mobile (indica che tipo di media vuoi), vedi il link https://www.prorealcode.com/documentation/average/.

    #51385 quote
    traderwin
    Participant
    Average

    Ciao Roberto grazie tante. Ho testato e funziona alla grande:)

    Volevo chiederti come impostare un trailing stop a codice in quanto impostando quello classico che è presente sulla piattaforma, il backtest non è reale.

    Io li vorrei dire, quando sono long o quando sono short, in apertura di posizione impostami uno stop se long 20 pip sotto e sali il mio stop a ogni due candele che in chiusura hanno realizzato un nuovo massimo.

    Tipo se io apro una posizione a 1000 alle 10:30. alle 10:45 si chiude la candela a quota 1040. alle undici se si aprira una candela che in chiusura  segnera’ il max della seconda e cioè chiudera’ a 1050 salimi il trailing stop di 20 x pip

    #51422 quote
    robertogozzi
    Moderator
    Master

    Qui puoi trovare il codice creato da Nicolas: https://www.prorealcode.com/blog/trading/complete-trailing-stop-code-function/.

    Li puoi vedere anche i dettagli ed il ragionamento che ci sta dietro, comunque le righe complete del codice, pronte per l’uso (puoi inserirle all’inizio della tua strategia, subito dopo l’inizializzazione delle variabili, ma va bene anche in fondo) sono quelle da 17 a 56 che riporto:

    //************************************************************************
    //trailing stop function
    trailingstart = 20  //trailing will start @trailinstart points profit
    trailingstep  = 5   //trailing step to move the "stoploss"
     
    //reset the stoploss value
    IF NOT ONMARKET THEN
     newSL=0
    ENDIF
     
    //manage long positions
    IF LONGONMARKET THEN
    //first move (breakeven)
     IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THEN
      newSL = tradeprice(1)+trailingstep*pipsize
     ENDIF
    //next moves
     IF newSL>0 AND close-newSL>=trailingstep*pipsize THEN
      newSL = newSL+trailingstep*pipsize
     ENDIF
    ENDIF
     
    //manage short positions
    IF SHORTONMARKET THEN
    //first move (breakeven)
     IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THEN
      newSL = tradeprice(1)-trailingstep*pipsize
     ENDIF
    //next moves
     IF newSL>0 AND newSL-close>=trailingstep*pipsize THEN
      newSL = newSL-trailingstep*pipsize
     ENDIF
    ENDIF
     
    //stop order to exit the positions
    IF newSL>0 THEN
     SELL AT newSL STOP
     EXITSHORT AT newSL STOP
    ENDIF
    //************************************************************************

    basta solo che modifichi i due valori 20 (dopo quanti pips vuoi fare partire il trailing stop) e 5 (di quanti pips deve essere l’incremento costante). Tieni presente che questo è codice parte integrante della strategia, quindi viene eseguito SOLO a chiusura della candela, per cui quando questa viene eseguita può darsi che il prezzo sia tornato indietro e quindi non scatta il trailing e magari poi ti va in stop loss, oppure inizia il trailing dopo molti più pips! Purtroppo finché non sarà disponibile la versione multitimeframe ci sarà questo handicap.

    Spero ti sia d’aiuto.

    #51428 quote
    traderwin
    Participant
    Average

    come sempre grazie tante Roberto 🙂

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

TS DIVERGENZA


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
traderwin @traderwin Participant
Summary

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

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