Metastock: Formel mit Candlesticks
Hallo zusammen,
ich möchte folgendes System bauen:
In einem Candlestick Chart sollen Kaufsignale generiert werden, wenn z.B. 2 oder 3 Kerzen hintereinander der Körper höher ist als der vorherigere. Die Lunte und der Docht interessiert nicht. Es geht nur um die Körper. Möchte es in einem 60 Min Chart (je Kerze 60 Min) anwenden (Dax Werte). Was aber wichtig wäre ist, daß der Eröffnungskurs (der jeweiligen Kerze) höher ist als der vorherige. Also der Eröffnungskurs der neuen Kerze kann innerhalb des vorherigen Körpers anfangen, aber nicht in der Lunte (unterhalb des Körpers) Also praktisch wie richtige Stufen.
Siehe auch Grafik.
Exit wäre dann, wenn der Körper der neuen Kerze nicht mehr höher wäre als die der vorherigen.
Short Signal würde dann generiert werden, wenn genau die umgekehrten voraussetzungen eintreten würden.
Wie gehe ich da vor und wie kann ich den bezug zu den vorherigen Kerzen bilden. Denn das System muß ja prüfen, ob bei den vorherigen Kerzen ebenfalls diese Voraussetzung erfüllt war und sich das praktisch merken.
Würde mich freuen, wenn mir jemand weiterhelfen könnte. Wenn es zu kompliziert scheint, dann würde ich mich freuen, wenn jemand es vielleicht programmieren könnte. Denke, für jemanden, der sich damit auskennt ist es vielleicht doch nicht so schwierig wie für mich.
Danke.
Hallo daytrading,
ein bisschen Eigeninitiative kann nie schaden. ;-)
Also:
1.) Der Körper der Candel wird durch Open und Close bestimmt. OpenClose = schwarzer Body.
2.) Mit der Ref(Data Array, Periods) Funktion nimmst Du Bezug zu vorhergehenden Werten. Den vorhergehenden Bar sprichts du mit -1 an, den davor mit -2, etc.
C>Ref(C,-1)AND Ref(C,-1)>Ref(C,-2) ist dann wahr wenn das Close des letzten Bar über dem Close des zweitletzten und dieses wiederum über dem des drittletzten Bars liegt.
Damit solltest Du eigentlich in der Lage sein deine Idee zu realisieren.
- ein 'Merken' ist nicht notwendig, du prüfst vom letzten Bar her ob deine Konditionen erfüllt sind.
- der Timeframe ist irrelevant den ein Bar ist ein Bar, egal ob der Chart nun ein Tages-, 60min- oder ein Tickchart ist. :-)
PS: Das ganze lässt sich auch eleganter Lösen wenn du mehr als oder drei Bars in deiner Kondition abfragen möchtest. Aus
L > Ref(L,-1) AND
Ref(L,-1) > Ref(L,-2) AND
Ref(L,-2) > Ref(L,-3))
machst du ganz einfach
Sum(L > Ref(L,-1),3) = 3 was genau dasselbe ist aber erstens eleganter aussieht und zweitens eine Menge Platz spart. :-)
Gruss,
Martin
Hi,
hier der Metastock Code, Beispiel im 60 Minuten Chart:
pds:=Input("Anzahl Tage",1,100,2);
EL:=Sum(White() AND O>Ref(O,-1),pds)=pds;
CL:= CRef(C,-1);
SysStat:=If(Cum(1)=1,0,If(EL,1,If(ES,-1,If((CL AND PREV=1) OR (CS AND PREV=-1),0,PREV))));
SysStat
Hallo Metatrader,
danke für den Code.
Ich habe den versucht im Experten einzufügen, leider bekam ich eine Fehlermeldung wegen dem Input befehl.
Ich hatte den beim Experten in "bullish" eingefügt.
Wenn ich es als Funktion bzw. Indikator einstelle, dann bekomme ich nur eine Linie (denke, daß es dann die Stoplinie ist).
Rot und Grün werden die Kerzen auch nicht.
Irgendwas habe ich wohl falsch gemacht. Liegt es daran, daß ich nur Metastock Pro 7.2 habe ?
mfg
Hallo,
das liegt darin, dass es sich bei der Formel lediglich um einen Indikator handelt, die komplette Umsetzung in Metastock sieht wie folgt aus:
Step 1: Indikator anlegen
Name: System Candle
pds:=Input("Anzahl Tage",1,100,2);
EL:=Sum(White() AND O>Ref(O,-1),pds)=pds;
CL:= C<Ref(C,-1);
ES:=Sum(Black() AND O<Ref(O,-1),pds)=pds;
CS:= C>Ref(C,-1);
SysStat:=If(Cum(1)=1,0,If(EL,1,If(ES,-1,If((CL AND PREV=1) OR (CS AND PREV=-1),0,PREV))));
SysStat
Step 2: Expert anlegen
Higlight Long
SysStat:=Fml("System Candle");
SysStat=1
Highlight Short
SysStat:=Fml("System Candle");
SysStat=-1
Symole:
EL:
SysStat:=Fml("System Candle");
SysStat=1 AND Ref(SysStat,-1)<1 {EL}
ES:
SysStat:=Fml("System Candle");
SysStat=-1 AND Ref(SysStat,-1)>-1 {ES}
CL:
SysStat:=Fml("System Candle");
SysStat=0 AND Ref(SysStat,-1)=1 {CL}
CS:
SysStat:=Fml("System Candle");
SysStat=0 AND Ref(SysStat,-1)=-1 {CS}