Trading system dal passato ad oggi

Keep Simple

Nuovo Utente
Registrato
21/5/12
Messaggi
116
Punti reazioni
3
Scrivo per vedere se ci fosse l'interesse a sviluppare un'idea puramente didattica di fine estate.
Vorrei capire se TS semplici, conosciuti da tutti , con codice aperto e nella bibbliografia definiti robusti, possano resistere alla prova del passare del tempo.
Per fare questo vorrei tradurre in visual trader 4 TS pubblicati nel libro di John Hill "Trading la guida definitiva" che riporta i codici e i backtest (ovviamente profittevoli) dal 1983 al 1999 applicati a diversi mercati e farli girare nel periodi diciamo dal 1999 ad oggi, valutandone insieme i risultati.
Preciso che lo scopo è puramente didattico, non c'è pretesa di realizzare nulla di applicabile , ma solo di vedere cosa sarebbe successo utilizzandoli in paper.
Se ci fosse l'interesse di aiutarmi a tradurre i TS (chiedo sopratutto a Damien e agli esperti di Visual trader) potremmo poi commentare insieme i risultati... chissa', altrimenti scrivo all'assistenza per vedere se mi aiutano loro.
i TS sono:
- Donchian channel
- Incrocio di medie mobile
- Opening range breakout
- S&P Day Trade

La risposta che spero di trovare nei numeri è che applicando ad una molteplicità di mercati sistemi robusti, mai ottimizzati e semplici come questi si possono ancora ottenere risultati sui mercati di oggi.
Vedrem...
 
1) Donchian channel: a cui manca la parte sulle uscite in trailing stop che descrivo dopo il codice per il resto il classico, entro al superamento del max o min a 30gg. fisso lo stop a meta' tra il max e il min


Var: mioh,miol,buypoint,sellpoint,mioseg, miamedia;

mioh=hhv(c,30); // massimo a 30gg.
miol=llv(c,30); // minimo a 30gg.
mioseg=mioh-((mioh-miol)/2) ; //linea mediana tra massimo e minimo
buypoint=addtick(mioh,1); // punto d'acquisto
sellpoint=addtick(miol,-1); // punto di vendita

if positiondir =0 then
enterlong(nextbar,buypoint,stop); // entrata lunga
endif;
if positiondir=1 and c<mioseg then // uscita lunga
exitlong(bar,atclose);
endif;

if positiondir=0 then // entrata corta
entershort(nextbar,sellpoint,stop);
endif;
if positiondir=-1 and c> mioseg then //uscita corta
exitshort(bar,atclose);
endif;

PlotChart(mioh,0,blue,solid,2);
PlotChart(miol,0,red,solid,2);
PlotChart(mioseg,0,green,solid,2);
plotchart(mioh,0,black,solid,2);
plotchart(miol,0,black,solid,2);
plotchart(mioh-(mioh-miol)/2,0,red,solid,2);

- attivare il trailing stop a livello del minimo più basso dei 30gg. per gli
acquisti e viceversa
- ogni 5 gg. di trading sottrarre due giorni al numero di giornate considerate
per la stima del propio trailing stop
cioè ogni 5 gg veranno sottratti 2 ai 30 considerati per la stima del massimo
più alto o minimo più basso.. ad esempio se è stata aperta una posizione da 5
gg.
il trailing stop non sarà più il minimo più basso dei 30 gg. ma deglli ultimi
28.
Perdona eventuali errori di programmazione o concetuali es. uscire a chiusura di barra ma è solo per attenersi al codice originale.
Keep Simple è collegato Vota l'utente: Keep Simple Segnala messaggio Modifica/Elimina messaggio
 
1) Donchian channel: a cui manca la parte sulle uscite in trailing stop che descrivo dopo il codice per il resto il classico, entro al superamento del max o min a 30gg. fisso lo stop a meta' tra il max e il min


Var: mioh,miol,buypoint,sellpoint,mioseg, miamedia;

mioh=hhv(c,30); // massimo a 30gg.
miol=llv(c,30); // minimo a 30gg.
mioseg=mioh-((mioh-miol)/2) ; //linea mediana tra massimo e minimo
buypoint=addtick(mioh,1); // punto d'acquisto
sellpoint=addtick(miol,-1); // punto di vendita

if positiondir =0 then
enterlong(nextbar,buypoint,stop); // entrata lunga
endif;
if positiondir=1 and c<mioseg then // uscita lunga
exitlong(bar,atclose);
endif;

if positiondir=0 then // entrata corta
entershort(nextbar,sellpoint,stop);
endif;
if positiondir=-1 and c> mioseg then //uscita corta
exitshort(bar,atclose);
endif;

PlotChart(mioh,0,blue,solid,2);
PlotChart(miol,0,red,solid,2);
PlotChart(mioseg,0,green,solid,2);
plotchart(mioh,0,black,solid,2);
plotchart(miol,0,black,solid,2);
plotchart(mioh-(mioh-miol)/2,0,red,solid,2);

- attivare il trailing stop a livello del minimo più basso dei 30gg. per gli
acquisti e viceversa
- ogni 5 gg. di trading sottrarre due giorni al numero di giornate considerate
per la stima del propio trailing stop
cioè ogni 5 gg veranno sottratti 2 ai 30 considerati per la stima del massimo
più alto o minimo più basso.. ad esempio se è stata aperta una posizione da 5
gg.
il trailing stop non sarà più il minimo più basso dei 30 gg. ma deglli ultimi
28.
Perdona eventuali errori di programmazione o concetuali es. uscire a chiusura di barra ma è solo per attenersi al codice originale.
Keep Simple è collegato Vota l'utente: Keep Simple Segnala messaggio Modifica/Elimina messaggio

Vediamo se ho capito, ripeto a parole mie ...
In sintesi se il trade è aperto da 5 giorni o +, il trailing lo stimi in base a minimo/massimo 28 giorni invece che i 30 di base?
 
Esatto dal 5 al 10 giorno di trade aperto il minimo diventa quello a 28 dall'undicesimo giorno si sposta al minimo a 26... dal 16 gg. al min a 24 e cosi' via.. praticamente al pasare di una unita' temporale di 5gg. alzo il trailing di 2... dimenticavo una cosa importante, fino ad un minmo di 6, cioe' se non ho sbagliato i calcoli dopo 60 giorni di trade aperto il minimo sui cui mettere il trailing è sul minimo dei 6 gg. precedenti e li si ferma insieme allo stop loss che invece è rimasto fisso alla meta' del canale.
Praticamente un trailing stop temporale basato sui minimi..
 
Se ho interpretato bene il discorso, dovrebbe essere così.
Funziona con tutti i tf.
Lo posto eh proviamo :)

Lo screen di un report su fiat tf daily.

Codice:
Var:mioh,miol,buypoint,sellpoint,mioseg, miamedia;
Var:contag,contab,nrbarre6,nrbarre11,nrbarre16,nrbarre21,nrbarre26,nrbarre31,nrbarre36,nrbarre41,nrbarre46,nrbarre51,nrbarre56,nrbarre60,gio;
Var:zona2,zona3,zona4,zona5;


//mioh=hhv(c,30); // massimo a 30gg.
//miol=llv(c,30); // minimo a 30gg.
//mioseg=mioh-((mioh-miol)/2) ; //linea mediana tra massimo e minimo
//buypoint=addtick(mioh,1); // punto d'acquisto
//sellpoint=addtick(miol,-1); // punto di vendita

if positiondir=0 then contag=0;contab=0;endif;
if isfirstbarday then contag=contag+1;endif;
contab=contab+1;

if isfirstbarday and contag=6 then nrbarre6=contab;endif;
if isfirstbarday and contag=11 then nrbarre11=contab;endif;
if isfirstbarday and contag=16 then nrbarre16=contab;endif;
if isfirstbarday and contag=21 then nrbarre21=contab;endif;
if isfirstbarday and contag=26 then nrbarre26=contab;endif;
if isfirstbarday and contag=31 then nrbarre31=contab;endif;
if isfirstbarday and contag=36 then nrbarre36=contab;endif;
if isfirstbarday and contag=41 then nrbarre41=contab;endif;
if isfirstbarday and contag=46 then nrbarre46=contab;endif;
if isfirstbarday and contag=51 then nrbarre51=contab;endif;
if isfirstbarday and contag=56 then nrbarre56=contab;endif;
if isfirstbarday and contag=60 then nrbarre60=contab;endif;

if barsince(positiondir=1)>0 then gio=30;endif;if barsince(positiondir=-1)>=0 then gio=30;endif;
if barsince(positiondir=1)>=nrbarre6 and nrbarre6<>0 then gio=28;endif;if barsince(positiondir=-1)>=nrbarre6 and nrbarre6<>0 then gio=28;endif;
if barsince(positiondir=1)>=nrbarre11 and nrbarre11<>0 then gio=26;endif;if barsince(positiondir=-1)>=nrbarre11 and nrbarre11<>0 then gio=26;endif;
if barsince(positiondir=1)>=nrbarre16 and nrbarre16<>0 then gio=24;endif;if barsince(positiondir=-1)>=nrbarre16 and nrbarre16<>0 then gio=24;endif;
if barsince(positiondir=1)>=nrbarre21 and nrbarre21<>0 then gio=22;endif;if barsince(positiondir=-1)>=nrbarre21 and nrbarre21<>0 then gio=22;endif;
if barsince(positiondir=1)>=nrbarre26 and nrbarre26<>0 then gio=20;endif;if barsince(positiondir=-1)>=nrbarre26 and nrbarre26<>0 then gio=20;endif;
if barsince(positiondir=1)>=nrbarre31 and nrbarre31<>0 then gio=18;endif;if barsince(positiondir=-1)>=nrbarre31 and nrbarre31<>0 then gio=18;endif;
if barsince(positiondir=1)>=nrbarre36 and nrbarre36<>0 then gio=16;endif;if barsince(positiondir=-1)>=nrbarre36 and nrbarre36<>0 then gio=16;endif;
if barsince(positiondir=1)>=nrbarre41 and nrbarre41<>0 then gio=14;endif;if barsince(positiondir=-1)>=nrbarre41 and nrbarre41<>0 then gio=14;endif;
if barsince(positiondir=1)>=nrbarre46 and nrbarre46<>0 then gio=12;endif;if barsince(positiondir=-1)>=nrbarre46 and nrbarre46<>0 then gio=12;endif;
if barsince(positiondir=1)>=nrbarre51 and nrbarre51<>0 then gio=10;endif;if barsince(positiondir=-1)>=nrbarre51 and nrbarre51<>0 then gio=10;endif;
if barsince(positiondir=1)>=nrbarre56 and nrbarre56<>0 then gio=8;endif;if barsince(positiondir=-1)>=nrbarre56 and nrbarre56<>0 then gio=8;endif;
if barsince(positiondir=1)>=nrbarre60 and nrbarre60<>0 then gio=6;endif;if barsince(positiondir=-1)>=nrbarre60 and nrbarre60<>0 then gio=6;endif;

if isfirstbarday then mioh=ref(hhv(h,gio),1);miol=ref(llv(l,gio),1);endif;
buypoint=addtick(mioh,1); // punto d'acquisto
sellpoint=addtick(miol,-1); // punto di vendita
mioseg=mioh-((mioh-miol)/2) ; //linea mediana tra massimo e minimo

if positiondir=1 and crossunder(c,mioh) then exitlong (nextbar,atopen,0,0,"TRL");endif;
if positiondir=-1 and crossover(c,miol) then exitshort (nextbar,atopen,0,0,"TRS");endif;

if positiondir =0 then
   enterlong(nextbar,buypoint,stop); // entrata lunga
endif;
if positiondir=1 and c<mioseg then // uscita lunga
   exitlong(bar,atclose);
endif;

if positiondir=0 then                   // entrata corta
   entershort(nextbar,sellpoint,stop);
endif;
if positiondir=-1 and c> mioseg then //uscita corta
   exitshort(bar,atclose);
endif;

zona2 = newvp(100);
zona3 = newvp(100);
zona4 = newvp(100);
zona5 = newvp(100);


PlotChart(mioh,0,blue,solid,2);
PlotChart(miol,0,red,solid,2);
PlotChart(mioseg,0,green,solid,2);

plotchart(contag,zona2,black,solid,1);
plotchart(contab,zona3,black,solid,1);
plotchart(gio,zona4,black,solid,1);
 

Allegati

  • donchian_fiat.jpg
    donchian_fiat.jpg
    170,7 KB · Visite: 137
Grazie,
ci studio un po' ma dal numero di operazioni ho sbagliato a darti qualche informazione, deve fare pochissine operazioni infatti entra sulla violazione del max e min e poi sia lo stop che il trailing sono molto larghi.
 
Grazie,
ci studio un po' ma dal numero di operazioni ho sbagliato a darti qualche informazione, deve fare pochissine operazioni infatti entra sulla violazione del max e min e poi sia lo stop che il trailing sono molto larghi.

Può darsi che le informazioni siano giuste, ma che io le abbia mal applicate ... fammi sapere.
 
Grazie,
prendiamo il penultimo segnale circolettato (fiat giornaliero) che ti allego non capisco perchè entra long... non c'e' il superamento del max a 30gg. una volta in posizione chiude dopo poche giornate in trail ma il trail (essendo passati meno di 5 giorni di posizione aperta) dovrebbe essere il minimo a 30 gg quindi molto piu' in basso
Non voglio sottrarti altro tempo per te prezioso forse ti ho incasinato le informazioni.
 

Allegati

  • fiat docnchian.JPG
    fiat docnchian.JPG
    80 KB · Visite: 1.314
Grazie,
prendiamo il penultimo segnale circolettato (fiat giornaliero) che ti allego non capisco perchè entra long... non c'e' il superamento del max a 30gg. una volta in posizione chiude dopo poche giornate in trail ma il trail (essendo passati meno di 5 giorni di posizione aperta) dovrebbe essere il minimo a 30 gg quindi molto piu' in basso
Non voglio sottrarti altro tempo per te prezioso forse ti ho incasinato le informazioni.

Non si lasciano le cose a meta', lo sistemiamo, il più e' fatto.
 
Grazie se vuoi ho trovato il codice originale scritto credo con tradestation se serve lo copio.
 
Fiat 1 anno e mezzo, poche operazioni, ora long da 18 giorni.
Verifica. Ciao.

Codice:
Var:mioh,miol,buypoint,sellpoint,mioseg, miamedia;
Var:contag,contab,nrbarre6,nrbarre11,nrbarre16,nrbarre21,nrbarre26,nrbarre31,nrbarre36,nrbarre41,nrbarre46,nrbarre51,nrbarre56,nrbarre60,gio;
Var:zona2,zona3,zona4,zona5;
Var:test;


//mioh=hhv(c,30); // massimo a 30gg.
//miol=llv(c,30); // minimo a 30gg.
//mioseg=mioh-((mioh-miol)/2) ; //linea mediana tra massimo e minimo
//buypoint=addtick(mioh,1); // punto d'acquisto
//sellpoint=addtick(miol,-1); // punto di vendita

if positiondir=0 then contag=0;contab=0;endif;
if isfirstbarday then contag=contag+1;endif;
contab=contab+1;

if isfirstbarday and contag=6 then nrbarre6=contab;endif;
if isfirstbarday and contag=11 then nrbarre11=contab;endif;
if isfirstbarday and contag=16 then nrbarre16=contab;endif;
if isfirstbarday and contag=21 then nrbarre21=contab;endif;
if isfirstbarday and contag=26 then nrbarre26=contab;endif;
if isfirstbarday and contag=31 then nrbarre31=contab;endif;
if isfirstbarday and contag=36 then nrbarre36=contab;endif;
if isfirstbarday and contag=41 then nrbarre41=contab;endif;
if isfirstbarday and contag=46 then nrbarre46=contab;endif;
if isfirstbarday and contag=51 then nrbarre51=contab;endif;
if isfirstbarday and contag=56 then nrbarre56=contab;endif;
if isfirstbarday and contag=60 then nrbarre60=contab;endif;

if barsince(positiondir=1)>0 then gio=30;endif;if barsince(positiondir=-1)>=0 then gio=30;endif;
if barsince(positiondir=1)>=nrbarre6 and nrbarre6<>0 then gio=28;endif;if barsince(positiondir=-1)>=nrbarre6 and nrbarre6<>0 then gio=28;endif;
if barsince(positiondir=1)>=nrbarre11 and nrbarre11<>0 then gio=26;endif;if barsince(positiondir=-1)>=nrbarre11 and nrbarre11<>0 then gio=26;endif;
if barsince(positiondir=1)>=nrbarre16 and nrbarre16<>0 then gio=24;endif;if barsince(positiondir=-1)>=nrbarre16 and nrbarre16<>0 then gio=24;endif;
if barsince(positiondir=1)>=nrbarre21 and nrbarre21<>0 then gio=22;endif;if barsince(positiondir=-1)>=nrbarre21 and nrbarre21<>0 then gio=22;endif;
if barsince(positiondir=1)>=nrbarre26 and nrbarre26<>0 then gio=20;endif;if barsince(positiondir=-1)>=nrbarre26 and nrbarre26<>0 then gio=20;endif;
if barsince(positiondir=1)>=nrbarre31 and nrbarre31<>0 then gio=18;endif;if barsince(positiondir=-1)>=nrbarre31 and nrbarre31<>0 then gio=18;endif;
if barsince(positiondir=1)>=nrbarre36 and nrbarre36<>0 then gio=16;endif;if barsince(positiondir=-1)>=nrbarre36 and nrbarre36<>0 then gio=16;endif;
if barsince(positiondir=1)>=nrbarre41 and nrbarre41<>0 then gio=14;endif;if barsince(positiondir=-1)>=nrbarre41 and nrbarre41<>0 then gio=14;endif;
if barsince(positiondir=1)>=nrbarre46 and nrbarre46<>0 then gio=12;endif;if barsince(positiondir=-1)>=nrbarre46 and nrbarre46<>0 then gio=12;endif;
if barsince(positiondir=1)>=nrbarre51 and nrbarre51<>0 then gio=10;endif;if barsince(positiondir=-1)>=nrbarre51 and nrbarre51<>0 then gio=10;endif;
if barsince(positiondir=1)>=nrbarre56 and nrbarre56<>0 then gio=8;endif;if barsince(positiondir=-1)>=nrbarre56 and nrbarre56<>0 then gio=8;endif;
if barsince(positiondir=1)>=nrbarre60 and nrbarre60<>0 then gio=6;endif;if barsince(positiondir=-1)>=nrbarre60 and nrbarre60<>0 then gio=6;endif;

if isfirstbarday then mioh=ref(hhv(h,gio),1);miol=ref(llv(l,gio),1);endif;
//buypoint=addtick(mioh,1); // punto d'acquisto
//sellpoint=addtick(miol,-1); // punto di vendita
mioseg=mioh-((mioh-miol)/2) ; //linea mediana tra massimo e minimo

if positiondir=1 and  {test=1} crossunder(c,miol) then exitlong (nextbar,atopen,0,0,"TRL");endif;
if positiondir=-1 and  {test=-1} crossover(c,mioh) then exitshort (nextbar,atopen,0,0,"TRS");endif;



if crossover(c,mioh) then
   enterlong(nextbar,atopen); // entrata lunga
endif;
//if positiondir=1 and c<mioseg then // uscita lunga
//   exitlong(bar,atclose);
//endif;

if crossunder(c,miol) then // entrata corta
   entershort(nextbar,atopen);
endif;
//if positiondir=-1 and c> mioseg then //uscita corta
//   exitshort(bar,atclose);
//endif;

zona2 = newvp(100);
zona3 = newvp(100);
zona4 = newvp(100);
zona5 = newvp(100);


PlotChart(mioh,0,blue,solid,2);
PlotChart(miol,0,red,solid,2);
PlotChart(mioseg,0,green,solid,2);

plotchart(contag,zona2,black,solid,1);
plotchart(contab,zona3,black,solid,1);
plotchart(gio,zona4,black,solid,1);
 

Allegati

  • donchian2.JPG
    donchian2.JPG
    171,3 KB · Visite: 76
Scrivo per vedere se ci fosse l'interesse a sviluppare un'idea puramente didattica di fine estate.
Vorrei capire se TS semplici, conosciuti da tutti , con codice aperto e nella bibbliografia definiti robusti, possano resistere alla prova del passare del tempo.
Per fare questo vorrei tradurre in visual trader 4 TS pubblicati nel libro di John Hill "Trading la guida definitiva" che riporta i codici e i backtest (ovviamente profittevoli) dal 1983 al 1999 applicati a diversi mercati e farli girare nel periodi diciamo dal 1999 ad oggi, valutandone insieme i risultati.
Preciso che lo scopo è puramente didattico, non c'è pretesa di realizzare nulla di applicabile , ma solo di vedere cosa sarebbe successo utilizzandoli in paper.
Se ci fosse l'interesse di aiutarmi a tradurre i TS (chiedo sopratutto a Damien e agli esperti di Visual trader) potremmo poi commentare insieme i risultati... chissa', altrimenti scrivo all'assistenza per vedere se mi aiutano loro.
i TS sono:
- Donchian channel
- Incrocio di medie mobile
- Opening range breakout
- S&P Day Trade

La risposta che spero di trovare nei numeri è che applicando ad una molteplicità di mercati sistemi robusti, mai ottimizzati e semplici come questi si possono ancora ottenere risultati sui mercati di oggi.
Vedrem...

per la mia modesta esperienza la risposta a questa domanda può essere affermativa...questo è il metodo che addotto e del quale sono moderatamente soddisfatto...circa i trading systems di quel libro non saprei quanto siano robusti...quel libro l'ho anch'io e ,imho, è abbastanza valido per iniziare a capire come impostare un programma di trading con i ts con un minimo di razionalità...quei ts, però, non mi entusiasmano granchè anche se credo che applicati a mercati particolarmente direzionali ( requisito fondamentale per sperare di cavarci qualcosa con i trendfollowing come quei codici...) credo potrebbero dare qualche soddisfazione...cmq bella la tua inziativa...credo questo 3d prometta bene visyo anche che vedo che subito è intervenuto damien che apprezzo e leggo sempre con interesse...
 
Fiat 1 anno e mezzo, poche operazioni, ora long da 18 giorni.
Verifica. Ciao.

Codice:
Var:mioh,miol,buypoint,sellpoint,mioseg, miamedia;
Var:contag,contab,nrbarre6,nrbarre11,nrbarre16,nrbarre21,nrbarre26,nrbarre31,nrbarre36,nrbarre41,nrbarre46,nrbarre51,nrbarre56,nrbarre60,gio;
Var:zona2,zona3,zona4,zona5;
Var:test;


//mioh=hhv(c,30); // massimo a 30gg.
//miol=llv(c,30); // minimo a 30gg.
//mioseg=mioh-((mioh-miol)/2) ; //linea mediana tra massimo e minimo
//buypoint=addtick(mioh,1); // punto d'acquisto
//sellpoint=addtick(miol,-1); // punto di vendita

if positiondir=0 then contag=0;contab=0;endif;
if isfirstbarday then contag=contag+1;endif;
contab=contab+1;

if isfirstbarday and contag=6 then nrbarre6=contab;endif;
if isfirstbarday and contag=11 then nrbarre11=contab;endif;
if isfirstbarday and contag=16 then nrbarre16=contab;endif;
if isfirstbarday and contag=21 then nrbarre21=contab;endif;
if isfirstbarday and contag=26 then nrbarre26=contab;endif;
if isfirstbarday and contag=31 then nrbarre31=contab;endif;
if isfirstbarday and contag=36 then nrbarre36=contab;endif;
if isfirstbarday and contag=41 then nrbarre41=contab;endif;
if isfirstbarday and contag=46 then nrbarre46=contab;endif;
if isfirstbarday and contag=51 then nrbarre51=contab;endif;
if isfirstbarday and contag=56 then nrbarre56=contab;endif;
if isfirstbarday and contag=60 then nrbarre60=contab;endif;

if barsince(positiondir=1)>0 then gio=30;endif;if barsince(positiondir=-1)>=0 then gio=30;endif;
if barsince(positiondir=1)>=nrbarre6 and nrbarre6<>0 then gio=28;endif;if barsince(positiondir=-1)>=nrbarre6 and nrbarre6<>0 then gio=28;endif;
if barsince(positiondir=1)>=nrbarre11 and nrbarre11<>0 then gio=26;endif;if barsince(positiondir=-1)>=nrbarre11 and nrbarre11<>0 then gio=26;endif;
if barsince(positiondir=1)>=nrbarre16 and nrbarre16<>0 then gio=24;endif;if barsince(positiondir=-1)>=nrbarre16 and nrbarre16<>0 then gio=24;endif;
if barsince(positiondir=1)>=nrbarre21 and nrbarre21<>0 then gio=22;endif;if barsince(positiondir=-1)>=nrbarre21 and nrbarre21<>0 then gio=22;endif;
if barsince(positiondir=1)>=nrbarre26 and nrbarre26<>0 then gio=20;endif;if barsince(positiondir=-1)>=nrbarre26 and nrbarre26<>0 then gio=20;endif;
if barsince(positiondir=1)>=nrbarre31 and nrbarre31<>0 then gio=18;endif;if barsince(positiondir=-1)>=nrbarre31 and nrbarre31<>0 then gio=18;endif;
if barsince(positiondir=1)>=nrbarre36 and nrbarre36<>0 then gio=16;endif;if barsince(positiondir=-1)>=nrbarre36 and nrbarre36<>0 then gio=16;endif;
if barsince(positiondir=1)>=nrbarre41 and nrbarre41<>0 then gio=14;endif;if barsince(positiondir=-1)>=nrbarre41 and nrbarre41<>0 then gio=14;endif;
if barsince(positiondir=1)>=nrbarre46 and nrbarre46<>0 then gio=12;endif;if barsince(positiondir=-1)>=nrbarre46 and nrbarre46<>0 then gio=12;endif;
if barsince(positiondir=1)>=nrbarre51 and nrbarre51<>0 then gio=10;endif;if barsince(positiondir=-1)>=nrbarre51 and nrbarre51<>0 then gio=10;endif;
if barsince(positiondir=1)>=nrbarre56 and nrbarre56<>0 then gio=8;endif;if barsince(positiondir=-1)>=nrbarre56 and nrbarre56<>0 then gio=8;endif;
if barsince(positiondir=1)>=nrbarre60 and nrbarre60<>0 then gio=6;endif;if barsince(positiondir=-1)>=nrbarre60 and nrbarre60<>0 then gio=6;endif;

if isfirstbarday then mioh=ref(hhv(h,gio),1);miol=ref(llv(l,gio),1);endif;
//buypoint=addtick(mioh,1); // punto d'acquisto
//sellpoint=addtick(miol,-1); // punto di vendita
mioseg=mioh-((mioh-miol)/2) ; //linea mediana tra massimo e minimo

if positiondir=1 and  {test=1} crossunder(c,miol) then exitlong (nextbar,atopen,0,0,"TRL");endif;
if positiondir=-1 and  {test=-1} crossover(c,mioh) then exitshort (nextbar,atopen,0,0,"TRS");endif;



if crossover(c,mioh) then
   enterlong(nextbar,atopen); // entrata lunga
endif;
//if positiondir=1 and c<mioseg then // uscita lunga
//   exitlong(bar,atclose);
//endif;

if crossunder(c,miol) then // entrata corta
   entershort(nextbar,atopen);
endif;
//if positiondir=-1 and c> mioseg then //uscita corta
//   exitshort(bar,atclose);
//endif;

zona2 = newvp(100);
zona3 = newvp(100);
zona4 = newvp(100);
zona5 = newvp(100);


PlotChart(mioh,0,blue,solid,2);
PlotChart(miol,0,red,solid,2);
PlotChart(mioseg,0,green,solid,2);

plotchart(contag,zona2,black,solid,1);
plotchart(contab,zona3,black,solid,1);
plotchart(gio,zona4,black,solid,1);

Mi sembra che siamo piu' vicini al risultato ma mi aspettavo meno presenza a mercato guarda questi due segnali fa due reverse (in fase laterale) prima long e poi short ma non entra alla rottura del max a 30 gg. prima e del min a 30gg. poi. oggi lo guardo con piu' calma...
Grazie.
 

Allegati

  • per damien.JPG
    per damien.JPG
    90,1 KB · Visite: 646
per la mia modesta esperienza la risposta a questa domanda può essere affermativa...questo è il metodo che addotto e del quale sono moderatamente soddisfatto...circa i trading systems di quel libro non saprei quanto siano robusti...quel libro l'ho anch'io e ,imho, è abbastanza valido per iniziare a capire come impostare un programma di trading con i ts con un minimo di razionalità...quei ts, però, non mi entusiasmano granchè anche se credo che applicati a mercati particolarmente direzionali ( requisito fondamentale per sperare di cavarci qualcosa con i trendfollowing come quei codici...) credo potrebbero dare qualche soddisfazione...cmq bella la tua inziativa...credo questo 3d prometta bene visyo anche che vedo che subito è intervenuto damien che apprezzo e leggo sempre con interesse...

Grazie sono contento che ci sia interesse di persone che tradano realmente,
ho preso quei TS (sono benvenuti altri TS con queste caratteristiche) in quanto hanno test (riportati sul libro) su uno storico che ci permette di fare valutazione statisticamente apprezzabili, sicuramente non sono il massimo e introducono variabili che ci spingerebbero a ottimizzare ( cosa che no voglio fare ), ma lo scopo e' didattico e se alla fine i risultati fossero robusti allora tutto è migliorabile.
Se la tua esperienza conferma l'approccio che sto proponendo ( che per gli esperti sarà trito e ritrito) siamo gia' un passo avanti...
Grazie per l'intervento.
 
Ciao, a me pare corretto (vedi tuo stesso screen).

Il fatto che sta sempre a mercato dipende dal fatto che ho commentato le istruzioni di exitshort ed exitlong, per i pessimi risultati del backtest.
Quindi tutte le istruzioni che vedi sono sostanzialmente reverse long/short.
Prova a riaggungerle, se credi.

sta roba per intenderci:

//if positiondir=1 and c<mioseg then // uscita lunga
// exitlong(bar,atclose);
//endif;
 

Allegati

  • donchian3.JPG
    donchian3.JPG
    113,3 KB · Visite: 69
Ciao,

volevo chiederti se potevi riportare i codici originali dei seguenti Trading System, così potrò testarli anch'io (non conosco, ne possiedo Visual Trader, ma posso utilizzare Tradestation e Metastock):


- Donchian channel
- Opening range breakout
- S&P Day Trade



Grazie in anticipo.
 
Certo che si,
questa sera inizio a copiarli e li posto.
 
più avanti ( quando si sarà terminato di sviscerare i codici di keep...e magari potremmo anche provare a migliorali con qualche idea...) casomai potrò proporne qualcuno anch'io ( sempre tratto da pubblicazioni che trattano di ts...)...
 
Non scordate il TsAmico!!!!


:)

Quei TS (a dispetto di chi mi considera un pollo) sia nella versione 2 (applicata al dax) che in quella 3 sono gia a mercato e danno per ora quello promesso.
sicuramente sono da inserire in qualunque portafoglio... ovviamente con criterio..OK!
 
Indietro