MK-Trading
Member for 11 years 3 months

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.

Submitted by MK-Trading on
praktikus
Member for 11 years 2 months

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

metatrader
Member for 11 years 2 months

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

MK-Trading
Member for 11 years 3 months

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

metatrader
Member for 11 years 2 months

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}

Rückrufservice
Please describe your request so that we can prepare for the callback.
Yes, I have read the Privacy Policy note and I consent that the data provided by me, including the contact data, for the processing of the inquiry and in case of questions are electronically collected and stored. My data will only be used strictly for my request and will not be passed without my consent. This consent can be revoked any time with effect for the future.'
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Help?

Do you have questions about ZMP Live? Our team will be happy to help you. Please feel free to send us a message:

Our privacy policy applies

CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Register now

Jetzt registrieren und ZMP Live+ 14 Tage kostenlos testen!
  • Dauerhaft kostenfrei
  • Keine Zahlungsinformationen erforderlich