Pastore Ale
Nuovo Utente
- Registrato
- 20/11/02
- Messaggi
- 78
- Punti reazioni
- 1
Al seguente indirizzo sto portando avanti una discussione sull'argomento:
http://www.parcobuoi.it/pbforum/topic.asp?TOPIC_ID=1071
Riporto qui quanto scritto di là, sperando che interessi qualcuno e possa servire ai più.
Se volessimo calcolare per MetaStock l'Oscillatore stocastico calcolato a 6 periodi dovremmo utilizzare la seguente formula
%k := (CLOSE-LLV(L,6)) / (HHV(H,6)-LLV(L,6)) * 100
che segnala a che punto si trova la chiusura rispetto al range minimo-massimo degli ultimi 6 giorni.
Spesso %k viene rallentata e calcolata rispetto agli ultimi 3 valori, ma non utilizzando una media mobile, bensì sommando i numeratori e, separatamente, i denominatori, facendone poi il rapporto in questo modo:
%kslowing := (CLOSE-LLV(L,6)+Ref(C,-1)-Ref(LLV(L,6),-1)+Ref(C,-2)-Ref(LLV(L,6),-2)) / (HHV(H,6)-LLV(L,6)+Ref(HHV(H,6),-1)-Ref(LLV(L,6),-1)+Ref(HHV(H,6),-2)-Ref(LLV(L,6),-2)) * 100
Per realizzare lo Stochastic Oscillator del MetaStock bisogna infine calcolare una media mobile semplice del %kslowing, meglio conosciuto come
%d := Mov(%kslowing,3,S)
Inserendo queste formule nell'Indicator Builder si è creato lo Stochastic Oscillator i cui parametri sono 6,3,3 che su un grafico del Mib30 appare come nell'immagine qui sotto
http://www.parcobuoi.it/grafici/stocasticonormale.GIF
L'idea di Bressert di creare e utilizzare uno stocastico doppiamente rallentato si concretizza nel seguente modo. Si calcola il
%k := (CLOSE-LLV(L,6)) / (HHV(H,6)-LLV(L,6))
del quale si calcola una media mobile esponenziale a 3 periodi, la cui formula è
A := Mov(%k,3,E) * 100
Successivamente se ne calcola lo stocastico in questo modo
(A-LLV(A,6)) / (HHV(A,6)-LLV(A,6))
e infine si rallenta per la seconda volta creando il DSS secondo Bressert
DSSB := Mov((A-LLV(A,6)) / (HHV(A,6)-LLV(A,6)),3,E) * 100;
http://www.parcobuoi.it/grafici/stocdoppiorallentato.GIF
che si può benissimo accompagnare con una media mobile esponenziale a 3 periodi.
Con i mezzi a disposizione, prendendo l'evento del cross tra DSSB e la sua media mobile, si possono creare i seguenti indicatori:
Name: _LastUp
Formula:
Pds:=6;
Slw:=3;
A:=Mov((CLOSE-LLV(LOW,Pds))/(HHV(H,pds)-LLV(L,Pds)),Slw,E)*100;
B:=Mov((A-LLV(A,pds))/(HHV(A,Pds)-LLV(A,Pds)),Slw,E)*100;
BarsSince(Cross(B,Mov(B,3,E)))
Name: _LastDn
Formula:
Pds:=6;
Slw:=3;
A:=Mov((CLOSE-LLV(LOW,Pds))/(HHV(H,pds)-LLV(L,Pds)),Slw,E)*100;
B:=Mov((A-LLV(A,pds))/(HHV(A,Pds)-LLV(A,Pds)),Slw,E)*100;
BarsSince(Cross(Mov(B,3,E),B))
_LastUp e _LastDn si possono scrivere anche in forma binaria 1 / -1 nel seguente modo
Name: _activeup
Formula:
If(Fml("_LastUp") < Fml("_LastDn"),1,-1);
Name: _activedn
Formula:
If(Fml("_LastUp")>Fml("_LastDn"),1,-1);
Inoltre si possono scrivere un 'indicatore da applicare al grafico
Name: _CycleMode
Formula:
Pds:=6;
Slw:=3;
A:=Mov((CLOSE-LLV(LOW,Pds))/(HHV(H,pds)-LLV(L,Pds)),Slw,E)*100;
B:=Mov((A-LLV(A,pds))/(HHV(A,Pds)-LLV(A,Pds)),Slw,E)*100;
UpCycleMode:=ValueWhen(1,Cross(B,Mov(B,3,E)),CLOSE);
DnCycleMode:=ValueWhen(1,Cross(Mov(B,3,E),B),CLOSE);
UpCycleMode;DnCycleMode
e due indicatori il cui incrocio potrebbe dare utili informazioni sulla tendenza in atto
Name: _Up
Formula:
Pds:=6;
Slw:=3;
A:=Mov((CLOSE-LLV(LOW,Pds))/(HHV(H,pds)-LLV(L,Pds)),Slw,E)*100;
B:=Mov((A-LLV(A,pds))/(HHV(A,Pds)-LLV(A,Pds)),Slw,E)*100;
CycleMode:=ValueWhen(1,Cross(B,Mov(B,3,E)),CLOSE);
Mov((CLOSE-CycleMode)/CycleMode*100,3,E);
Name: _Dn
Formula:
Pds:=6;
Slw:=3;
A:=Mov((CLOSE-LLV(LOW,Pds))/(HHV(H,pds)-LLV(L,Pds)),Slw,E)*100;
B:=Mov((A-LLV(A,pds))/(HHV(A,Pds)-LLV(A,Pds)),Slw,E)*100;
CycleMode:=ValueWhen(1,Cross(Mov(B,3,E),B),CLOSE);
Mov((CycleMode-CLOSE)/CycleMode*100,3,E);
Tutti questi indicatori, inseriti in un grafico, assumono il seguente aspetto
http://www.parcobuoi.it/grafici/DSSBesempi.gif
Clicca, nel tuo MetaStock, su Tools->Expert Advisors->New.
Inserisci nella linguetta Name
Name: DSS PB Expert
Nella linguetta Highlihts clic su New
Name: _Up
Color: Green
Condition: Fml( "_Up") > Fml( "_Dn")
e clic su OK.
Altro clic su New
Name: _Dn
Color: Red
Condition: Fml( "_Up") < Fml( "_Dn")
e clic su OK.
Nella linguetta Symbols clic su New, e nella linguetta Name inserisci
Name: _Up
Condition:
Pds:=6;
Slw:=3;
A:=Mov((CLOSE-LLV(LOW,Pds))/(HHV(H,pds)-LLV(L,Pds)),Slw,E)*100;
B:=Mov((A-LLV(A,pds))/(HHV(A,Pds)-LLV(A,Pds)),Slw,E)*100;
Cross(BarsSince(Cross(B,Mov(B,3,E))),BarsSince(Cross(Mov(B,3,E),B)))
mentre nella linguetta Graphic selezioni
Graphic: Diamond
Size: Small
Color: Magenta
Symbol Position: Above Price Plot
Sempre nella linguetta Symbols clic su New, e nella linguetta Name inserisci
Name: _Dn
Condition:
Pds:=6;
Slw:=3;
A:=Mov((CLOSE-LLV(LOW,Pds))/(HHV(H,pds)-LLV(L,Pds)),Slw,E)*100;
B:=Mov((A-LLV(A,pds))/(HHV(A,Pds)-LLV(A,Pds)),Slw,E)*100;
Cross(BarsSince(Cross(Mov(B,3,E),B)),BarsSince(Cross(B,Mov(B,3,E))))
mentre nella linguetta Graphic selezioni
Graphic: Diamond
Size: Small
Color: Blue
Symbol Position: Below Price Plot
Applicando tutto in un grafico del Mib30 dovresti ottenere la seguente immagine:
http://www.parcobuoi.it/grafici/mib30-DSSBPBExpert.gif
http://www.parcobuoi.it/pbforum/topic.asp?TOPIC_ID=1071
Riporto qui quanto scritto di là, sperando che interessi qualcuno e possa servire ai più.
Se volessimo calcolare per MetaStock l'Oscillatore stocastico calcolato a 6 periodi dovremmo utilizzare la seguente formula
%k := (CLOSE-LLV(L,6)) / (HHV(H,6)-LLV(L,6)) * 100
che segnala a che punto si trova la chiusura rispetto al range minimo-massimo degli ultimi 6 giorni.
Spesso %k viene rallentata e calcolata rispetto agli ultimi 3 valori, ma non utilizzando una media mobile, bensì sommando i numeratori e, separatamente, i denominatori, facendone poi il rapporto in questo modo:
%kslowing := (CLOSE-LLV(L,6)+Ref(C,-1)-Ref(LLV(L,6),-1)+Ref(C,-2)-Ref(LLV(L,6),-2)) / (HHV(H,6)-LLV(L,6)+Ref(HHV(H,6),-1)-Ref(LLV(L,6),-1)+Ref(HHV(H,6),-2)-Ref(LLV(L,6),-2)) * 100
Per realizzare lo Stochastic Oscillator del MetaStock bisogna infine calcolare una media mobile semplice del %kslowing, meglio conosciuto come
%d := Mov(%kslowing,3,S)
Inserendo queste formule nell'Indicator Builder si è creato lo Stochastic Oscillator i cui parametri sono 6,3,3 che su un grafico del Mib30 appare come nell'immagine qui sotto
http://www.parcobuoi.it/grafici/stocasticonormale.GIF
L'idea di Bressert di creare e utilizzare uno stocastico doppiamente rallentato si concretizza nel seguente modo. Si calcola il
%k := (CLOSE-LLV(L,6)) / (HHV(H,6)-LLV(L,6))
del quale si calcola una media mobile esponenziale a 3 periodi, la cui formula è
A := Mov(%k,3,E) * 100
Successivamente se ne calcola lo stocastico in questo modo
(A-LLV(A,6)) / (HHV(A,6)-LLV(A,6))
e infine si rallenta per la seconda volta creando il DSS secondo Bressert
DSSB := Mov((A-LLV(A,6)) / (HHV(A,6)-LLV(A,6)),3,E) * 100;
http://www.parcobuoi.it/grafici/stocdoppiorallentato.GIF
che si può benissimo accompagnare con una media mobile esponenziale a 3 periodi.
Con i mezzi a disposizione, prendendo l'evento del cross tra DSSB e la sua media mobile, si possono creare i seguenti indicatori:
Name: _LastUp
Formula:
Pds:=6;
Slw:=3;
A:=Mov((CLOSE-LLV(LOW,Pds))/(HHV(H,pds)-LLV(L,Pds)),Slw,E)*100;
B:=Mov((A-LLV(A,pds))/(HHV(A,Pds)-LLV(A,Pds)),Slw,E)*100;
BarsSince(Cross(B,Mov(B,3,E)))
Name: _LastDn
Formula:
Pds:=6;
Slw:=3;
A:=Mov((CLOSE-LLV(LOW,Pds))/(HHV(H,pds)-LLV(L,Pds)),Slw,E)*100;
B:=Mov((A-LLV(A,pds))/(HHV(A,Pds)-LLV(A,Pds)),Slw,E)*100;
BarsSince(Cross(Mov(B,3,E),B))
_LastUp e _LastDn si possono scrivere anche in forma binaria 1 / -1 nel seguente modo
Name: _activeup
Formula:
If(Fml("_LastUp") < Fml("_LastDn"),1,-1);
Name: _activedn
Formula:
If(Fml("_LastUp")>Fml("_LastDn"),1,-1);
Inoltre si possono scrivere un 'indicatore da applicare al grafico
Name: _CycleMode
Formula:
Pds:=6;
Slw:=3;
A:=Mov((CLOSE-LLV(LOW,Pds))/(HHV(H,pds)-LLV(L,Pds)),Slw,E)*100;
B:=Mov((A-LLV(A,pds))/(HHV(A,Pds)-LLV(A,Pds)),Slw,E)*100;
UpCycleMode:=ValueWhen(1,Cross(B,Mov(B,3,E)),CLOSE);
DnCycleMode:=ValueWhen(1,Cross(Mov(B,3,E),B),CLOSE);
UpCycleMode;DnCycleMode
e due indicatori il cui incrocio potrebbe dare utili informazioni sulla tendenza in atto
Name: _Up
Formula:
Pds:=6;
Slw:=3;
A:=Mov((CLOSE-LLV(LOW,Pds))/(HHV(H,pds)-LLV(L,Pds)),Slw,E)*100;
B:=Mov((A-LLV(A,pds))/(HHV(A,Pds)-LLV(A,Pds)),Slw,E)*100;
CycleMode:=ValueWhen(1,Cross(B,Mov(B,3,E)),CLOSE);
Mov((CLOSE-CycleMode)/CycleMode*100,3,E);
Name: _Dn
Formula:
Pds:=6;
Slw:=3;
A:=Mov((CLOSE-LLV(LOW,Pds))/(HHV(H,pds)-LLV(L,Pds)),Slw,E)*100;
B:=Mov((A-LLV(A,pds))/(HHV(A,Pds)-LLV(A,Pds)),Slw,E)*100;
CycleMode:=ValueWhen(1,Cross(Mov(B,3,E),B),CLOSE);
Mov((CycleMode-CLOSE)/CycleMode*100,3,E);
Tutti questi indicatori, inseriti in un grafico, assumono il seguente aspetto
http://www.parcobuoi.it/grafici/DSSBesempi.gif
Clicca, nel tuo MetaStock, su Tools->Expert Advisors->New.
Inserisci nella linguetta Name
Name: DSS PB Expert
Nella linguetta Highlihts clic su New
Name: _Up
Color: Green
Condition: Fml( "_Up") > Fml( "_Dn")
e clic su OK.
Altro clic su New
Name: _Dn
Color: Red
Condition: Fml( "_Up") < Fml( "_Dn")
e clic su OK.
Nella linguetta Symbols clic su New, e nella linguetta Name inserisci
Name: _Up
Condition:
Pds:=6;
Slw:=3;
A:=Mov((CLOSE-LLV(LOW,Pds))/(HHV(H,pds)-LLV(L,Pds)),Slw,E)*100;
B:=Mov((A-LLV(A,pds))/(HHV(A,Pds)-LLV(A,Pds)),Slw,E)*100;
Cross(BarsSince(Cross(B,Mov(B,3,E))),BarsSince(Cross(Mov(B,3,E),B)))
mentre nella linguetta Graphic selezioni
Graphic: Diamond
Size: Small
Color: Magenta
Symbol Position: Above Price Plot
Sempre nella linguetta Symbols clic su New, e nella linguetta Name inserisci
Name: _Dn
Condition:
Pds:=6;
Slw:=3;
A:=Mov((CLOSE-LLV(LOW,Pds))/(HHV(H,pds)-LLV(L,Pds)),Slw,E)*100;
B:=Mov((A-LLV(A,pds))/(HHV(A,Pds)-LLV(A,Pds)),Slw,E)*100;
Cross(BarsSince(Cross(Mov(B,3,E),B)),BarsSince(Cross(B,Mov(B,3,E))))
mentre nella linguetta Graphic selezioni
Graphic: Diamond
Size: Small
Color: Blue
Symbol Position: Below Price Plot
Applicando tutto in un grafico del Mib30 dovresti ottenere la seguente immagine:
http://www.parcobuoi.it/grafici/mib30-DSSBPBExpert.gif