R05Participant
Veteran
Gent.mi ho trovato il seguente trading system. Ho provato a fare il backtest sia in demo che in reale e ho avuto due risultati completamente differenti. Vi allego le schermate.
Mi aiutate a capire?
DEFPARAM FlatAfter = 173000
defparam cumulateorders= false
defparam preloadbars = 30000
OraInizio = 090000
oralimite =173000
tagliaposizione=1
OraInizio1 = 090000
d=2// vab= incrocio di B9 con A4
s=3
s2=6
s4=14
q=1
q1=4
q2=8
mysupport=40
mytarget=150
if time=orainizio then
p= close
endif
if close>p+d then
k=1
elsif close<p-d then
k=-1
else
k=0
endif
if longonmarket then
massimo=highest[barindex-tradeindex](close)
else
massimo=0
endif
if massimo>positionprice+s*pointsize and massimo<positionprice+s2*pointsize then
i=1
elsif massimo>positionprice+s2*pointsize and massimo<positionprice+s4*pointsize then
i=2
elsif massimo>positionprice+s4*pointsize then
i=3
else
i=0
endif
if shortonmarket then
minimo=lowest[barindex-tradeindex](close)
else
minimo=0
endif
if minimo<positionprice-s*pointsize and minimo>positionprice-s2*pointsize then
i1=1
elsif minimo<positionprice-s2*pointsize and minimo>positionprice-s4*pointsize then
i1=2
elsif minimo<positionprice-s4*pointsize then
i1=3
else
i1=0
endif
if time>orainizio1 and time<oralimite and k=-1 and not onmarket then
buy tagliaposizione contract at p stop
endif
if longonmarket and i=1 then
sell at positionprice+q stop
endif
if longonmarket and i=2 then
sell at positionprice+q1 stop
endif
if longonmarket and i=3 then
sell at positionprice+q2 stop
endif
if time>orainizio1 and time<oralimite and k=1 and not onmarket then
sellshort tagliaposizione contract at p stop
endif
if shortonmarket and i1=3 then
exitshort at positionprice-q2 stop
endif
if shortonmarket and i1=2 then
exitshort at positionprice-q1 stop
endif
if shortonmarket and i1=1 then
exitshort at positionprice-q stop
endif
set target profit mytarget
set stop loss mysupport
Anch’io ottengo dati errati, non so se sul demo o sul reale (spero sul demo!).
Ho anche provato a cambiare TF e strumento, ma sono sempre risultati diversi.
Ho notato che le differenze di operazioni (circa il doppio sul Demo) sono quasi tutte tra quelle in Stop Loss di pochi euro.
Non so spiegarmelo, la mia ipotesi è che vi siano ancora dei problemi nel supporto MTF (Multi Time Frame), in quanto sul conto Demo è attivo da vari mesi ed è tutt’ora in fase di beta test, mentre sul Reale non è attivo. Magari è ancora in beta test proprio perché ha ancora qualche problema di fuzionamento.
Se non trovi spiegazioni puoi aprire un ticket d’assistenza premento CTRL+M dalla piattaforma.
R05Participant
Veteran
Ok grazie. Comunque ho montato il sistema sul conto demo: oggi lo monitoro direttamente quando apre le posizioni così vedo come si comporta. Perchè credo, o almeno spero, che quando apre le posizioni direttamente non dovrebbero esserci differenze tra demo e reale. Spero che le differenze ci siano solo sul backtest.
R05Participant
Veteran
Gent.mo Roberto dato che è un sistema che ho preso direttamente e dato che non riesco a capire il setup di entrata, siccome lo vorrei, a questo punto anche provare a mano a vedere se funziona, mi potresti aiutare a capire appunto il setup di entrata?
Ho capito che va long se k=-1 e viceversa per lo short. Ma close<p-d dove p è lo stesso il close mi confonde un pò le idee.
if time=orainizio then
p= close
endif
if close>p+d then
k=1
elsif close<p-d then
k=-1
else
k=0
endif
È probabilmente una buona strategia, ma scritta malissimo.
Usa nomi cortissimi, tipo P, D, ecc… che sono difficili da riconoscere. È un modo di scrivere i programmi usato fino a circa metà anni ‘90, quando la memoria disponibile era poca e si tendeva a risparmiare spazio usando nomi corti. Oggi non c’è ragione di farlo.
Ad ogni modo, P è il prezzo delle ore 9 e D è un numero di pips, quindi ad ogni candela successiva alle 9 confronta il prezzo corrente con quelli delle 9, +- 2 pips, settando la variabile K di conseguenza.
R05Participant
Veteran
Ok grazie Roberto, gentilissimo. Come prima accennavo ho fatto partire la strategia in demo e purtroppo non coincide nulla. Chiarisco meglio.
Alle 9:15 mi ha aperto una posizione short appena il prezzo ha rotto a ribasso il prezzo delle 9, come mi dicevi. Solo che tutt’ora è ancora in essere la posizione (allegato 1).
Facendo il backtest in demo mi risultano 4 posizioni aperte (allegato demo).
Facendo invece il backtest in reale mi risultano 2 posizioni aperte (allegato reale).
A questo punto non so cosa pensare.
Generalmente è il reale che offre affidabilità. Il demo, anche per PRT, viene utilizzato per fare prove di nuove versioni, adesso oltre al supporto MTF stanno testando anche la nuova versione 11, quindi può darsi che ci siano problemi. Non so dirti di più.
R05Participant
Veteran
Va bene grazie, gentilissimo. Nel caso farò altre prove e se avrò novità lo farò sapere.
R05Participant
Veteran
Scusa Roberto mi diresti, gentilmente, come si interpreta questo codice?
if longonmarket then
massimo=highest[barindex-tradeindex](close)
else
massimo=0
Perchè sto cercando di capire il modo con cui la strategia esce dalla posizione ma non capisco quale massimo (sempre se è il massimo) debbo prendere in considerazione.
Vorrei fare qualche backtest in manuale.
Mentre positionprice è il prezzo a cui è stata aperta la posizione, giusto? Per il resto mi sembra di aver capito come leggerlo. Devo farmi un pò di calcoli.
if massimo>positionprice+s*pointsize and massimo<positionprice+s2*pointsize then
i=1
elsif massimo>positionprice+s2*pointsize and massimo<positionprice+s4*pointsize then
i=2
elsif massimo>positionprice+s4*pointsize then
i=3
else
i=0
endif
R05Participant
Veteran
Gent.mo Roberto un’altra cosa. Ho messo in reale la strategia, mi ha aperto la posizione ma me l’ha chiusa subito alla barra successiva perchè ha riscontrato l’errore che ti allego.
R05Participant
Veteran
Mi sono accorto di non aver allegato l’errore. Mi scuso.
R05Participant
Veteran
Comunque credo di aver risolto. Ho navigato un pò per vedere quale fosse la soluzione al problema offset e ho trovato qualcosa. Ho fatto il seguente cambiamento alla riga 34 e 50 del codice messo al primo post.
massimo=highest[barindex-(tradeindex+0.1)](close)
minimo=lowest[barindex-(tradeindex-0.1)](close)
L’ho montato sul conto demo e come prima operazione ha fatto ciò che doveva fare. Allego la schermata con l’operazione.
Operazione aperta al prezzo di apertura e chiusa con il secondo metodo che allego sotto.
if longonmarket and i=2 then
sell at positionprice+q1 stop
endif
Infatti appena andato nella direzione giusta e fatto un nuovo massimo, ha chiuso l’operazione quando è risceso al prezzo di apertura + q1 (che equivale a 4 punti).
Continuerò però a testare direttamente sul conto demo, senza fare nessun backtest, in modo da verificare effettivamente il funzionamento.