Dienstag, 16. April 2024, 08:54 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

W.D.a Pisa

unregistriert

1

Montag, 22. Oktober 2012, 15:15

Überwachungslinie ab Hoch- / Tiefpunkt

Hallo zusammen,

ich versuche mittels Überwachungslinien Widerstände in einem Chart darstellen zu lassen, schaffe es jedoch nicht, die Linie exakt am Hochpunkt beginnen zu lassen. Ich habe inzwischen beide Methoden für die Überwachungslinie herangezogen, ende aber immer wieder bei dem selben Fehler (Linie kann nicht gezeichnet werden, da Datum identisch oder fehlerhafte Koordinaten...).

Anbei habe ich meinen Code eingestellt und ein Bild eingefügt, um das ganze zu veranschaulichen. Im Chart markiert das hellgrüne Signal den Hochpunkt, türkis ist der Zeitpunkt, an dem ein Abschnittswechsel stattfindet; die blaue Linie ist der angedachte Widerstand, den ich jedoch lieber zwischen den hellgrünen Signalen zeichnen lassen würde...

Ist so etwas grundsätzlich in der Investox Formelsprache möglich oder beiße ich mir hier vergeblich die Zähne aus (und sollte möglicherweise gleich besser in VBScript / dlls aktiv werden) ?

Vielen Dank schonmal für Euer feedback & beste Grüße


Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#_LoadDefs#


Calc Bed1: ObenUntenStartEnde = -1;	    //markiert einen Abschnittswechsel - im Chart türkis markierte Stellen
Calc Bed2: Bed1;											


Calc Wert1: ValueWhen(HHochTTief, Bed1, 1, V);
Calc Wert2: ValueWhen(HHochTTief, Bed2, 1, V);	// Linie soll horizontal verlaufen


//ÜL Methode 1
Calc Datum1: Zeit = ValueWhen(ZeitpunktHochTief, Bed1, 1, Z);	//markiert Zeitpunkt des Hochs mit 1
Calc Datum2: Zeit = ValueWhen(Signalzeit, Bed1, 1, V);	//markiert Zeitpunkt des Signals mit 1 

Calc Linie: ÜL(Datum1, Wert1, Datum2, Wert2, Lin);    {führt zu Fehlermeldung:  Datumsangaben führen
 zu identischen oder fehlerhaften Koordinaten - keine Berechnung}


//ÜL Methode2
Calc Datum11: BarsSince(Datum1,1);
Calc Datum22: BarsSince(Datum2,1);

Calc Linie2: ÜL(Datum11, Wert1, Datum22, Wert2, Lin);   {führt zu Fehlermeldung:  Datumsangaben führen
 zu identischen oder fehlerhaften Koordinaten - keine Berechnung}



//Versuch
Calc Datum111: BarsSince(Datum1, 1);
Calc Datum222: BarsSince(Datum1, 2);

Calc Linie3: ÜL(Datum111, Wert1, Datum222, Wert2, Lin);	{zeichnet Linie, jedoch nur zum Zeitpunkt des Signals (türkis)}

Linie3









nur noch als Ergänzung: ObenUntenStartEnde ist vergleichbar mit einem Zeitabschnitt "Abschnitt(....)" und HHochTTief ist vergleichbar mit HochDesAbschnitts "HighestSince(...)"


Bild aus InvestoxFormelsprache[1].pdf

...nun wäre nur schön, diese Kurve ließe sich nach links verschieben... ?(

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »W.D.a Pisa« (22. Oktober 2012, 16:23)


Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

2

Dienstag, 23. Oktober 2012, 11:34

Hallo,

>>...nun wäre nur schön, diese Kurve ließe sich nach links verschieben..

möglich ist das. Aber eine Berechnung "nach links verschieben" bedeutet: den Zeitpunkt ihrer Berechnung in die Zukunft verschieben (siehe "ZigZag"-Indikator). Sinnvoll ist dies nur, wenn es um eine nachträgliche grafische Darstellung zu Informationszwecken geht. Real gehandelt werden kann es jedoch nicht.

Viele Grüße
Andreas Knöpfel

W.D.a Pisa

unregistriert

3

Dienstag, 23. Oktober 2012, 17:17

Hallo Herr Knöpfel,

vielen Dank für Ihre Antwort!

Mir geht es tatsächlich um eine "vollkommene" grafische Darstellung im Chart...dass der Handel erst später möglich wird, ergibt sich aus der Formel
Calc Datum1: Zeit = ValueWhen(ZeitpunktHochTief, Bed1, 1, Z); - hier wird ja bereits in die Zukunft geschaut. Ein Handelssignal ist somit erst ab der türkisen Markierung für Abschnittswechsel möglich.

Falls Sie mir dennoch einen Tipp geben könnten, wie ich die Linie im Chart nach links verschieben kann, wäre ich Ihnen sehr dankbar. 8o

Freundliche Grüße

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

4

Donnerstag, 25. Oktober 2012, 09:48

Hallo,

so ganz einfach ist es nicht, da sich die Abstände der Highs von den Abständen der Zeitabschnitte unterscheiden.
Nach diesem Muster könnte es gehen:

Quellcode

1
2
3
4
5
calc ZeitAbschnitt: Abschnitt(m, 1, k, m);
calc Highwert: Ref(HighestSince(High, Zeitabschnitt,1),-1);
calc AktHigh: ValueWhen(Highwert, Zeitabschnitt, 1, Z);
calc AktHighDiff: ABS(Highwert/AktHigh-1);
Ref(ValueWhen(Highwert, AktHighDiff<0.000001,1,v), 1)

Viele Grüße
Andreas Knöpfel

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

5

Donnerstag, 25. Oktober 2012, 11:35

Hallo Pisa

Eine Alternative zu ÜL() oder dem Coding von Herrn Knöpfel wäre für Dich vielleicht dies:

Für horizontale Linien könnte auch der Indikator Describe() aus der Investoxforums-Datenbank eingesetzt werden. Am Ende kommen da so Linien heraus wie in Deiner Grafik zu Eingangs.

Für beliebige (horizontale oder eher diagonale) Linien würde sich dagegen möglicherweise der Indikator EinfacheLinie() ebenfalls aus der Forums-Datenbank eignen. Damit kannst Du Ereignisse als Stützpunkte definieren, zwischen denen Linien gezogen werden.

Korrekt in eigenes Coding eingearbeitet eignen sich diese Linien zum Backtest wie für den Life-Handel.
Gruss
Bernd

W.D.a Pisa

unregistriert

6

Freitag, 26. Oktober 2012, 16:18

Hallo Herr Knöpfel,

vielen Dank für Ihre Antwort; ich hatte die Hoffnung schon beinahe aufgegeben.. Ihr Lösungsansatz sieht auf den ersten Blick sehr gut aus:


Leider taucht gegen Ende der Datenreihe folgende Schwäche auf - bedingt durch

Quellcode

1
calc AktHigh: ValueWhen(Highwert, Zeitabschnitt, 1, Z);
- weil dann wahrscheinlich für die Zukunftsbetrachtung der kommende Abschnittswechsel fehlt..? :


Ich werde mir wohl aus einer Mischung Ihrer Lösung und der bisherigen ÜL einen Schalter (Links <-> Rechts) des Abschnittswechsels (türkis) einbauen und versuchen folgendes (sauberer) zu konstruieren:


Sollten Sie noch weitere Anregungen haben, bin ich für jedes Feedback dankbar!

Viele Grüße & ein schönes Wochenende!

W.D.a Pisa

unregistriert

7

Freitag, 26. Oktober 2012, 16:24

Hallo Bernd,

Dir ebenfalls vielen Dank für Deine Rückmeldung! Ich habe es mit dem Indikator Describe() versucht, bekomme jedoch den Eindruck, dass ich hier wieder am Eingangsproblem stehe, da die entsprechenden Rückgabewerte (Bsp. Hoch) wie in meinem Fall erst ab Ende des Zeitabschnitts eingezeichnet werden.
Die Tatsache jedoch, dass Du hier entsprechend alles was ich im Moment noch aus der Formelsprache heraus entwickelt habe, hervorragend in VBS umgesetzt hast, zeigt mir wohin die Reise für dieses Projekt wohl gehen könnte.. :S
Viele Grüße & ein schönes Wochenende,

Pisa

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

8

Samstag, 27. Oktober 2012, 12:57

Hallo da Pisa

habe es mit dem Indikator Describe() versucht, bekomme jedoch den Eindruck, dass ich hier wieder am Eingangsproblem stehe, da die entsprechenden Rückgabewerte (Bsp. Hoch) wie in meinem Fall erst ab Ende des Zeitabschnitts eingezeichnet werden.

Dies ist korrekt; meine bisher veröffentlichten Indikatoren sind für den Backtest und den sicheren automatischen Handel ohne Flattersignale ausgelegt. Genauso, wie es auch im Investox-Standard üblich ist.

Ein Handel vor dem Ende eines Zeitabschnitts führt zu unkontrollierbaren Signalen im Backtest und auch im Real-Handel! Nichts, was Du so "getestet" hättest, hätte irgendeine Aussagekraft! Möchtest Du in kleineren Zeitabschnitten handeln?: Du kannst Flattersignale nur vermeiden (und einen qualifizierten Backtest erzeugen), wenn Du die Basis-Komprimierung kleiner wählst, damit kommst Du zu stabilen Signalen auch in kleineren Zeitrahmen. Mit dem Indikator Komp() kannst Du immernoch beliebige stabile Signale aus höheren Sphären (MTF - Multi Time Frame) "einfliegen".

Natürlich kann man auch mitten in eine Periode hinein "Signale" für den diskretionären Handel erzeugen; diese sind jedoch nur mit dem entsprechenden Glauben an das eigene Tun handelbar, backtestbar sind sie nicht.

Die Tatsache jedoch, dass Du hier entsprechend alles was ich im Moment noch aus der Formelsprache heraus entwickelt habe, hervorragend in VBS umgesetzt hast, zeigt mir wohin die Reise für dieses Projekt wohl gehen könnte.. :S

Du solltest keine voreiligen Schlüsse ziehen, bitte. Ich habe Kollegen beraten, die am Ende ein ganzes Investox Handelssystem in einem VBScript Indikator oder einer VB dll ablegen wollten. Das hat ins Nirgendwo geführt. Meine Empfehlung ist, die ganze Steuerung eines Handelssystems und auch soweit möglich die eigenen Indikatoren in der Investox Formelsprache abzubilden; das ist der einfachste Weg, weil die Formelsprache, hat man sie einmal begriffen, auf einfachste Weise Zeitreihen generiert.

Nimm' VBScript, VB oder gar das .NET Interface erst her, wenn Du die Investox Sprache und das ganze Investox Paradigma wirklich wirklich wirklich für einige Jahre durchdrungen hast, und dann nur für iterative Ansätze, die sich in der Formelsprache nicht lösen lassen!

Wenn Du vor Erlangung dieses Wissentands auf VBScript und Co. umsteigst, wirst Du uns hier im Forum mit sehr sehr vielen sinnfreien Anfragen überschütten!, und es wird mit an Sicherheit grenzender Wahrscheinlichkeit nirgends hinführen!
Gruss
Bernd