Sistema Scalping Trend following 1m

Viewing 15 posts - 1 through 15 (of 31 total)
  • Author
    Posts
  • #134894 quote
    cventurer
    Participant
    Average

    Ciao, volevo condividere questo sistema nato per “caso”, dopo averlo scritto e testato i risultati erano talmente pessimi che girando Long e Short sono diventati ottimi!

    Il sistema si basa su timeframe a 1 minuto, tende ad essere un pochino pericoloso perchè lo SL è molto alto, però il backtest è incoraggiante.

    Purtoppo è molto legato al trend, e non ho trovato un modo per capire in automatico il trend ed impostarlo automaticamente, servirebbe una media dei giorni precedenti, ma non ho capito come fare, aspetterò IG con l’aggiornamento alla v.11.

    La configurazione è semplice, nel sistema bisogna indicare l’asset sul quale si vuole lavorare (io ne ho configurati alcuni, tra cui uno generico) e la direzione. Nell’indicatore ci sono le configurazioni per il N di contratti, e lo SL, che vengono poi ripassati al sistema.

    Per ora i mercati sono al rialzo, ma ho provato mettendo -1 quindi Short su USD/ZAR che è al ribasso e sembrerebbe dare comunque buoni risultati. Purtoppo con IG a 1 minuto il periodo di backtest è molto breve.

     

    Mi piacerebbe migliorarlo se vi viene in mente qualcosa sarei ben felice di implementarlo.

    if Open>Close then
    Candela=-1
    else
    Candela=1
    endif
    
    MMEP=EndPointAverage[48](close)
    
    //ParDirezione=1
    //ParAsset=1
    
    //GENERIC=0
    //USRUSSELL=1
    //EURUSD=2
    //DAX=3
    //US500=4
    
    
    if ParAsset=0 then
    //GENERIC
    ParSL=100
    ValContratti=1
    endif
    
    if ParAsset=1 then
    //USRUSSELL
    ParSL=100
    ValContratti=0.5
    endif
    
    if ParAsset=2 then
    //EURUSD
    ParSL=100
    ValContratti=2
    endif
    
    if ParAsset=3 then
    //DAX
    ParSL=200
    ValContratti=0.5
    endif
    
    if ParAsset=4 then
    //US500
    ParSL=100
    ValContratti=1
    endif
    
    
    StatoPosizione=0
    ValDirezione=ParDirezione  //1=Long, -1=Short
    ValSL=ParSL*pipsize
    
    
    
    
    if Minute=0 or Minute=5 or Minute=10 or Minute=15 or Minute=20 or Minute=25 or Minute=30 or Minute=35 or Minute=40 or Minute=45 or Minute=50 or Minute=55 then
    
    
    If ValDirezione=1 then //Lomg
    l1=Close[1] < MMEP[1] and Candela[1]=-1
    l2=Close[1] > Close[intradaybarindex+540]
    l3=time>100000 and time <143000 or time>163000 and time <193000
    l4=Close > Close[120]
    
    if PositionLong=0 and PositionShort=0 and l1 and l2  and l3 and l4 then
    
    
    PrezzoApertura=close[1]
    PrezzoStopLoss=close[1]-ValSL
    
    PrezzoTakeProfit=highest[2](high)
    
    
    if PrezzoTakeProfit > PrezzoApertura then
    if DayOfWeek=5 and time>150000 then
    
    else
    PositionLong=1
    StatoPosizione=2
    endif
    endif
    
    
    endif
    
    if PositionLong[1]=1 and Close<PrezzoStopLoss or PositionLong[1]=1 and Close>PrezzoTakeProfit   then
    if Close>PrezzoApertura then
    DRAWARROWUP(barindex,StatoPosizione-0.3)Coloured(0,255,0)
    else
    DRAWARROWUP(barindex,StatoPosizione-0.3)Coloured(255,0,0)
    endif
    
    PositionLong=0
    StatoPosizione=1
    endif
    
    endif
    
    If ValDirezione=-1 then //Short
    s1=Close[1] < MMEP[1] and Candela[1]=1
    s2=Close[1] < Close[intradaybarindex+540]
    
    s3=time>100000 and time <143000 or time>163000 and time <193000
    s4=Close < Close[120]
    
    
    if PositionShort=0  and PositionLong=0 and s1 and s2  and s3 and s4 then
    
    
    PrezzoApertura=close[1]
    PrezzoStopLoss=close[1]+ValSL
    
    PrezzoTakeProfit=lowest[2](low)
    
    
    if PrezzoTakeProfit < PrezzoApertura then
    if DayOfWeek=5 and time>150000 then
    
    else
    PositionShort=1
    StatoPosizione=-2
    endif
    endif
    
    
    endif
    
    
    if PositionShort[1]=1 and Close>PrezzoStopLoss or PositionShort[1]=1 and Close<PrezzoTakeProfit   then
    if Close<PrezzoApertura then
    DRAWARROWDOWN(barindex,StatoPosizione+0.3)Coloured(0,255,0)
    else
    DRAWARROWDOWN(barindex,StatoPosizione+0.3)Coloured(255,0,0)
    endif
    
    PositionShort=0
    StatoPosizione=-1
    endif
    
    endif
    
    
    endif
    
    
    
    
    Return StatoPosizione COLOURED(255,0,0) as "StatoPosizione",ValContratti as "ValContratti"
    
    // Condizioni per entrare su posizioni long
    
    //GENERIC=0
    //USRUSSELL=1
    //EURUSD=2
    //DAX=3
    //US500=4
    StatoPosizione,ValContratti=call TrendScalping[1,3]  //[Direzione 1=LONG:-1=SHORT,Asset]
    
    
    IF NOT LongOnMarket AND StatoPosizione=2 THEN
    BUY ValContratti CONTRACTS AT MARKET
    ENDIF
    
    // Condizioni per uscire da posizioni long
    If LongOnMarket AND StatoPosizione=1 THEN
    SELL AT MARKET
    ENDIF
    
    // Condizioni per entrare su posizioni short
    IF NOT ShortOnMarket AND StatoPosizione=-2 THEN
    SELLSHORT ValContratti CONTRACTS AT MARKET
    ENDIF
    
    // Condizioni per uscire da posizioni short
    IF ShortOnMarket AND StatoPosizione=-1 THEN
    EXITSHORT AT MARKET
    ENDIF
    
    // Stop e target: Inserisci qui i tuoi stop di protezione e profit target
    
    robertogozzi thanked this post
    #134898 quote
    Francesco
    Participant
    Veteran

    Dovresti innanzitutto inserire la condizione

    defparam cumulateorders= false

    o perlomeno splittare i sistemi in una versione long e una short; solo allora si potranno valutare i risultati e considerare migliorie.

    #134899 quote
    cventurer
    Participant
    Average

    Grazie mille per il suggerimento,purtoppo testando il sistema con il mercato contrario i risultati sono terribili, quindi per ora andrebbe gestito a “mano”, nel senso se gli ultimi giorni sono al rialzo, farlo girare a rialzo, e viceversa. Se riuscissi ad avere una media mobile su timeframe più alti per capire il trend allora lo farei andare in automatico (basterebbe una piccola modifica)

    #134900 quote
    cventurer
    Participant
    Average

    Il sistema è già splittato , basta passare il valore 1 o -1

    #134901 quote
    Francesco
    Participant
    Veteran

    Il punto non è questo; non inserendo la condizione sopracitata o non dividendo il sistema in due sistemi, il backtest cumulerà le posizioni in apertura falsando i risultati (in quanto cosa non possibile in live).

    Per quanto riguarda la valutazione del trend puoi implementarla in decine di modi (doppia esponenziale/semplice ed esponenziale/ichimoku cloud/highs e lows).

    Sta a te scegliere e capire qual è la migliore 🙂

    #134902 quote
    cventurer
    Participant
    Average

    In allegato qualche immagine di backtest

    #134907 quote
    cventurer
    Participant
    Average

    Nel Indicatore ho già previsto il non accumulo di posizioni, controllando le posizioni aperte con le variabili PositionShort e PositionLong comunque per sicurezza lo inserisco

    #134908 quote
    cventurer
    Participant
    Average

    Il problema del trend è che mi servirebbe su timeframe superiori, almeno 4 ore, o giornaliero, ma non ho capito come fare con la 10.3, c’è un modo?

    #134909 quote
    Francesco
    Participant
    Veteran

    Il mio consiglio di splittare o regolare tramite il cumulateorders era per una questione di comodità.
    Il dover manualmente andare a cambiare i valori è tranquillamente evitabile tramite le modalità che ti ho sopracitato.

    cventurer thanked this post
    #134910 quote
    Francesco
    Participant
    Veteran

    Il problema del trend è che mi servirebbe su timeframe superiori, almeno 4 ore, o giornaliero, ma non ho capito come fare con la 10.3, c’è un modo?

    Segui il seguente esempio per capire, 4 ore e 1 minuto è modificabile a tuo piacimento

    timeframe (4 hours, updateonclose)
    //valutazione trend
    
    timeframe (1 minute)
    //condizioni di operatività
    #134911 quote
    cventurer
    Participant
    Average

    Questo funziona anche sulla 10.3? fantastico!!!

     

    A me lo segna come errore!!

    #134914 quote
    Francesco
    Participant
    Veteran

    Questo funziona anche sulla 10.3? fantastico!!!

    Si.

    Comunque ti consiglio di non basare i tuoi backtest solo su 10 giorni, sfrutta sempre il massimo che il timeframe ti permette altrimenti la loro valenza è alquanto scarsa.

    EDIT: non capisco perchè ti dia errore, se provi ad avviare il backtest che messaggio ti esce?

    #134915 quote
    cventurer
    Participant
    Average

    Il backtest purtoppo è al massimo 15000 non mi fa andare oltre, forse è un problema con IG, per il timeframe avevo letto che era una funzione disponibile sulla v11 e non sulla 10.3

    #134916 quote
    cventurer
    Participant
    Average

    Ok ho capito, sull’indicatore “giustamente” non si può utilizzare, ma sul sistema si, va bene dovrei riuscire a sistemare…grazie mille!!!

    #134917 quote
    Francesco
    Participant
    Veteran

    Se hai il premium è 200k, altrimenti 100k; controlla meglio.

    Si, con l’opzione timeframe mi riferivo alla programmazione del sistema proorder.

    cventurer thanked this post
Viewing 15 posts - 1 through 15 (of 31 total)
  • You must be logged in to reply to this topic.

Sistema Scalping Trend following 1m


Supporto ProOrder

New Reply
Author
author-avatar
cventurer @cventurer Participant
Summary

This topic contains 30 replies,
has 3 voices, and was last updated by RICOU
2 years, 2 months ago.

Topic Details
Forum: Supporto ProOrder
Language: Italian
Started: 06/06/2020
Status: Active
Attachments: 9 files
Logo Logo
Loading...