MK-Trading
Mitglied seit 11 Jahre 2 Monate

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.

Geschrieben von MK-Trading am
praktikus
Mitglied seit 11 Jahre 2 Monate

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
Mitglied seit 11 Jahre 2 Monate

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
Mitglied seit 11 Jahre 2 Monate

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
Mitglied seit 11 Jahre 2 Monate

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
Beschreiben Sie bitte Ihr Anliegen, damit wir uns auf den Rückruf vorbereiten können.
Ja, ich habe die Datenschutzerklärung zur Kenntnis genommen und willige ein, dass die von mir angegebenen Daten inklusive der Kontaktdaten zwecks Bearbeitung der Anfrage und für den Fall von Anschlussfragen elektronisch erhoben und gespeichert werden. Meine Daten werden dabei nur streng zweckgebunden zur Bearbeitung meiner Anfrage genutzt und nicht ohne Einwilligung weitergegeben. Diese Einwilligung kann jederzeit mit Wirkung für die Zukunft widerrufen werden.
Fragen?

Sie haben Fragen zu ZMP Live? Unser Team steht gerne hilfsbereit zu Ihrer Verfügung. Senden Sie uns gerne eine Nachricht:

Es gilt unsere Datenschutzerklärung

Jetzt registrieren

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