di la' stanno facendo un ts sulle bollinger..ne facciamo uno di qua e li battiamo?

Le considerazioni di Pek e di Maro le condivido....ma voglio porre una domanda....considerando le mutevoli condizioni del mercato....
ha senso cercare un algoritmo (spesso invano) che performi con regolarità in ogni condizione ......nel 1986...nel 1999 ..nel 2002...come nel 2008..???
Oppure ha senso ottimizzare la regola del TS al periodo attuale per poi riadattarlo non appena i suoi risultati cominciano a deteriorarsi ?????
E' una domanda che mi pongo spesso.

Puoi anche puntare alla riottimizzazione periodica,ma consiglio di essere conservativi,non cercare il massimo dell'ultimo periodo rischiando cadute rovinose.La bolla internet non si ripeterà?
Possibile ma anche il ciclo di crescita senza vola 2003-2007 non è "normale",così come i successivi -50% +100% in 2 anni....


Comunque i risultati del TS in excel che avevo postato....nel periodo 1998-2009 è stato +228%...con l'equity che mostro nel graf.
Naturalmente con una Expo smooth diversa (molto + alta)...che ha ottimizzato la performace del periodo complessivo ma che mi ha appiattito la curva negli ultimi 2 anni.

beh,se cambi il periodo di smoothing non vale :D
Anche così hai un DD importanti,non gestibili con future
Usando ETF senza leva puoi sopravvivere,ma a quel punto prova Expo ancora più lente
 
e' giusto quello che dici

pero' la logica di prendere un livello..meglio uno di transito(dove il prezzo non si ferma a vibrare)....e reversare continuamente finche' non entra..non e' male

se riesco ad eliminare il rumore del rendez-vous...creo un sistema robusto...mai contro mercato

marofib hai mai creato qualche indicatore di persistenza, magari potrebbe tornar utile in questi casi (ed anche in altri)
 
indicatore no...ma e' chiaro che oggi e' influenzato da ieri e un po' meno da ieri l'altro
nei supporti e resistenze ...peso
 
buondì

riesumo il 3d, mettendo ordine ho ritrovato il file Hi-Lo e quindi son qui, in colpevole ritardo :)

chiedendo scusa in anticipo a gilato, misono permesso di sostituire i dati dell'indice con quelli del fib e pur rimanendo in tutto e per tutto uguale, ho modificato il revers in open al giorno successivo e non in colose dello stesso giorno, in oltre ho aggiunto il calcolo del massimo D.D.
I dati sono espressi in punti ( per i meno esperti, per il calcolo dell'utile sul fib bisogna moltiplicare i punti per 5 )

direi che si difende molto bene quando il mercato ha una direzionalità mentre nei primi anni ( dal 2004 al 2007 ) ha sofferto un pò.

P.S. se ho sbagliato qualcosa fate un fischio grazie

I dati immessi mi pare che invertano le colonne: OHLC diventa OCHL e quindi abbiamo i max inferiori ai min

Questo è il file del TS con i dati dell'indice eurostoxx fornito gentilmente da eumund.
Il titolo del TS è puramente indicativo....non c'entra niente con Gann....
Ciao
il P&L va moltiplicato per 10 (moltiplictore dello STOXX).

Gilato (o altri), hai continuato ad affinarlo?

saluti

C
 
più o meno OT :rolleyes::rolleyes:

qualcuno ha un Supertrend in excel ?
grazie :)

ps aggiungo
qui il codice come postato da ender85


{******************************************************************************
* SUPERTREND by ender85
* Codice di Robom1 preso dal Fol e modificato in minima parte
* solo per renderlo simile alla versione di Prorealtime
* Ringraziamenti: Robom1, Damien e Ronzy
******************************************************************************}
Var: volatilita(0),
prezzomediano(0),
bandaup(0),
bandadn(0),
trend(0),
supertrend(0),
colore(0),
inizio(0);

input: Moltiplicatore(3),
Nm_periodi(100);
//******************************************************************************
//CALCOLO DELLA VOLATILITA'
//La volatilità è calcolata sull'ATR di 100 periodi

volatilita = ATR(C, Nm_periodi);

//******************************************************************************
//CALCOLO DEL PREZZO MEDIANO
//Il prezzo mediano è rappresentato da massimo + minimo diviso due

prezzomediano = (H + L) / 2;

//******************************************************************************
//CALCOLO DELLE BANDE
//la banda up è corrispondente al prezzomediano + moltiplicatore x atr
//la banda down è corrispondente al prezzo mediano - moltiplicatore x atr
//Nota il moltiplicatore standard è solitamente impostato a 3

bandaup = prezzomediano + (moltiplicatore * volatilita);
bandadn = prezzomediano - (moltiplicatore * volatilita);

//******************************************************************************
//INIZIALIZZAZIONE TREND A 1 CON ESAME PRIMA BARRA (non necessario se iniz. la var.

if inizio = 0 then trend = 1; inizio = 1; endif;

//******************************************************************************
//CASO 1
//Se il trend = 1 e il close è inferiore alla banda down allora il trend
//diventa negativo, il calcolo della banda diventa quello standard e la
//supertrend assume l'aspetto della banda superiore in quanto il trend
//è diventato negativo.

if trend = 1 and
C < bandadn[1]
then
trend = -1;
bandaup = prezzomediano +
(moltiplicatore * volatilita);
supertrend = bandaup;
endif;

//******************************************************************************
//CASO 2
//Se il trend = 1 e il close è maggiore o uguale della banda down e la bandadown
//è inferiore alla bandadown precedente, il trend rimane sempre positivo ma
//la bandadown rimane sempre allo stesso livello e non scende.
//Il concetto principale è che nel caso in cui il trend è positivo una volta
//determinata la prima volta la bandadown, quest'ultima puo' solo salire ad
//inseguimento (in una sorta di trailing stop).

if trend = 1 and
C >= bandadn[1] and
bandadn < bandadn[1]
then
bandadn = bandadn[1];
supertrend = bandadn;
endif;

//******************************************************************************
//CASO 3
//Se il trend = 1 e il close è maggiore o uguale della banda down e la banddown
//è maggiore della bandadown precedente, il trend rimane sempre positivo ma
//la supertrend assume lo stesso livello della bandadown in maniera che il
//limite della banda inferiore si alza ad inseguimento
if trend = 1 and
C >= bandadn[1] and
bandadn >= bandadn[1]
then
supertrend = bandadn;
endif;

//******************************************************************************
//CASO 4
//Se il trend è negativo e il close risulta maggiore della bandaup allora il
//trend diventa positivo, il calcolo della banda diventa quello standard e la
//supertrend assume l'aspetto della banda inferiore in quanto il trend è
//diventato positivo

if trend =-1 and
close > bandaup[1]
then
trend = 1;
bandadn = prezzomediano -
(moltiplicatore * volatilita);
supertrend = bandadn;
endif;

//******************************************************************************
//CASO 5
//Se il trend è negativo e il close risulta inferiore uguale alla bandaup e la
//bandaup risulta maggiore della bandaup precedente allora il trend rimane
//sempre negativo e la bandaup rimane sempre allo stesso livello.
//Il concetto è che se il trend è negativo la banda superiore, una volta fissata
//puo' solo scendere ad inseguimento come in una sorta di trailing stop.

if trend =-1 and
close <= bandaup and
bandaup > bandaup[1]
then
bandaup = bandaup[1];
supertrend = bandaup;
endif;

//******************************************************************************
//CASO 6
//Se il trend è negativo e il close risulta inferiore uguale alla bandaup e la
//bandaup risulta inferiore della banda precedente allora la supertrend assume
//il nuovo valore della bandaup

if trend =-1 and
close <= bandaup and
bandaup <= bandaup[1]
then
supertrend = bandaup;
endif;

//******************************************************************************
//Colora il Supertrend a seconda che il trend sia positivo (1) o negativo (-1)

if trend = 1 then
colore= green;
else
colore= red;
endif;

//******************************************************************************
//Disegno il Supertrend
PlotChart(supertrend, 0, colore, solid, 3);

//******************************************************************************
//******************************************************************************
//******************************************************************************
//******************************************************************************
//FINE INDICATORE INIZIO TS
//******************************************************************************

SECTION_ENTERLONG:
if CLOSE>supertrend AND CLOSE[1]<supertrend[1] then
enterlong(NextBar,AtOpen);
endif;
END_SECTION

SECTION_EXITLONG:
if CLOSE<supertrend AND CLOSE[1]>supertrend[1] then
exitlong(NextBar,AtOpen);
endif;
END_SECTION


SECTION_ENTERSHORT:
if CLOSE<supertrend AND CLOSE[1]>supertrend[1] then
entershort(NextBar,AtOpen);
endif;

END_SECTION


SECTION_EXITSHORT:
if CLOSE>supertrend AND CLOSE[1]<supertrend[1] then
exitshort(NextBar,AtOpen);
endif;
END_SECTION
 
Ultima modifica:
Supertrend on by Oliver Seban :

NPUT: HBKTypPrxCentr(1),HBKTypPrxSort(2),HBKintrvp(1),klargeurSup(1.8),klargeurInf(-1.8),HBKLisp(10),GapJcumu(0);
Input:typeCalcul(6);
var: HBKPrxCentr(C),HBKPrxSort(C),HBKPlusH(0),HBKPlusB( 0),HB(0),AmplitudVrGIntHBK(0),HBKAtr(0),
HBKMoy(0),HBKH(0),HBKB(0),HBKHMoy(0),HBKBMoy(0),HBKtendance(0),
HBKLisIntrvp(HBKLisp*HBKintrvp),Maxccant(HBKLisIntrvp);



HBKPlusH=HighestFC(HIGH,HBKintrvp);
HBKPlusB=LowestFC(LOW,HBKintrvp);
if HBKTypPrxCentr =1 then HBKPrxCentr=CLOSE;
if HBKTypPrxCentr =2 then HBKPrxCentr=(HBKPlusH+HBKPlusB)*0.5;
if HBKTypPrxCentr =3 then HBKPrxCentr=(HBKPlusH+HBKPlusB+CLOSE)/3;
if HBKTypPrxCentr =4 then HBKPrxCentr=(HBKPlusH+HBKPlusB+CLOSE+OPEN[HBKintrvp-1]) *0.25;
if HBKTypPrxCentr =5 then HBKPrxCentr=(HBKPlusH+HBKPlusB+CLOSE[HBKintrvp])/3 ;
if HBKTypPrxCentr =6 then HBKPrxCentr=(HBKPlusH+HBKPlusB+CLOSE[HBKintrvp]+OPEN[HBKintrvp-1])*0.25;

if HBKTypPrxSort =1 then HBKPrxSort=CLOSE;
if HBKTypPrxSort =2 then HBKPrxSort=(HBKPlusH+HBKPlusB)*0.5;
if HBKTypPrxSort =3 then HBKPrxSort=(HBKPlusH+HBKPlusB+CLOSE)/3;
if HBKTypPrxSort =4 then HBKPrxSort=(HBKPlusH+HBKPlusB+CLOSE+OPEN[HBKintrvp -1])* 0.25;
if HBKTypPrxSort =5 then HBKPrxSort=(HBKPlusH+HBKPlusB+CLOSE[HBKintrvp])/3;
if HBKTypPrxSort =6 then HBKPrxSort=(HBKPlusH+HBKPlusB+CLOSE[HBKintrvp]+OPEN[HBKintrvp-1])*0.25;

AmplitudVrGIntHBK=(maxlist(HBKPlusH,CLOSE[HBKintrvp]) -minlist(HBKPlusB,CLOSE[HBKintrvp]))*0.5;


if HBKLisp>1 then begin
if typeCalcul=1 then begin
HBKMoy=average(HBKPrxCentr,HBKLisIntrvp);
HBKAtr=average(AmplitudVrGIntHBK,HBKLisIntrvp);
HBKHMoy=HBkmoy+klargeurSup*HBKAtr;
HBKBMoy=HBkmoy+klargeurInf*HBKAtr;
end;
if typeCalcul=2 then begin
HBKMoy=average(HBKPrxCentr,HBKLisIntrvp);
HBKAtr=average(AmplitudVrGIntHBK,HBKLisIntrvp);
HBKHMoy=HBkmoy+klargeurSup*HBKAtr;IF HBKTendance=-1 then HBKHmoy=minlist(HBKHmoy,HBKHmoy[1]);
HBKBMoy=HBkmoy+klargeurInf*HBKAtr;;IF HBKTendance=1 then HBKBmoy=maxlist(HBKBmoy,HBKBmoy[1]);
end;
if typeCalcul=3 then begin
HBKMoy=xaverage(HBKPrxCentr,HBKLisIntrvp);
HBKAtr=xaverage(AmplitudVrGIntHBK,HBKLisIntrvp);
HBKHMoy=HBkmoy+klargeurSup*HBKAtr;
HBKBMoy=HBkmoy+klargeurInf*HBKAtr;
end;
if typeCalcul=4 then begin
HBKMoy=Xaverage(HBKPrxCentr,HBKLisIntrvp);
HBKAtr=Xaverage(AmplitudVrGIntHBK,HBKLisIntrvp);
HBKHMoy=HBkmoy+klargeurSup*HBKAtr;IF HBKTendance=-1 then HBKHmoy=minlist(HBKHmoy,HBKHmoy[1]);
HBKBMoy=HBkmoy+klargeurInf*HBKAtr;;IF HBKTendance=1 then HBKBmoy=maxlist(HBKBmoy,HBKBmoy[1]);
end;
if typeCalcul=5 then begin
HBKMoy=Waverage(HBKPrxCentr,HBKLisIntrvp);
HBKAtr=Waverage(AmplitudVrGIntHBK,HBKLisIntrvp);
HBKHMoy=HBkmoy+klargeurSup*HBKAtr;
HBKBMoy=HBkmoy+klargeurInf*HBKAtr;
end;
if typeCalcul=6 then begin
HBKMoy=average(HBKPrxCentr,HBKLisIntrvp);
HBKAtr=Waverage(AmplitudVrGIntHBK,HBKLisIntrvp);
HBKHMoy=HBkmoy+klargeurSup*HBKAtr;IF HBKTendance=-1 then HBKHmoy=minlist(HBKHmoy,HBKHmoy[1]);
HBKBMoy=HBkmoy+klargeurInf*HBKAtr;;IF HBKTendance=1 then HBKBmoy=maxlist(HBKBmoy,HBKBmoy[1]);
end;
end else begin
HBKH=HBKPrxCentr+klargeurSup*AmplitudVrGIntHBK;
HBKB=HBKPrxCentr+klargeurInf*AmplitudVrGIntHBK;
HBKMoy=HBKPrxCentr;
HBKHMoy=HBKH;
HBKBMoy=HBKB;
end;

if HBKPrxSort>HBKHMoy then HBKtendance=1;
if HBKPrxSort<HBKBMoy then HBKtendance=-1;


Plot1(HBKMoy+GapJcumu,"Moy HB");
Plot2(HBKHMoy+GapJcumu,"Bande Sup");
Plot3(HBKBMoy+GapJcumu,"Bande Inf");

if klargeurSup>0 then begin
if HBKtendance>0 then setplotcolor(3,blue);
if HBKtendance>0 then setplotcolor(2,blue);
if HBKtendance>0 then setplotcolor(1,blue);

end;
if klargeuriNF<0 then begin
if HBKtendance<0 then setplotcolor(1,red);
if HBKtendance<0 then setplotcolor(2,red);
if HBKtendance<0 then setplotcolor(3,red);
end;
 
più o meno OT :rolleyes::rolleyes:

qualcuno ha un Supertrend in excel ?
grazie :)

ps aggiungo
qui il codice come postato da ender85


{******************************************************************************
* SUPERTREND by ender85
* Codice di Robom1 preso dal Fol e modificato in minima parte
* solo per renderlo simile alla versione di Prorealtime
* Ringraziamenti: Robom1, Damien e Ronzy
******************************************************************************}
Var: volatilita(0),
prezzomediano(0),
bandaup(0),
bandadn(0),
trend(0),
supertrend(0),
colore(0),
inizio(0);

input: Moltiplicatore(3),
Nm_periodi(100);
//******************************************************************************
//CALCOLO DELLA VOLATILITA'
//La volatilità è calcolata sull'ATR di 100 periodi

volatilita = ATR(C, Nm_periodi);

//******************************************************************************
//CALCOLO DEL PREZZO MEDIANO
//Il prezzo mediano è rappresentato da massimo + minimo diviso due

prezzomediano = (H + L) / 2;

//******************************************************************************
//CALCOLO DELLE BANDE
//la banda up è corrispondente al prezzomediano + moltiplicatore x atr
//la banda down è corrispondente al prezzo mediano - moltiplicatore x atr
//Nota il moltiplicatore standard è solitamente impostato a 3

bandaup = prezzomediano + (moltiplicatore * volatilita);
bandadn = prezzomediano - (moltiplicatore * volatilita);

//******************************************************************************
//INIZIALIZZAZIONE TREND A 1 CON ESAME PRIMA BARRA (non necessario se iniz. la var.

if inizio = 0 then trend = 1; inizio = 1; endif;

//******************************************************************************
//CASO 1
//Se il trend = 1 e il close è inferiore alla banda down allora il trend
//diventa negativo, il calcolo della banda diventa quello standard e la
//supertrend assume l'aspetto della banda superiore in quanto il trend
//è diventato negativo.

if trend = 1 and
C < bandadn[1]
then
trend = -1;
bandaup = prezzomediano +
(moltiplicatore * volatilita);
supertrend = bandaup;
endif;

//******************************************************************************
//CASO 2
//Se il trend = 1 e il close è maggiore o uguale della banda down e la bandadown
//è inferiore alla bandadown precedente, il trend rimane sempre positivo ma
//la bandadown rimane sempre allo stesso livello e non scende.
//Il concetto principale è che nel caso in cui il trend è positivo una volta
//determinata la prima volta la bandadown, quest'ultima puo' solo salire ad
//inseguimento (in una sorta di trailing stop).

if trend = 1 and
C >= bandadn[1] and
bandadn < bandadn[1]
then
bandadn = bandadn[1];
supertrend = bandadn;
endif;

//******************************************************************************
//CASO 3
//Se il trend = 1 e il close è maggiore o uguale della banda down e la banddown
//è maggiore della bandadown precedente, il trend rimane sempre positivo ma
//la supertrend assume lo stesso livello della bandadown in maniera che il
//limite della banda inferiore si alza ad inseguimento
if trend = 1 and
C >= bandadn[1] and
bandadn >= bandadn[1]
then
supertrend = bandadn;
endif;

//******************************************************************************
//CASO 4
//Se il trend è negativo e il close risulta maggiore della bandaup allora il
//trend diventa positivo, il calcolo della banda diventa quello standard e la
//supertrend assume l'aspetto della banda inferiore in quanto il trend è
//diventato positivo

if trend =-1 and
close > bandaup[1]
then
trend = 1;
bandadn = prezzomediano -
(moltiplicatore * volatilita);
supertrend = bandadn;
endif;

//******************************************************************************
//CASO 5
//Se il trend è negativo e il close risulta inferiore uguale alla bandaup e la
//bandaup risulta maggiore della bandaup precedente allora il trend rimane
//sempre negativo e la bandaup rimane sempre allo stesso livello.
//Il concetto è che se il trend è negativo la banda superiore, una volta fissata
//puo' solo scendere ad inseguimento come in una sorta di trailing stop.

if trend =-1 and
close <= bandaup and
bandaup > bandaup[1]
then
bandaup = bandaup[1];
supertrend = bandaup;
endif;

//******************************************************************************
//CASO 6
//Se il trend è negativo e il close risulta inferiore uguale alla bandaup e la
//bandaup risulta inferiore della banda precedente allora la supertrend assume
//il nuovo valore della bandaup

if trend =-1 and
close <= bandaup and
bandaup <= bandaup[1]
then
supertrend = bandaup;
endif;

//******************************************************************************
//Colora il Supertrend a seconda che il trend sia positivo (1) o negativo (-1)

if trend = 1 then
colore= green;
else
colore= red;
endif;

//******************************************************************************
//Disegno il Supertrend
PlotChart(supertrend, 0, colore, solid, 3);

//******************************************************************************
//******************************************************************************
//******************************************************************************
//******************************************************************************
//FINE INDICATORE INIZIO TS
//******************************************************************************

SECTION_ENTERLONG:
if CLOSE>supertrend AND CLOSE[1]<supertrend[1] then
enterlong(NextBar,AtOpen);
endif;
END_SECTION

SECTION_EXITLONG:
if CLOSE<supertrend AND CLOSE[1]>supertrend[1] then
exitlong(NextBar,AtOpen);
endif;
END_SECTION


SECTION_ENTERSHORT:
if CLOSE<supertrend AND CLOSE[1]>supertrend[1] then
entershort(NextBar,AtOpen);
endif;

END_SECTION


SECTION_EXITSHORT:
if CLOSE>supertrend AND CLOSE[1]<supertrend[1] then
exitshort(NextBar,AtOpen);
endif;
END_SECTION


allora
primo giro in VB, fallito :rolleyes::rolleyes:
ma, per essere sicuri, qualcuno ha già usato questo codice?
non ne capisco un pezzo ...
di default, imho, trend(i)=trend(i-1)
è giusto ??
questa istruzione non c'è ....


PS ------------------------------------------
inoltre
ho anche questa formulazione:


by Robom1
Var: avola(0), avg(0), up(0), dn(0), aa(3), trend(0), super(0);
avola= atr(C, 10);
avg= (H + L) / 2;
up= avg + (aa*avola);
dn= avg - (aa*avola);
if C > up[1] then trend= 1; endif;
if C < dn[1] then trend=-1; endif;
if trend<0 and up>up[1] then up=up[1]; endif;
if trend>0 and dn<dn[1] then dn=dn[1]; endif;

if trend=1 then super=dn; else super=up; endif;
PlotChart(super, 0, red, solid, 3);



ci sono differenze?
grazie :)
 
allora
primo giro in VB, fallito :rolleyes::rolleyes:
ma, per essere sicuri, qualcuno ha già usato questo codice?
non ne capisco un pezzo ...
di default, imho, trend(i)=trend(i-1)
è giusto ??
questa istruzione non c'è ....
Correttissimo, visualtrader non usa la logica ad array come excel, metastock,amibroker o metatrader per cui lo stato precedente di una variabile è disponibile anche all'istante successivo con un valore immutato.

by Robom1
Var: avola(0), avg(0), up(0), dn(0), aa(3), trend(0), super(0);
avola= atr(C, 10);
avg= (H + L) / 2;
up= avg + (aa*avola);
dn= avg - (aa*avola);
if C > up[1] then trend= 1; endif;
if C < dn[1] then trend=-1; endif;
if trend<0 and up>up[1] then up=up[1]; endif;
if trend>0 and dn<dn[1] then dn=dn[1]; endif;

if trend=1 then super=dn; else super=up; endif;
PlotChart(super, 0, red, solid, 3);



ci sono differenze?
grazie :)

Rispetto a questo codice non so dirti se ci sono differenze, però posso dirti che il codice postato da me lo uso in almeno 3 sistemi live da oltre un anno e non soffre di errori :up:
 

Users who are viewing this thread

Back
Alto