PureBytes Links
Trading Reference Links
|
For an oscillator Osc, supposed in the range [-100,000,100,000] the
respective code will be
y=Cum(1);Ly=LastValue(y);
Osc=StochD(); //your Oscillator here
Limit=100000;
x=IIf(Ref(Osc,-1)==HHV(Osc,3),Ref(Osc,-1),-Limit);
n=50;//the lookback period
x=IIf(y>Ly-n,x,-Limit);
xmax=LastValue(Highest(x));
x=IIf(x==xmax,-Limit,x);
xmax=LastValue(Highest(x));
medH=xmax;
x=IIf(x==xmax,-Limit,x);
xmax=LastValue(Highest(x));
medH=(medH+xmax)/2;
xx=IIf(Ref(Osc,-1)==LLV(Osc,3),Ref(Osc,-1),Limit);
xx=IIf(y>Ly-n,xx,Limit);
xxmin=LastValue(Lowest(xx));
xx=IIf(xx==xxmin,Limit,xx);
xxmin=LastValue(Lowest(xx));
medL=xxmin;
xx=IIf(xx==xxmin,Limit,xx);
xxmin=LastValue(Lowest(xx));
medL=(medL+xxmin)/2;
Title="medH="+WriteVal(medH)+", medL="+WriteVal(medL);
Plot(Osc,"",1,8);
Plot(IIf(y>Ly-n, medH,Null),"",4,1);Plot(IIf(y>Ly-
n,medL,Null),"",5,1);
Note that you will need enough bars n in order to have at least 3
Peaks/Troughs.
Dimitris
--- In amibroker@xxxxxxxxxxxxxxx, "DIMITRIS TSOKAKIS" <TSOKAKIS@xxxx>
wrote:
>
> DC,
> If I understand your description, if x is a Peak value[ according
to
> your Peak definition] then your median x is the average of the 2nd
> and 3rd highest x for the last n=20 days.
> I will try the descriptive way:
> 1. Define x
> 2. Find the highest x and make it zero
> 3. Find the next highest x. Save it and then make it zero.
> 4. Find the next highest x. Save it and
> 5. Calculate the median as an average of the saved values.
> This can be done with
>
> y=Cum(1);Ly=LastValue(y);
> x=IIf(Ref(H,-1)==HHV(H,3),Ref(H,-1),0);//your Peak definition
> n=20;//the lookback period
> x=IIf(y>Ly-n,x,0);
> xmax=LastValue(Highest(x));//find the highest x
> x=IIf(x==xmax,0,x);//and make it 0
> xmax=LastValue(Highest(x));//find the next highest x
> medH=xmax;//save it
> x=IIf(x==xmax,0,x);//and make it 0
> xmax=LastValue(Highest(x));//find the next highest x
> medH=(medH+xmax)/2;//calculate the median
> //Repeat the same procedure for troughs
> xx=IIf(Ref(L,-1)==LLV(L,3),Ref(L,-1),100000);
> xx=IIf(y>Ly-n,xx,100000);
> xxmin=LastValue(Lowest(xx));
> xx=IIf(xx==xxmin,100000,xx);
> xxmin=LastValue(Lowest(xx));
> medL=xxmin;
> xx=IIf(xx==xxmin,100000,xx);
> xxmin=LastValue(Lowest(xx));
> medL=(medL+xxmin)/2;
> Title="medH="+WriteVal(medH)+", medL="+WriteVal(medL);
>
> The medH, medL are already defined and may be used in Plot
statements
> or further calculations.
>
> I tried to avoid loops for better [?] understanding.
> Dimitris
> --- In amibroker@xxxxxxxxxxxxxxx, <dennisconn@xxxx> wrote:
> > Hi to all,
> >
> > I want to thank everyone who's responded for their help - I
really
> do appreciate the fact that you've been willing to take the time to
> help with this.
> >
> > But there's been some confusion as to the nature of my median
> calculation request, so I'm posting this in an attempt to better
> define the nature of the problem.
> >
> > For those who are familiar with Joe Dinapoli's Oscillator
> Predictor, that is what I'm attempting to recreate in AFL. For
those
> who are not familiar with it, his Predictor calculates a price at
> which one would take profits in a highly overbought or oversold
> condition, based on the average overbought or oversold level of an
> oscillator. In other words, if a person knows ahead of time the
price
> at which a market would be highly overbought or oversold, a pre-
> placed order to exit at that price will catch spike moves and get
one
> out BEFORE the market takes back the profits one has. Using only
> daily charts, Joe looks for the average value of the three highest
> peaks to determine a reasonable approximation of the average
> realistic overbought level. He does the same for the three lowest
> troughs to determine the average realistic oversold level.
> >
> > *** I prefer to use the median value of the last four peaks (or
> troughs) in order to eliminate the most extreme values from the
> calculation. ***
> >
> > His lookback range is roughly six months (120 bars) or so. The
> oscillator he uses is non-normalized, so the troughs will ALL be
> negative values.
> >
> > For my purposes, I define a peak in the oscillator as the highest
> value reached during an excursion above zero. A trough is the
lowest
> value reached during an excursion below zero. With that in mind, I
> have already created two arrays; one array contains all the peaks,
> the other contains the troughs. If a given day in either array is
NOT
> a peak or trough based on the above definition, then that day's
array
> element = ZERO. So here's an example of what my trough array would
> look like over the last 20 bars:
> >
> > 0, 0, -11, 0, 0, 0, -13, 0, -7, 0, -9, 0, 0, 0, -4, 0, -12, 0,
0, -2
> >
> > Here is the brainteaser (to me):
> >
> > Let's assume my lookback range is just these last 20 bars;
> obviously, the four lowest troughs are -11, -13, -9, and -12. I
need
> to find a way to pick those four values out of the array in order
to
> find the median value (which will equal -11.5).
> >
> > That's IT - that's ALL I'm trying to do - I'm pretty sure I can
> figure out everything else I need to do.
> >
> > Now I know it's possible to allow the user to input the number
> manually, by way of "Param", and that's all well and good. But I
want
> to program it for user convenience (as well as cutting down on user
> error), and also be able to plot the resulting OB/OS price
> predictions as bands on the price chart (which will be all the more
> effective when Tomasz gets around to allowing plotting of
indicators
> beyond the last bar!).
> >
> > Anyway, again, ALL I need is a bit of direction on the median
> calculation in order to have the formula handle everything in the
> Oscillator Predictor's output.
> >
> > If I ever get this figured out, or someone else does, I'll be
sure
> to post it to the AFL library - this could be a very useful tool
for
> capturing profits, especially if the output correlates with some
> other projection method, like Cardwell's positive and negative
> reversals in the RSI, or Fibonacci projections, or whatever other
> tool.
> >
> > If you've managed to read this far, then...
> >
> > Thanks again & best regards,
> >
> > DC
> >
> > [Non-text portions of this message have been removed]
------------------------ Yahoo! Groups Sponsor --------------------~-->
Make a clean sweep of pop-up ads. Yahoo! Companion Toolbar.
Now with Pop-Up Blocker. Get it for free!
http://us.click.yahoo.com/L5YrjA/eSIIAA/yQLSAA/GHeqlB/TM
--------------------------------------------------------------------~->
Check AmiBroker web page at:
http://www.amibroker.com/
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/amibroker/
<*> To unsubscribe from this group, send an email to:
amibroker-unsubscribe@xxxxxxxxxxxxxxx
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|