Dienstag, 16. April 2024, 15:00 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

Lieber Besucher, herzlich willkommen bei: INVESTOX-Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

klexer

unregistriert

1

Freitag, 16. Mai 2014, 17:09

Variable abhängig von der Tagesrange in ZIgZag einbinden

ich kann im ZigZag-Indikator zwar eine Variable für die Änderungsrate einstellen, hätte die aber gern in Abhängigkeit zur durchschnittlechen Tagesrange, da sich diese im Laufe von 4 Jahren deutlich ändert.
es geht:
global const Level: [21,20,100,20,100,1,1,I]/100 ;
global calc ZZ: Ref(ZigZag(Ref(HiLo,-1), Level, $, K),-1) ;

aber wenn ich
global calc Tagesrange: Komp(#Ref(GD(High-Low, [5,5,30,5,30,1,2.3057,I], S), -1)#, #T#) ;
global const Level: [22,10,50,15,35,3,1.7282,I]/100 * Tagesrange ;
einsetze, dann meckert er.

gibts da einen Trick ?

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 050

Wohnort: Giessen

2

Freitag, 16. Mai 2014, 17:19

gibts da einen Trick ?


Nein, geht einfach nicht.
If you think it´s expensive to hire a professional, wait until you hire an amateur.

klexer

unregistriert

3

Freitag, 16. Mai 2014, 17:23

;(

das soll die Formel dafür sein, kann das jemand in Investox übersetzen ? :-)

Meta:
Legend ("ZigZag-V02 %p"),
Author ("NEU1234"),
Subchart (false),
ShortCode("ZZ");

//
// Funktionalität der Basisfunktion (V02 vom 29.12.2003):
// - berechnet und zeichnet einen ZigZag Indikator
// - Reversal-Punkte werden anhand eines %-Satzes ermittelt (Input-Parameter)
// - ZigZag-Indikator wird in von Close- to Close-Kurs berechnet
// - markiert die Reversalpunkte im Chart (wahlweise)
// - zeichnet Verbindungslinie zwischen den Reversalpunkten (wahlweise)
// - Print-Ausgabe der ZigZag- und Trigger-Daten (wahlweise)
// - Startpunkt für den ersten Zig oder Zag ist nicht der erste bar,
// sondern jener bar, an dem erstmals eine Abweichung um x-% festgestellt wurde;
// - letzter (noch nicht abgeschlossener) ZigZag wird bis zum letzten Close weitergezeichnet
//

Inputs:
ReversalPzt (5.00, 0.01, 100.00),
Lines (ZigZag,Trigger,both) = ZigZag,
TriggerMark (yes,no) = no,
PrintValues (Print_on, Print_off) = Print_off;

Variables:

ZigZagRichtung, // unbestimmt, up , down

lfdHighBar, lfdHighValue, // Bar-Nr/Value des laufenden neuen High während eines ZigZag
lfdLowBar, lfdLowValue, // Bar-Nr/Value des laufenden neuen Low während eines ZigZag
lastWendeBar, lastWendeValue, // Bar-Nr/Value des letzten festgestellten Wendepunktes
aktTriggerBar, aktTriggerValue, // Bar-Nr/Value, wo letzter Trigger ausgelöst wurde
lasttriggervalue,
triggerUpValue, triggerDownValue, // Wert für aktuelle Trigger der die nächste Wende auslöst
counter (0), // Schleifenzähler
neueRichtung;


///////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Behandlung beim ersten bar (Initialisierungen und einen Abfangspunkt für ZigZag festlegen)
//
///////////////////////////////////////////////////////////////////////////////////////////////////////

If CurrentBar = 1 then
begin
ClearOutput;
lfdHighValue = close;
lfdLowValue = close;
lfdHighBar = 1;
lfdLowBar = 1;

lastWendeBar = 0;
lasttriggervalue = 0;

ZigZagRichtung = "unbestimmt";

// erste Triggermarken berechnen
triggerUpValue = (close+(close/100*ReversalPzt));
triggerDownValue = (close-(close/100*ReversalPzt));

counter = 0;

//
// erste ZigZag-Richtung bestimmen (Schleife, bis eine Richtung festgestellt wird)
//

while counter <= lastbar-1 and ZigZagRichtung = "unbestimmt" do
begin

//
// nur neues laufendes high im noch unbestimmten Zig, nur Trigger nachziehen
//
if close[-counter] > lfdHighValue and close[-counter] > triggerDownValue then
begin
lfdHighValue = close[-counter];
triggerDownValue = (lfdHighValue-(lfdHighValue/100*ReversalPzt));
lfdHighBar = counter+1;
end;

//
// nur neues laufendes low im noch unbestimmten Zig, nur Trigger nachziehen
//
if close[-counter] < lfdLowValue and close[-counter] < triggerUpValue then
begin
lfdLowValue = close[-counter];
triggerUpValue = (lfdLowValue+(lfdlowValue/100*ReversalPzt));
lfdLowBar = counter+1;
end;

//
// erste Richtungsfestlegung = UP bearbeiten
//
if close[-counter] > triggerUpValue then
begin

ZigZagRichtung = "up";

lastWendeValue = lfdLowValue;
lastWendeBar= lfdLowBar;
lasttriggervalue = akttriggervalue;
akttriggerValue = triggerUpValue;
akttriggerBar = counter+1;

if PrintValues = Print_on then Print ("Startpunkt - ZigZag_UP (bar,value): ",
lfdlowbar,CStr(lfdlowvalue,2)," "," Trigger (bar,date,time,value,%)= ",
akttriggerbar,date[-counter],time[-counter], Cstr(akttriggervalue,2),
CStr((((akttriggervalue-lfdlowvalue)/lfdlowvalue)*100),2));

lfdHighValue = close[-counter];
triggerDownValue = (lfdHighValue-(lfdHighValue/100*ReversalPzt));
lfdHighBar = counter+1;

end;

//
// erste Richtungsfestlegung = DOWN bearbeiten
//
if close[-counter] < triggerDownValue then
begin

ZigZagRichtung = "down";

lastWendeValue = lfdHighValue;
lastWendeBar = lfdHighBar;
lasttriggervalue = akttriggervalue;
akttriggerValue = triggerDownValue;
akttriggerBar = counter+1;

if PrintValues = Print_on then Print ("Startpunkt - ZigZag_DOWN (bar,value): ",
lfdhighbar,CStr(lfdhighvalue,2)," "," Trigger (bar,date,time,value,%)= ",
akttriggerbar,date[-counter],time[-counter], Cstr(akttriggervalue,2),
CStr((((akttriggervalue-lfdhighvalue)/lfdhighvalue)*100),2));

lfdLowValue = close[-counter];
triggerUpValue = (lfdLowValue+(lfdlowValue/100*ReversalPzt));
lfdLowBar = counter+1;

end;

//
//falls ZigZagRichtung noch unbestimmt, weiterermitteln (Schleife wird fortgesetzt)
//
counter = counter +1;

end;

end;


/////////////ende first bar behandlung///////////////////////////////////////////////////////////////////


if (Lines = Trigger or Lines = both) and lasttriggervalue > 0 and currentbar <> akttriggerbar and neueRichtung = 1 then
drawline (lastTriggerValue, "Trigger-Line",stylesolid, 2, magenta);


/////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Beim nächsten ZigZag Wendepunkt die ZigZag Linie zeichnen
//
///////////////////////////////////////////////////////////////////////////////////////////////////////

If (currentbar = lastWendeBar) and (Lines = ZigZag or Lines = both) then
drawline (lastWendeValue, "ZigZag-Line",stylesolid, 3, blue);


///////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Beim nächsten Trigger-Bar den Auslösetrigger einzeichnen
//
///////////////////////////////////////////////////////////////////////////////////////////////////////

If currentbar = aktTriggerBar then
begin
if TriggerMark = yes and ZigZagRichtung = "down" then
drawsymbol (aktTriggerValue, "Trigger-Down", symboldonut,10, red,red);
if TriggerMark = yes and ZigZagRichtung = "up"
then drawsymbol (aktTriggerValue, "Trigger-Up", symboldonut,10, green,green);

if (Lines = Trigger or Lines = both) and (lasttriggervalue > 0) then
drawline (aktTriggerValue, "Trigger-Line",stylesolid, 2, magenta);

//
// nächste Wendemarke ermitteln, nächsten Richtungswechsel bestimmen
// (Schleife, bis Gegen-Richtung festgestellt wird)
//

neueRichtung = 0;
counter = 1;

while counter <= ((lastbar-1)-currentbar) and neueRichtung = 0 do
begin

//
// nur neues laufendes high im noch unbestimmten ZigZag, nur Trigger nachziehen
//
if ZigZagRichtung = "up" and close[-counter] > lfdHighValue then
begin
lfdHighValue = close[-counter];
triggerDownValue = (lfdHighValue-(lfdHighValue/100*ReversalPzt));
lfdHighBar = currentbar + counter;
end;

//
// nur neues laufendes low im noch unbestimmten ZigZag, nur Trigger nachziehen
//
if ZigZagRichtung = "down" and close[-counter] < lfdLowValue then
begin
lfdLowValue = close[-counter];
triggerUpValue = (lfdLowValue+(lfdlowValue/100*ReversalPzt));
lfdLowBar = currentbar + counter;
end;


//
// Bearbeitung Richtungswechsel from DOWN to UP
//

// Richtungswechsel wird ausgelöst/getriggert
if ZigZagRichtung = "down" and close[-counter] > triggerUpValue then
begin

ZigZagRichtung = "up";
neueRichtung = 1;

lastWendeValue = lfdLowValue;
lastWendeBar= lfdLowBar;
lasttriggervalue = akttriggerValue;
akttriggerValue = triggerUpValue;
akttriggerBar = currentbar + counter;

if PrintValues = Print_on then Print ("Start Folge - ZigZag_UP (bar,value): ",
lfdlowbar,CStr(lfdlowvalue,2)," "," Trigger (bar,date,time,value,%)= ",
akttriggerbar,date[-counter],time[-counter], Cstr(akttriggervalue,2),
CStr((((akttriggervalue-lfdlowvalue)/lfdlowvalue)*100),2));

lfdHighValue = close[-counter];
triggerDownValue = (lfdHighValue-(lfdHighValue/100*ReversalPzt));
lfdHighBar = currentbar + counter;

end;


//
// Bearbeitung Richtungswechsel from UP to DOWN
//

// Richtungswechsel wird ausgelöst/getriggert
if ZigZagRichtung = "up" and close[-counter] < triggerDownValue then
begin

ZigZagRichtung = "down";
neueRichtung = 1;

lastWendeValue = lfdHighValue;
lastWendeBar = lfdHighBar;
lasttriggervalue = akttriggerValue;
akttriggerValue = triggerDownValue;
akttriggerBar = currentbar + counter;

if PrintValues = Print_on then Print ("Start Folge - ZigZag_DOWN (bar,value): ",
lfdhighbar,CStr(lfdhighvalue,2)," "," Trigger (bar,date,time,value,%)= ",
akttriggerbar,date[-counter],time[-counter], Cstr(akttriggervalue,2),
CStr((((akttriggervalue-lfdhighvalue)/lfdhighvalue)*100),2));

lfdLowValue = close[-counter];
triggerUpValue = (lfdLowValue+(lfdlowValue/100*ReversalPzt));
lfdLowBar = currentbar + counter;

end;

counter = counter +1;

end;

If (currentbar = lastWendeBar) and (Lines = ZigZag or Lines = both) then
drawline (lastWendeValue, "ZigZag-Line",stylesolid, 3, blue);

end;

If (currentbar = lastBar) and (Lines = ZigZag or Lines = both) then
drawline (close, "ZigZag-Line",styledash, 2, blue);

// END - See more at: http://www.tradesignalonline.com/lexicon/view.aspx?id=ZigZag+(ZIG)#sthash.Wz6aezIk.dpuf

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »klexer« (16. Mai 2014, 17:30)


Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 050

Wohnort: Giessen

4

Freitag, 16. Mai 2014, 18:51

das soll die Formel dafür sein, kann das jemand in Investox übersetzen ? :-)


geht nur mit VB Script
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Snoopy

unregistriert

5

Freitag, 16. Mai 2014, 19:49

Hallo Klexer,
ich würde fast sagen, der Code und (Doku) berechnet und zeichnet den ZigZag Indikator in %, nicht abhängig von der Tagesrange, also den normalen ZigZag Indikator.

Du kannst eventuell um beim ZigZag Indikator die Tagesrange mit einfließen zu lassen sagen, bei einer Range größer 50 Punkte ist ZigZag indikator 1 gültig und bei einer Range unter 50 Punkten ist ZigZag Indikator 2 gültig usw.

Gruß Snoopy

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Snoopy« (16. Mai 2014, 20:00)


sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

6

Samstag, 17. Mai 2014, 21:02

Hallo,

gar es beim (Investox-)ZigZag-Indikator nicht eine Einschränkung, dass wenn man ihn als "normalen" Indikator zur Signalgenerierung verwendet, dass er dann einen Zukunftblick hat?
Ist das noch aktuell, ich habe schon lange nichts mehr mit dem ZZ gemacht.

Viele Grüße,
Sten

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 050

Wohnort: Giessen

7

Sonntag, 18. Mai 2014, 12:52

Um die Umkehrpunkte zu bestimmen muss der Zigzag natürlich nach vorne schauen, ob eine entsprechende Gegenbewegung entstanden ist.
Jenachdem wie man den Indikator nun einsetzt, kann man damit natürlich einen Zukunftsblick provozieren.
Das ist allerdings kein Investoxtypisches Problem, sondern liegt in der Natur dieses Indikators.

Der "Gewinnexit" bei einem Longtrrade am Zigzag High wäre so eine Zukunftsblick Falle.

Leider verwendet der ZigZag in Investox nur eine Zeitreihe (typisch CLOSE), weswegen man die High / Low Bewegung damit nicht einfangen kann.
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Snoopy

unregistriert

8

Sonntag, 18. Mai 2014, 18:56

Hallo Sten,
kommt darauf an, an welcher Stelle der ZigZag abgefragt wird.
Gruß Snoopy

klexer

unregistriert

9

Montag, 19. Mai 2014, 10:40

HiLo integriert

[quote='Lenzelott',index.php?page=Thread&postID=70432#post70432]Leider verwendet der ZigZag in Investox nur eine Zeitreihe (typisch CLOSE), weswegen man die High / Low Bewegung damit nicht einfangen kann. [/quote]

global const Level: [21,20,100,20,100,1,1,I]/100 ;
global const HiLo: If(low < Ref((LLV(low,20)+ HHV(high,20) )/2,-1), low, high);
global calc ZZ: Ref(ZigZag(Ref(HiLo,-1), Level, $, K),-1) ;

ich hab die High/low in meiner Berechnung berücksichtigt und funktioniert. Filtert dadurch manche Entries in Seitwärtsphasen raus.

Das Signal bzw. der Indikator wird erst wirksam, wenn die Schwelle überschritten ist.

Dann noch einen TP-Level dazu und fertig :-)
TP nimmt nur die ganz großen Bewegungen, ansonsten exit durch Gegensignal. Funktioniert im EURJPY sehr gut in 1 Std.

Scheint recht stabil zu sein, da nur 1 Indikator einstellbar und evtl ein TP.
»klexer« hat folgendes Bild angehängt:
  • ZigZag plus TP-Level.PNG

Snoopy

unregistriert

10

Montag, 19. Mai 2014, 12:51

Hallo Klexer,

Zitat

Das Signal bzw. der Indikator wird erst wirksam, wenn die Schwelle überschritten ist


So habe ich es vor kurzem auch gemacht. Bin noch am testen. Deine Kapitalkurve sieht aber ein bißchen nach Zukunft aus.

Gruß Snoopy

klexer

unregistriert

11

Montag, 19. Mai 2014, 13:10

Hallo Snoopy
ja, die Kurve sieht verdächtig aus. sehr verdächtig...

ich habe mein HiLo im ZigZag auf ref -1 gesetzt und der ZigZag selbst ist noch dazu im Ref -1.
Somit wird der Level erst nach 3 Perioden nach der Umkehr aktiv und somit einige Umkehrpunkte ignoriert, weil der Kurs den Level nicht erreicht oder die Richtung sich bereits umgekehrt hat.

Die Entries hab ich überprüft, sind korrekt.

Ich suche immer noch nach dem Zukunftsblick und wenn da einer ist, ist er verdammt gut versteckt :-)

Snoopy

unregistriert

12

Montag, 19. Mai 2014, 19:34

Hallo Klexer,
wann erfolgt der Entry, 3 Perioden nach dem Wendepunkt?
Gruß Snoopy

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

13

Dienstag, 20. Mai 2014, 09:08

Hallo,

beim ZigZag genügt es nicht, die Abfrage eine bestimmte Anzahl Perioden zurückzuverlegen. Es kann zum Beispiel sein, dass ein Abwärtstrend bereits 200 Perioden andauert. In den letzten 30 Perioden hat sich der Gegentrend ergeben: erst dann wird ein neuer Wendepunkt eingefügt (30 Perioden zurück!).
Eine definierte Anzahl Perioden Zukunftsblick hat man dagegen beim Indikator "Kursprognose", der die Trends entsprechend nicht so "perfekt" darstellt wie der ZigZag.

Viele Grüße
Andreas Knöpfel