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 #

Darvas Box - Classic by Matthew Ford
These formulas were developed by Matthew Ford. They provide a method of plotting
the parameters of the Classic Darvas Box in Metastock. If you are unsure about how to copy and paste these in Metastock, please follow this link for detailed instructions. (Right click on the link, and select SAVE TARGET AS. This will download the PDF file.) The first formula is "Darvas High" which identifies new period highs followed by three lower highs.

Darvas High

Periods:=100; { this is the only place the number of periods is set}
If((Ref(H,-3) >= Ref(HHV(H,Periods),-4))
AND Ref(H,-3) > Ref(H,-2)
AND Ref(H,-3) > Ref(H,-1)
AND Ref(H,-3) > H,
Ref(H,-3), PREVIOUS );

New Darvas High

dh:= Fml("Darvas High");
def:=IsDefined(dh) AND IsDefined(Ref(dh,-2));
(def AND Ref(def,-1)=0) + (dh AND Ref(dh,-1)<>dh);

New Darvas Low

dh:= Fml("Darvas High");
ndl:=(Ref(L,-3) < Ref(L,-2) AND Ref(L,-3) < Ref(L,-1)
AND Ref(L,-3) < L AND Ref(H,-2) < dh
AND Ref(H,-1) < dh AND H < dh);
def:=IsDefined(dh) AND IsDefined(Ref(dh,-1));
(def AND Ref(def,-1)=0)+ (ndl AND (Ref(ndl,-1) < 1))

Darvas Low

If( Fml("New Darvas Low") , Ref(L,-3), PREVIOUS);

Darvas Box End

def:=IsDefined(end) AND IsUndefined(Ref(end,-1));
(def AND Ref(def,-1)=0)+ (end AND Fml("New Darvas Low"))

We are now in a position to plot the High and Low of the Darvas box.

Darvas Box High

dbe:=Fml("Darvas Box End");
dbhi:=If(dbe AND IsDefined(Ref(dbe,-1)), Fml("Darvas High"), PREVIOUS);
If(dbhi=0,H+0.0000001,dbhi)

Darvas Box Low

dbe:=Fml("Darvas Box End");
bl:=If(dbe AND IsDefined(Ref(dbe,-1)), Fml("Darvas Low"), PREVIOUS);
If(bl=0,L-0.0000001,bl)

Next we need to develop the Sell Indicator. First we look for possible sell signals.

Darvas Poss Sell

dsl:=L < Fml("Darvas Box Low");
def:=IsDefined(dsl) AND IsDefined(Ref(dsl,-1));
(def AND Ref(def,-1)=0)+(dsl AND (Ref(dsl,-1)<dsl))

Darvas Sell

def:=IsDefined(sell) AND IsDefined(Ref(sell,-1));
((def AND Ref(def,-1)=0) + (sell = 0 AND Ref(sell,-1)=1))

dc:= Fml("darvas sell");

{ change the following line to H>Fml("Darvas Box High") .. for Classic Darvas }

db:= C>Fml("Darvas Box High") AND
dto:=If(db AND PREVIOUS=0,1,If(dc,0,PREVIOUS));
dto AND (Ref(dto,-1) =0)

Using these formulas it is simple to create a new Metastock Expert Advisor for Darvas. Create a New advisor, call it Darvas and fill in the following tabs

For the Trends tab I used the somewhat arbitrary

Bullish

C >= Fml("Darvas Box Low");

Bearish

C < Fml("Darvas Box Low");

For Symbols tab use

Sell: down arrow graphic, formula Fml("Darvas Sell")

Sell: formula Fml("Darvas Sell") and some suitable text message such as "sell on next open"

(weird generates these signals : \ - Peter)

Source / From: TOP