Although I know the answer, I am still waiting for
an AFL instruction like :
EnableScript( "Metastock" );
Regards, Ton.
----- Original Message -----
From: wavemechanic
To: amibroker@xxxxxxxxxps.com
Sent: Sunday, June
24, 2007 10:39 PM
Subject: Re:
[amibroker] Wolf Wave
I probably no longer "speak" Metastock very well
but I don't think that the last line of Col A is correct and should
generate an error. In addition, something must be missing because
it does not appear that this code provides the bottom line Wolfe Wave
result of price and time targets for the post-5th wave leg. These
targets are generated by a Tradestation code (see below) written by
Clyde Lee, Sytech, which was posted on another board and can be
converted to AB. An idealized Wolfe Wave from the Wolfe Wave
website is also given below. As shown, a trendline is formed with
1, 3, 5 (can be somewhat higher/lower). The time target is
the apex of the triangle produced from trendlines 1,3 and 2,4.
Trendline 1,4 defines the price target at the time
target.
Wolfe Waves are easy to spot by eye so you might
want to go that route. As is characteristic of pattern codes
(e.g., Wolfe Waves, Fibonacci Patterns, etc.) pivots must be defined and
they rarely follow the same defining conditions (e.g., % change).
Eyeballing, however, can quickly pick them out and using, for
example, the logic in the KB code at http://www.amibroker.com/kb/2006/05/06/discretionary-equity/ it is possible to click on pivots (not unlike the way
some of the charting tools (e.g., pitchfork) work), specify their names
(e.g., 1, 2, etc.), and then use them for plotting or AA output.
Until this functionality is available to AB users, it should be
possible to use the KB code approach to write a function that can be
used pattern charting, including Wolfe Waves.
Enjoy.
Bill
=========================
========================================
Tradestation code:
Inputs: NBars(13), {Number of
bars for Swing_Lee pivot picking }
MaxBars(250);
{Maximum number of bars forward to search for }
{Match/Crossing of ETA lines to set
end EPA }
{If this is set to a very high
number, the time}
{to
compute and plot will become excessive. }
Vars:
TPCount(0),Direct(0),
HoldPrice(0),BarsBk(0),
Slope1(0),Slope2(0),
ETA1(0),ETA2(0),EPA(0),
NewDate(0),NewTime(0);
Arrays:
TPDate[4](0),TPTime[4](0),TPBar[4](0),TPPrice[4](0),TPDirect[4](0);
Direct=Swing_Lee_Simple(NBars,False);
If Sign(Direct)<>Sign(Direct[1]) then
begin
BarsBk=AbsValue(Direct);
{Found a TurningPoing so increase
count}
TPCount=TPCount+1;
{Save the proper price}
If Direct<0 then
HoldPrice=High[BarsBk]
else
HoldPrice=Low [BarsBk];
{Push the Stack}
For Value1=1 to 3 begin
TPDate[Value1]
=TPDate[Value1+1];
TPTime[Value1]
=TPTime[Value1+1];
TPBar[Value1]
=TPBar[Value1+1];
TPPrice[Value1]
=TPPrice[Value1+1];
TPDirect[Value1]=TPDirect[Value1+1];
End;
{Save Current Data}
TPDate[4]
=Date[BarsBk];
TPTime[4]
=Time[BarsBk];
TPBar[4]
=CurrentBar-BarsBk;
TPPrice[4] =HoldPrice;
TPDirect[4]=Sign(Direct);
Plot1[BarsBk](HoldPrice,"TP");
If TPCount>3 then begin
{If we have 4 TP's then we can look
for WW}
Condition1=False;Condition2=False;
Slope1=(TPPrice[3]-TPPrice[1])/(TPBar[1]-TPBar[3]);
Slope2=(TPPrice[4]-TPPrice[2])/(TPBar[2]-TPBar[4]);
If TPDirect[1]>0 then begin
{Look for Bullish WW}
Condition1=
TPPrice[4]>TPPrice[3] and
TPPrice[4]<TPPrice[2]
and
TPPrice[3]<TPPrice[1]
and
TPPrice[4]>TPPrice[1]
and
Slope1
<Slope2 ;
End
Else Begin
{Look for Bearish WW}
Condition2=
TPPrice[4]<TPPrice[3]
and
TPPrice[4]>TPPrice[2]
and
TPPrice[3]>TPPrice[1]
and
TPPrice[4]<TPPrice[1]
and
Slope1
>Slope2 ;
End;
{Plot the wave and lines if it
exists}
If Condition1 or Condition2 then
begin
ETA1=TL_NEW(TPDate[1],TPTime[1],TPPrice[1],TPDate[3],TPTime[3],TPPrice[3]);
ETA2=TL_NEW(TPDate[2],TPTime[2],TPPrice[2],TPDate[4],TPTime[4],TPPrice[4]);
EPA
=TL_NEW(TPDate[1],TPTime[1],TPPrice[1],TPDate[4],TPTime[4],TPPrice[4]);
Value5=TL_New(Date,Time,TL_GetValue(ETA1,Date,Time),
Date,Time,TL_GetValue(ETA2,Date,Time));
Value1=mod(tpcount,6)+2;
Value1=red;
TL_SetColor(ETA1,VALUE1);
TL_SetColor(ETA2,VALUE1);
TL_SetColor(EPA
,VALUE1);
TL_SetColor(Value5,Red);
TL_SetSize(Value5,3);
Value2=0;
Value1=0;
While Value2=0 and Value1<
MaxBars begin
Value2=BarsToDate_Time(TPBar[4]-TPBar[3], Value1,
NewDate, NewTime);
Value3=TL_GetValue(ETA2,
NewDate, NewTime)-TL_GetValue(ETA1, NewDate,
NewTime);
If Condition1 and Value3>0 then
Value2=0;
If Condition2 and Value3<0 then
Value2=0;
Value1=Value1+1;
End;
If Value2<>0 or Value1=MaxBars
then begin
TL_SetEnd(ETA1, NewDate, NewTime,
TL_GetValue(ETA1, NewDate, NewTime));
Value7=TL_GetValue(ETA2,
NewDate, NewTime);
TL_SetEnd(ETA2, NewDate, NewTime,
Value7);
Value8=Text_New(NewDate,NewTime,Value7,"ETA");
Text_SetStyle(Value8, 0, 2);
Value7=TL_GetValue(EPA ,
NewDate, NewTime);
TL_SetEnd(EPA , NewDate, NewTime,
Value7);
Value8=Text_New(NewDate,NewTime,Value7,"EPA");
Text_SetStyle(Value8, 0, 2);
End;
End;
End;
End;
|