Trading system con le divergenze

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

    Apro questo nuovo thread per chiedere, gentilmente, se vi è la possibilità di poter fare un trading system basato sulle divergenze di determinati indicatori, tipo rsi o cci.

    #47906 quote
    maximus78
    Participant
    Senior

    Ciao, posso darti un codice che ho scritto per individuare le divergenze tra nuovi massimi/minimi di prezzo e massimi decrescenti/minimi crescenti dell’oscillatore.

    Ti faccio un esempio con RSI, ma può essere fatto con altri oscillatori come CCI, stocastico, Williams% ecc…

    Puoi partire da questo e modificarlo od integrarlo con altri indicatori come medie mobili, patterns candlestick, ecc….puoi utilizzarlo come indicatore di divergenze o come condizioni per gli screeners.

    In pratica imposto il canale di donchian sull’oscillatore in modo da tracciare il più alto massimo ed il più basso minimo di un determinato periodo. Lo stesso lo applico al prezzo.

    Quando il prezzo fa un nuovo massimo ma l’oscillatore fa un massimo minore, mi segnala una divergenza. Lo stesso quando si comporta al contrario con i minimi:

    maxprice=high>=highest[donchian](high)[1]
    minprice=low<=lowest[donchian](low)[1]

    maxosc=rsi[rsiperiod](close)<=highest[donchian](rsi[rsiperiod](close))[1] and rsi[rsiperiod](close)>=50
    minosc=rsi[rsiperiod](close)>=lowest[donchian](rsi[rsiperiod](close))[1] and rsi[rsiperiod](close)<=50

    In aggiunta puoi impostare i livelli di ipercomprato e ipervenduto dei massimi e minimi del canale di donchian applicato all’oscillatore.

    ipercom=highest[donchian](rsi[rsiperiod](close))[1]>=60

    ipervend=lowest[donchian](rsi[rsiperiod](close))[1]<=40

    in pratica, se si verifca maxprice e maxosc in ipercom, c’è una divergenza ribassista,

    al contrario se si verifica minprice e minosc in ipervend, si verifica una divergenza rialzista.

    Le variabili sono:

    donchian= n° di periodi che traccia i massimi/minimi del prezzo e dell’indicatore, per esempio 20

    rsiperiod= periodo del RSI, per esempio 14

    Fammi sapere se hai bisogno di delucidazioni.

    Massimo

    #47936 quote
    R05
    Participant
    Veteran

    Ok grande grazie Massimo tutto chiaro, gentilissimo. L’ho codificato così per fare una prova e vedere il funzionamento sul giornaliero senza nessun ulteriore filtro. Si può migliorare però il sistema c’è, qualcosa con le divergenze si può implementare. Grazie.

    maxprice=high>=highest[20](high)[1]
    minprice=low<=lowest[20](low)[1]
    
    maxosc=rsi[14](close)<=highest[20](rsi[14](close))[1] and rsi[14](close)>=50
    minosc=rsi[14](close)>=lowest[20](rsi[14](close))[1] and rsi[14](close)<=50
    
    ipercom=highest[20](rsi[14](close))[1]>=60
    
    ipervend=lowest[20](rsi[14](close))[1]<=40
    
    if maxprice and maxosc and ipercom then
    sellshort 1 contract at market
    endif
    
    if minprice and minosc and ipervend then
    buy 1 contract at market
    endif
    
    
    set stop ploss 40
    set target profit 50
    
    #47945 quote
    maximus78
    Participant
    Senior

    Di niente figurati, ci sto lavorando anche io….ah bene, hai già fatto il backtest col DAX!

    come base è ok, il problema che ho riscontrato nel forex intraday è che si presentano tante false divergenze prima che il prezzo effettivamente inverta, stavo cercando di creare un codice contatore di divergenze in modo che possa entrare in posizione dopo 3 o + divergenze per esempio.

    Teniamoci in contatto, appena riusciamo ad implementarlo ci aggiorniamo!

    Massimo

    #47953 quote
    R05
    Participant
    Veteran

    Certo. Va benissimo.

    #48058 quote
    maximus78
    Participant
    Senior

    Ciao,

    se ti può servire, ho scritto il codice per individuare più divergenze in un dato periodo di tempo:

    a=summation[n](((rsi[rsiperiod](close)) < highest[donchian](rsi[rsiperiod](close)[1]))and (high > highest[donchian](high)[1])) >= ndiver
    b=highest[donchian](rsi[rsiperiod](close)[1])>60

    c=summation[n](((rsi[rsiperiod](close)) > lowest[donchian](rsi[rsiperiod](close)[1]))and (low < lowest[donchian](low)[1])) >= ndiver
    d=lowest[donchian](rsi[rsiperiod](close)[1])<40

    variabili:

    n=periodo preso in considerazione, es: 10 ultime barre

    rsiperiod=14 (periodo rsi)

    donchian=20 (nuovi massimi o minimi)

    ndiver= n° di divergenze minime (es: 3)

    in pratica, se ci sono le condizioni a e b, significa che in un dato periodo di tempo (es: ultime 10 barre) ci sono state almeno 3 divergenze ribassiste, con nuovi massimi di prezzo a 20 periodi (donchian) e massimi decrescenti dell’RSI 14.

    Se c e d, al contrario significa che ci sono state almeno 3 divergenze rialziste, con nuovi minimi di prezzo a 20 periodi e minimi crescenti dell’RSI 14.

    Max

    #48064 quote
    robertogozzi
    Moderator
    Master

    Per rendere il codice più comprensibile è opportuno usare l’apposito pulsante “Inser PRT code” identificato con “<>” nella barra grigia.

    #48072 quote
    R05
    Participant
    Veteran

    Ciao Max, riguardo il sistema che ho riportato ieri ho aggiunto le bande di Bollinger e pur facendo meno operazioni migliora la performance. Questo gira sul giornaliero. Ho aumentato il target profit in 120: qui però sia sul target che sullo stop dipende anche dalla massima perdita che uno è disposto a perdere e anche dal massimo drawdown. Considera che quando prende lo stop in alcuni casi va prima in utile ma non raggiungendo il target, tornando indietro prende lo stop, mentre in un altro caso qualche punto in più di stop loss e non avrebbe preso la perdita.

    Credo, che sul giornaliero, l’unica cosa che si possa fare è il trailing stop: nel senso se sta guadagnando ad esempio 40 punti di mettere lo stop a pareggio (così se va indietro non prende lo stop) e poi nel caso lasciare il target, ma sto verificando; perchè altrimenti mettere ulteriori indicatori o filtri potrebbe ridurre ancora di più le operazioni. Poi non saprei.

    A proposito, dalle varie combinazioni in backtest, è uscito che rsi a 13 periodi e donchian a 14 è più performante.

    maxprice=high>=highest[14](high)[1]
    minprice=low<=lowest[14](low)[1]
    
    maxosc=rsi[13](close)<=highest[14](rsi[13](close))[1] and rsi[13](close)>=50
    minosc=rsi[13](close)>=lowest[14](rsi[13](close))[1] and rsi[13](close)<=50
    
    ipercom=highest[14](rsi[13](close))[1]>=60
    
    ipervend=lowest[14](rsi[13](close))[1]<=40
    
    // Condizioni per entrare su posizioni long
    indicator2 = BollingerDown[20](close)
    c2 = (DLow(0) < indicator2)
    
    if minprice and minosc and ipervend and c2 then
    buy 1 contract at market
    endif
    
    // Condizioni per entrare su posizioni short
    indicator1 = BollingerUp[20](close)
    c1 = (DHigh(0) > indicator1)
    
    if maxprice and maxosc and ipercom and c1  then
    sellshort 1 contract at market
    endif
    
    set stop ploss 40
    set target profit 120
    
    #48073 quote
    R05
    Participant
    Veteran

    Ciao Max riguardo il tuo ultimo codice è veramente molto interessante, grazie del tuo contributo. E’ un metodo molto utile per l’intraday. Ho provato a codificare il seguente codice sul time frame orario ed è molto interessante. In questo caso è più performante senza bollinger.

    A proposito i backtest li faccio sempre sul Dax e da gennaio di quest’anno (anche per il precedente).

    Con calma farò ulteriori prove per vedere anche altri time frame.

    Grazie.

    defparam cumulateorders = false
    
    a=summation[10](((rsi[14](close)) < highest[20](rsi[14](close)[1]))and (high > highest[20](high)[1])) >= 3
    b=highest[20](rsi[14](close)[1])>60
    
    c=summation[10](((rsi[14](close)) > lowest[20](rsi[14](close)[1]))and (low < lowest[20](low)[1])) >= 3
    d=lowest[20](rsi[14](close)[1])<40
    
    maxprice=high>=highest[14](high)[1]
    minprice=low<=lowest[14](low)[1]
    
    maxosc=rsi[13](close)<=highest[14](rsi[13](close))[1] and rsi[13](close)>=50
    minosc=rsi[13](close)>=lowest[14](rsi[13](close))[1] and rsi[13](close)<=50
    
    ipercom=highest[14](rsi[13](close))[1]>=60
    
    ipervend=lowest[14](rsi[13](close))[1]<=40
    
    // Condizioni per entrare su posizioni long
    
    if minprice and minosc and ipervend and c and d then
    buy 1 contract at market
    endif
    
    // Condizioni per entrare su posizioni short
    
    if maxprice and maxosc and ipercom and a and b  then
    sellshort 1 contract at market
    endif
    
    set stop ploss 40
    set target profit 120
    
    #48221 quote
    maximus78
    Participant
    Senior

    Si infatti, su questo tipo di sistemi “potenzialmente” reversal la differenza la fa il money management e gli ordini stop, sopratutto il trailing profit.

    Ottima idea quella di integrare anche le bande di bollinger!

    Potresti provare ad utilizzare il codice trailing profit di Nicolas che sembra essere più funzionale di quello di default di prorealtime, dagli un’occhiata

    https://www.prorealcode.com/blog/trading/complete-trailing-stop-code-function/

    Scriviamoci in caso di novità!

    P.S: Per Roberto: hai perfettamente ragione, utilizzerò l’opzione insert code d’ora in avanti, non l’avevo vista!

    Massimo

    #48243 quote
    R05
    Participant
    Veteran

    Certo, sto facendo delle prove, appena ho qualcosa la condivido. Voglio vedere come poter sfruttare qualcosa nell’intraday.

    #49045 quote
    R05
    Participant
    Veteran

    Ciao Massimo e salve a tutti, dopo un pò di prove torno a scrivere in questo thread in quanto, nonostante molti tentativi, non riesco a trovare, o perlomeno ancora per il momento, qualcosa nell’intraday con le divergenze che dia buoni risultati.

    In compenso ho trovato questo link sui pattern di Unger che mi sembra molto interessante, da applicare anche al forex con la sola eccezione di non usare la domenica come range di riferimento per la candela successiva. Assolutamente da provare.

    http://www.traderlink.it/opinione-sui-mercati/prima-inizierai-ad-applicare-questo-pattern-meglio-sara-per-te_1706840PHC98D6R

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

Trading system con le divergenze


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
R05 @r05 Participant
Summary

This topic contains 11 replies,
has 3 voices, and was last updated by R05
8 years, 4 months ago.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 09/28/2017
Status: Active
Attachments: 2 files
Logo Logo
Loading...