MetaStock™ Zone Forum & FAQ Artykuły Linki Elliott Waves EasyLanguage™ Zone

A B C D E F G H I J K L M N O P R S T U V W Y Z #

Driver's Q Oscillator

From: draggiedriver <draggiedriver[at]yahoo.com.au>
To: equismetastock[at]yahoogroups.com <equismetastock[at]yahoogroups.com>
Date: Thursday, October 13, 2005, 1:52:31 AM
Subject: [EquisMetaStock Group] Normalising the 'Q'
Files: <none>

Hi everyone.

Here's my story. I wanted to have a look at exit techniques; and I found Richard Dale's dll for an ATR-based exit - I love it: but Richard makes the point that the ATR multiplier varies according to one's outlook - 2.5 for the short-termers, 3.5 to 4 for us slower types.

That got me thinking: what if one started out as a long-termer, but saw a good hard trend developing such that it would be prudent to take the profits off the table earlier. I had a look at perhaps using the Aroon oscillator as a factor to the ATR multiplier, but perhaps it's a little too coarse: that's where I joined the 'Q'.

Plagiarising shamelessly from Jose's site, I saw how he normalised the MACD and came up with this:

Driver's Q Oscillator

{Plagiarised shamelessly from Jose Silva and David Sepiashvili}

{Inputs}
m:=Input("% Scalar trend period",1,25,4);
n:=Input("% Scalar noise period",1,500,250);
cf:=Input("% Scalar correction factor",1,250,2);
p1:=Input("First moving average periods",1,200,7);
p2:=Input("Second moving average periods",1,200,15);
p3:=Input("Normalising periods, (1=none)",
1,2520,252);
{Q Directional indicator - from Equis}
rev:=Mov(C,p1,E)-Mov(C,p2,E);
pds:=If(rev>0,1,-1);
dc:=ROC(C,1,$);
cpc:=If(pds<>Ref(pds,-1),0,(dc*pds)+PREV);
trend:=If(pds<>Ref(pds,-1),0,(cpc*(1/m))+(PREV*(1-(1/m))));
dt:=cpc-trend;
noise:=cf*Sqrt(Mov(dt*dt,n,S));
Q:=trend/noise;
{Normalising}
Qnorm:=(Q-LLV(Q,p3)/(HHV(Q,p3)-LLV(Q,p3)+.000001)*100);
Qnorm;

It's hopeless! and I have no idea where I went wrong. All I want is a bounded Q oscillator. (The B is no good for my purposes as I'm long only.) Puleeease?

Newton said that he merely stood on the shoulders of giants; so I'm quite prepared to ask for a hand up.

Many thanks in advance

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

From: Jose Silva <josesilva22[at]yahoo.com>
To: equismetastock[at]yahoogroups.com <equismetastock[at]yahoogroups.com>
Date: Thursday, October 13, 2005, 8:51:02 AM
Subject: [EquisMetaStock Group] Re: Normalising the 'Q'
Files: <none>

DD, that's some story - I look forward to the film version... : )

The easiest way to normalize Q (or any plot), is this way:


Driver's Q Oscillator

{Plagiarised shamelessly from Jose Silva and David Sepiashvili}

{Inputs}
m:=Input("% Scalar trend period",1,25,4);
n:=Input("% Scalar noise period",1,500,250);
cf:=Input("% Scalar correction factor",1,250,2);
p1:=Input("First moving average periods",1,200,7);
p2:=Input("Second moving average periods",1,200,15);
p3:=Input("Normalising periods, (1=none)",
1,2520,252);
{Q Directional indicator - from Equis}
rev:=Mov(C,p1,E)-Mov(C,p2,E);
pds:=If(rev>0,1,-1);
dc:=ROC(C,1,$);
cpc:=If(pds<>Ref(pds,-1),0,(dc*pds)+PREV);
trend:=If(pds<>Ref(pds,-1),0,(cpc*(1/m))+(PREV*(1-(1/m))));
dt:=cpc-trend;
noise:=cf*Sqrt(Mov(dt*dt,n,S));
Q:=trend/noise;
{Normalising}
Qnorm:=(Q-Lowest(Q))/Max(Highest(Q)-Lowest(Q),.000001)*100;
Qnorm

 

 

The above code will produce a somewhat wild plot for the first 100~300 bars or so, as the normalizing code finds new plot value extremes. This will settle down to a Q-identical plot (0~100% bounded) after this initial period.

You now, I've applied the above to the wife, and it works just great:

---8<--------------
Manic:=Highest(MoodSwings);
Depressive:=Lowest(MoodSwings);

MoodNormalized:=(MoodSwings-Depressive)
/Max(Manic-Depressive,.000001)*100;

MoodNormalized
---8<--------------

Warning:
The above will produce a somewhat interesting time for the first year of marriage or so, as the normalizing code finds new mood extremes.

jose '-)
http://www.metastocktools.com

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

From: draggiedriver <draggiedriver[at]yahoo.com.au>
To: equismetastock[at]yahoogroups.com <equismetastock[at]yahoogroups.com>
Date: Thursday, October 13, 2005, 8:59:10 PM
Subject: [EquisMetaStock Group] Re: Normalising the 'Q'
Files: <none>

Hi Jose

Am working on the script now. I see it as a 'triumph over adversity' saga chronicling the adventures of a naive but determined novitiate to the black arts of TA.

Have you pencilled in for a Yoda-type appearance as the Oracle. :p

I liked your moodswing code, although I think you may have minimised the utimately random nature of the underlying function. 'Normal' may turn out to be an illogical premise.

BTW, I got the code to work overnight - a misplaced ) don't you know!

Cheers n Beers, and Thanks

DD

Source / From: TOP
equismetastock[at]yahoogroups.com  

Equis and MetaStock® and MetaStock Professional® are registered trademarks of Equis International. Achelis Binary Wave®, The DownLoader®,
Expert Advisor®, OptionScope®, Quotecenter® and Smart Charts® are trademarks of Equis International, a Thomson Reuters company.

TradeStation® Pro, TradeStation® 2000i, OptionStation®, SuperCharts®, PowerEditor® and EasyLanguage®
are registered trademarks of TradeStation Technologies, Inc. Other names and marks referred to are the property of their respective owners.

All information provided on this website is for educational purposes only. Trading involves risk, including possible loss of principal and other losses.

Ten i inne materiały na tej stronie zostały zamieszczone zostały jedynie w celach edukacyjnych, nie ponoszę żadnej odpowiedzialno¶ci za ich stosowanie.

Gra na giełdzie i rynkach walutowych (FOREX) niesie ze sob± ryzyko poważnych strat finansowych!