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 #

Break Above Last Peak
Thema: Gibt es eine Metastock-Formel zur ZigZag - Änderung ?

bueschl Am: 24.09.2002 09:29:43
Gelesen: 1745
Das letzte Bein des Zig-Zag kann sich bekanntlich noch verändern.

Ich suche einen alternativen Zig-Zag, dessen letztes Bein sich nicht mehr verändert. Die Up und Downs sollen also fixiert werden. Dies bedeutet, dass innerhalb der herkömmlichen Zig-Zag-Kurve kleinere Swings angezeigt werden sollen.

Gibt es hierzu bereits Ansätze ? Hat jemand die Metastock-Formel für den herkömmlichen Zig-Zag ?

Danke

bueschl Am: 23.10.2002 13:00:30
Gelesen: 1581
Meine erste Anfrage konnte leider nicht beantwortet werden, daher ein neuer Versuch:

Gibt es einen Indikator, der falsche Zig-Zag-Ausbrüche anzeigen kann? D.h. der Zig-Zag dreht z.B. von unten nach oben, nimmt aber später seine ursprüngliche Richtung nach unten wieder auf. Auf der Zig-Zag-Kurve ist der Ausbruch nach oben dann nicht mehr zu erkennen.

Mit einer Anzeige des "Fehlsignales" wäre mir sehr geholfen.

Danke und Gruss
Bueschl

Global_2 Am: 23.10.2002 15:29:16
Gelesen: 1559
Hallo Bueschl,

es ist nicht leicht, Deine Frage zu beantworten, da sie nicht klar verständlich gestellt ist (sie könnte präziser gestellt werden).

Wenn Du Dir mit Metastock einen Indikator wie folgt erstellst und dann im Chart anzeigen läßt, siehst Du, daß die Peaks und Troughs bei der Peak(), Trough(), PeakBars() und TroughBars()-Funktion erst dann feststehen, wenn definitiv feststeht, daß hier auch ein Peak bzw. Trough (somit Wendepunkt der ZigZag-Funltion) vorliegt. Sprich: die Lage der von den vorherigen Funktionen ermittelten Peaks und Troughs wird nicht mehr nachträglich geändert (sofern ich es richtig sehe).


WS_Peaks

{shows all Peaks}
m:= Input("PercentChange" ,0 ,100 ,3 ) ;
If(0=PeakBars(1,C ,m) ,1 ,0 )

 

 


WS_Troughs

{shows all Troughs}
m:= Input("PercentChange" ,0 ,100 ,3 ) ;
If(0=TroughBars(1,C ,m) ,1 ,0 )

 

Allerdings liegt das Problem woanders. Für die Entwicklung von Handelssystemen (oder selbst auch von Pattern-Matching-Funktionalität) können diese Funktionen nicht einfach in obiger Form eingesetzt werden. Der Grund ist, daß Metastock, um zu ermitteln, ob an einer Bar wirklich ein Peak/Trough vorliegt, auch die folgenden Bars betrachtet, um eindeutig zu sehen, daß die aktuelle Bar ein Wendepunkt ist. Relativ von der Lage der Peak/Troughs blickt die Implementierung der ZigZag-Funktion somit in die Zukunft.

Wenn man das verstanden hat, kann man aber trotzdem auf Basis der ZigZag-Funktion Indikatoren bzw. Handelssysteme entwickeln. Man darf sie eben nur nicht so verwenden, daß ihr Wissen in die Zukunft zu schauen ausgenutzt wird.

Beispielsweise folgt aus If(0=TroughBars(1,C ,m) ,1 ,0 ) == true, daß die nächsten Tage steigen werden, sonst wäre diese Bar kein Wendepunkt für die ZigZag-Funktion. Dieses Wissen darf an an der Bar, an der If(0=TroughBars(1,C ,m) ,1 ,0 ) == true ist, nicht verwendet werden.

Der folgende Indikator von mir ist ein Beispiel, wie die ZigZag-Funktion korrekt eingesetzt wird (ohne ihr Zukunftswissen zu nutzen). Er liefert an einer Bar true, wenn der letzte via der ZigZag-Funktion definitiv ermittelte Peak-Wendepunkt nach oben überwunden wurde (übrigens eine interessante Alternative zum Aroon).

Indikator WS_Break_Above_Last_Peak
m:=3;
cond1:=TroughBars(1 ,C,m) Peak(1,C,m);
cond2:= 0=PeakBars(1,C ,m) AND C>Peak(2,C,m);
If( cond1 OR cond2, 1, 0)

Sonst eine generelle Bemerkung: Wie Metatrader schon seiner Antwort auf die Frage zur Erkennen der Dreiecksformationen erwähnt hat (und da hat er Peak() und Trough() übrigens so genutzt, dass versehentlich auch Zukunftswissen eingehen kann), wäre es am besten, viele kompliziertere Sachen in einer externen Programmiersprache via DLL zu implementieren (wobei die Funktionen von der Metastock Formula-Language aus dann via FMLext() genutzt werden).

Leider ist die Firma EQUIS an Arroganz nicht zu überbieten; ihre Strategie ist, selbst die Schnittstelle zur Entwicklung solcher DLLs praktisch geheimzuhalten. Mal ganz abgesehen davon, daß EQUIS das Metastock SDK zu Mondpreisen verkaufen möchte (für ein paar einfache Header-Files, damit man eine DLL erstellen kann),
ist es inzwischen auch nur nach Registrierung als Entwickler erhältlich, an der grundsätzlich überhaupt nichts auszusetzen ist; Problem ist in der Praxis nur, daß offenbar die Sache nicht akzeptiert wird, wenn man selber kein kommerzielles Unternehmung betreibt. Equis kann wohl kaum erwarten, daß ich ihnen im voraus detailliert den Code und gezielte Ideen von brauchbaren Ansätzen schicke, damit sie mir die möglichst klauen; immerhin taugen ihre völlig überteuerten Plugs-Ins allenfalls nur begrenzt was. Bei Tradestation hingegen ist die Beschreibung der externen Schnittstelle zur Entwicklung von DLLs standardmäßig in der Dokumentation enthalten.

Ich halte die Arroganz von EQUIS für so unübertroffen hoch, daß ich mit Sicherheit kein weiteres Geld für EQUIS-Produkte ausgeben werde. Und es ist auch ein Grund, wieso ich mich bei Foren-Anfragen (wie beispielsweise dieser Anfrage zur ZigZag-Funktion oder auch Sachen wie das Dreiecks-Pattern-Matching) zukünftig zurückhalten und somit dann nicht mehr EQUIS durch Hilfestellung anderer User unterstützen werde. Anders als Metatrader bin ich ja nicht mit einem kommerziellen Metastock-Distributor assoziiert.

Gruß,

Wolfgang

.................................

Global_2 Am: 25.12.2002 13:50:17
Gelesen: 911
Hallo beginner,

Der BreakAboveLastPeak-Indikator funktioniert auch mit Intraday-Daten (beisp. Charts mit TimeFrame= 1 Minute). Wenn er bei Dir nichts anzeigt, liegt das vermutlich daran, dass die ZigZag-Schwankungen innerhalb des im Chart betrachteten Zeitraums nicht ausreichend sind.

Bei den weiter oben im Thread von mir geposteten Experimental-Indikatoren hatte ich mit der Konstante m:=3 eine Mindestveränderung (als Bedingung für ein ZigZag-Reversal) von 3 Prozent festgelegt. Das dürfte für viele Intraday-Charts (insbesondere Minutencharts) aber viel zu hoch sein. Mit m:=0.5 (oder sogar noch kleiner, z.B. 0.3) dürften dagegen in Intraday-Charts Auschläge viel häufiger angezeigt werden. Wenn der Default-Wert für m in der ersten Zeile im folgenden Code mit 3 zu gering ist, diesen einfach auf 0.5 ändern.

 


Break Above Last Peak

m:=Input("ZigZag Mindestveränderung in Prozent", 0.1, 99, 3);

cond1:=TroughBars(1 ,C,m) <PeakBars(1,C,m) AND C>Peak(1,C,m);
pc:=(Peak(1,C,m)-C)*100/Peak(1,C,m);
cond3:= TroughBars(1 ,C,m) >PeakBars(1,C,m) AND pc<m AND C>Peak(2,C,m) AND BarsSince( pc>m) >=PeakBars(1,C,m);
If( cond1 OR cond3, 1, 0)

 

Source / From: TOP
http://www.chartbuch.de/cgi-bin/index.pl?ST=3943&CP=7&F=IIJKJ

Equis and MetaStock® and MetaStock Professional® are registered trademarks of Equis International. Achelis Binary Wave®, The DownLoader®,
Expert Advisor®, OptionScope®, Quotecenter® and Smart Charts® are trademarks of Equis International, a Thomson Reuters company.

TradeStation® Pro, TradeStation® 2000i, OptionStation®, SuperCharts®, PowerEditor® and EasyLanguage®
are registered trademarks of TradeStation Technologies, Inc. Other names and marks referred to are the property of their respective owners.

All information provided on this website is for educational purposes only. Trading involves risk, including possible loss of principal and other losses.

Ten i inne materia³y na tej stronie zosta³y zamieszczone zosta³y jedynie w celach edukacyjnych, nie ponoszê ¿adnej odpowiedzialno¶ci za ich stosowanie.

Gra na gie³dzie i rynkach walutowych (FOREX) niesie ze sob± ryzyko powa¿nych strat finansowych!