RICONOSCERE IL TREND COL KLINGER VOLUME OSCILLATOR - parte 2
Proseguiamo con la disamina di questo utile strumento di screening:
Nello scorso articolo ( http://www.toptrader-mag.com/ttm/riconoscere-trend-col-klinger-volume-oscillator-parte-1) avevamo visto la teoria di base e la formula matematica alla base dell'indicatore.
Oggi vedremo il codice:
{*********************************************
KVO-INDICATOR
OmegaResearch.com
**********************************************}
Inputs: FastX(34), SlowX(55), TrigLen(13), Smooth(1);
Vars: Trigger(0);Trigger = XAverage(KVO(FastX, SlowX), TrigLen);
IF Smooth <= 1 Then Begin
Plot1(KVO(FastX, SlowX), "KVO");
Plot2(Trigger, "KVO Trigger");
End
Else Begin
Plot1(Summation(KVO(FastX, SlowX), Smooth), "KVO");
Plot2(Summation(Trigger, Smooth), "KVO Trigger");
End;
Plot3(0, "Zero");
IF Plot1 Crosses Above Plot2 OR Plot1 Crosses Below Plot2 OR Plot2 Crosses Above Plot3 OR Plot2 Crosses Below Plot3 Then
Alert = True;
{*****************************************
Function – VForce
*****************************************}
Vars: TSum(0), Trend(0), DM(0), CM(0);
TSum = High Low Close;
IF TSum > TSum[1] Then Trend = 1
Else Trend = -1;
IF Trend = Trend[1] Then CM = CM Range
Else CM = Range Range[1];
IF CM <> 0 Then VForce = Volume * AbsValue(2 * (DM/CM) -1) * Trend * 100;
{*******************************************
Function – KVO
*******************************************}
Inputs: FastX(Numeric), SlowX(Numeric);
Vars: FXAvg(0), SXAvg(0);
FXAvg = XAverage(VForce, FastX);
SXAvg = XAverage(VForce, SlowX);
KVO = FXAvg - SXAvg;
Nella codifica dell’indicatore gli input FastX e SlowX determinano la lunghezza (rispettivamente più corta e più lunga) della media mobile esponenziale della forza esercitata dai volumi mentre Trigger è la lunghezza della media mobile esponenziale del KVO.
Il Klinger Oscillator può essere impiegato in due modi: nel primo modo se il trend è ascendente bisogna prendere una posizione al rialzo quando l’oscillatore scende sotto lo zero e poi risale incrociando la trigger line. Viceversa per l’apertura di una posizione ribassista. Abbiamo creato un signal in linguaggio Easy language di Tradestation che prende posizione sul mercato rispettando la logica appena descritta, ossia il trading system compra quando il KVO incrocia, superandola, la trigger line e contemporaneamente la media mobile a 10 periodi è maggiore della media mobile a 50 periodi.
{****************************************
KVO Signal by Stephen J. Klinger
programmed by Enrico Malverti
*****************************************}
Inputs: FastX(34), SlowX(55), TrigLen(13);
Vars: Trigger(0), Klinger(0);
Trigger = XAverage(KVO(FastX, SlowX), TrigLen);
Klinger = KVO(FastX, SlowX);
{Long entry}
IF marketposition = 0 and Klinger Crosses over Trigger and average(C, 10) > Average(C, 50) and Klinger > 0 Then Buy on C;
{Short entry}
{IF marketposition = 0 and Klinger Crosses under Trigger and average(C, 10) < Average(C, 50) Then Sell on C;}
Per testare velocemente gli ingressi l’uscita dalla posizione rialzista è stata realizzata con un trailing stop basato sul parabolic denominato Parabolic ModStop Lx implementato dagli sviluppatori di Omega Research.
{*******************************************************************
Description : Modified Parabolic Long Exit
Provided By : Omega Research, Inc. (c) Copyright 1999
********************************************************************}
Inputs: Acceleration(.2), FirstBarMultp(1.5);
Variables: SAR(0), AF(0), StopPrice(0), MP(0), HighValue(0);
MP = MarketPosition;
If High > HighValue Then
HighValue = High;
If MP = 1 Then Begin
If MP[1] <> 1 Then Begin
StopPrice = Low - Average(TrueRange, 3) * FirstBarMultp;
AF = Acceleration;
HighValue = High;
End
Else Begin
StopPrice = StopPrice AF * (HighValue - StopPrice);
If HighValue > HighValue[1] AND AF < 0.2 Then
AF = AF MinList(Acceleration, 0.2 - AF);
End;
If StopPrice > Low Then
StopPrice = Low;
End;
If MP = 1 Then
ExitLong ("PM") Next Bar at StopPrice Stop;
La strategia di base, testata su dati giornalieri chiude in utile sulla maggior parte dei titoli azionari italiani senza alcun adattamento al time frame e senza un risk management particolarmente sofisticato, quindi la base di partenza data dal Klinger Volume Oscillator è certamente valida. Come si vede anche dalla fig. 1. l’oscillatore consente spesso di entrare in acquisto sulla base di un movimento direzionale massimizzando i guadagni, anche se non è esente da qualche falso segnale di troppo che potrebbe essere limitato ad esempio aggiungendo l’ulteriore condizione che l’oscillatore, al momento dell’incrocio col trigger sia maggiore di zero.
Nel prossimo articolo Proveremo ad applicarlo su dati storici reali.
Commenti all'articolo
- ipotizzo che Lei abbia fatto confusione non incollando la function al posto giusto. Le invierò l'ELS funzionante via email.em - 16/02/2009 19.21.44
- Ho provato a fare il check della sintassi del codice del KVO e mi segnala un errore al listato 10 "token sconosciuto".Ringrazio e saluto cordialmente.Ugo Bonecchi.Ugo Bonecchi - 13/02/2009 10.26.33
- Per un bug del sito mancano dei segni algebrici e il codice non giraem - 11/02/2009 22.27.22


