Dienstag, 16. April 2024, 13:26 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.

hajo

Meister

Registrierungsdatum: 20. Oktober 2002

Beiträge: 553

1

Donnerstag, 2. April 2015, 20:57

Komp Problem

Hallo Investox'ler

Mir fehlt der zündende Funke :D

Ich möchte 30min-Komprierungen von Indis etc. in ein 2min-HS schreiben.
In Defintionen habe ich geschrieben

Calc Pivot:
( High + Low + Close ) / 3;

Calc Pivot_L1:
Pivot - 0.382 * ( High - Low );

Global Calc Pivot_L1_1:
Komp(#Ref(Pivot_L1, -1)#, #30#);

Bereits beim Test in Definitionen erscheint
Variable : PIVOT_L1_1
Meldung ; Die im Parameter angegebene Datenreihe steht nicht zur Verfügung.

Dies ist ein (1) Beispiel, es wird viel mehr geben.
Wie viele Calc darf man hintereinder auflisten, also in Reihe haben?
Oder muss man die Berechnungen ineinander verschachteln?

Wie ist dies mit Global Calc?

In die Enter Regel möchte ich dann schreiben

Low < Pivot_L1_1

Es gibt natürlich mehrere derartige Parameter, deshalb meine Suche nach einer "eleganten" Lösung. Was muss ich richtig tun?

Danke für das Mitdenken.
Gruß und ein frohes Osterfest,
hajo

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

2

Donnerstag, 2. April 2015, 21:48

Hi Cowboy

Denke, Deine Büchse schiesst daneben ;)

Was Du mit calc ausserhalb der Komp() Berechnung definiert hast, kommt da nicht an. Allenfalls const Werte kannst Du von aussen da rein-pfriemeln.

Die Komp() Berechnung ist sozusagen ein kleines Investox Universum für sich, damit alles dazugehörige passend komprimiert werden kann. Sozusagen ein Investox im Investox: ein Westentaschen-Universum, die Freunde der Serie Andromeda wissen sicher, was ich meine.

Also sowas sollte gehen (Coding theoretisch; hoffe es zeigt die Spur auf: const kann von aussen übergeben werden und kommt an in Komp(), calc muss dort im Komp() Universum jedoch direkt komprimiert werden):

Quellcode

1
2
3
4
5
6
7
const Teiler: 3;
calc soGehts: Komp(#
calc Pivot: ( High + Low + Close ) / Teiler;

calc Pivot_L1: Pivot - 0.382 * ( High - Low ); 

Ref( Pivot_L1, -1)#, #30#);


Danach kann die Variable "soGehts" wie üblich weiterverwendet werden; da steckt jetzt die komplexe Berechnung auf 30 Minuten vorkomprimiert drin.

Vorsicht, obwohl gemäss INV Doku der Wert in Komp() mit Ref(,-1) zurückgegeben wird, kann noch ein Ref( soGehts, -1) vor der Verwendung der Berechnung nötig sein, in Abhängigkeit vom weiteren Coding-Kontext und dem im Handels-System verwendeten Delay: damit Life kein Flattrersignal auftritt (und der Backtest einem nicht reich rechnet, während das Konto später absackt).
Gruss
Bernd

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Bernd« (2. April 2015, 22:18)


hajo

Meister

Registrierungsdatum: 20. Oktober 2002

Beiträge: 553

3

Freitag, 3. April 2015, 10:00

Danke für die Antwort, Bernd.

Ich wollte halt eine „elegante“ Schreibweise 8) , um nicht -zig mal den gesamten Komp-Rattenschwanz (mit potentiellen Fehlern) schreiben zu müssen. Auch wären die Enter-Regeln viel übersichtlicher.

Ich gehe davon aus, dass in Deinem Quellcode die Zeilen 2 und 7 zusammengefügt werden sollten, also
Komp(#Ref( Pivot_L1, -1)#, #30#);

ABER Dein ... Calc soGehts: Komp(#Ref( Pivot_L1, -1)#, #30#); funktioniert genau nicht, also Ref( soGehts, -1) -> no

NACHTRAG:
Inzwischen habe ich versucht, versucht ...
Folgendes steht unter Definitionen:

Global Calc Pivot:
( High + Low + Close ) / 3;

Global Calc Pivot_H1:
Pivot + 0.382 * ( High - Low );

In EnterLong wurden folgende Regeln getestet:

High > Komp(#Ref(Pivot_H1, -1)#,#30#) // funktioniert nicht

High > Komp(#Ref(Pivot + 1 * (High - Low ), -1)#, #30#) // funktioniert nicht

High > Komp(#Ref(( ( High + Low +Close ) / 3 ) + 1 * ( High - Low ), -1)#, #30#) // funktioniert

Die letzte Variante meinte ich mit "Rattenschwanz" und "potentiellen Fehlern".
Frage: Gibt es eine einfachere Möglichkeit, um 30min Komp Indis in einem 2min HS zu schreiben?

Wünsche ein frohes Osterfest.
Gruß

Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von »hajo« (3. April 2015, 12:08)


klexer

unregistriert

4

Freitag, 3. April 2015, 13:12

Hallo Hajo
warum definierst du nicht die Pivots als Indikatoren ?

Du kannst die sicher öfters verwenden und musst sie nicht jedesmal neu programmieren.
Und schneller gehts dann auch noch :-)

so hab ich´s gemacht

Gruß igi

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 050

Wohnort: Giessen

5

Freitag, 3. April 2015, 13:14

High > Komp(#Ref(Pivot_H1, -1)#,#30#) // funktioniert nicht

High > Komp(#Ref(Pivot + 1 * (High - Low ), -1)#, #30#) // funktioniert nicht


Das diese Schreibweisen nicht funktionieren können und warum das so ist, hat Bernd ja oben schon geschrieben.
Also nochmal: Jegliche CALC´s aus dem HS können nicht "gekompt" werden. Nur CONSTs können verwendet werden.


Frage: Gibt es eine einfachere Möglichkeit, um 30min Komp Indis in einem 2min HS zu schreiben?

Ein ganzklares Nein.

Etwas übersichtlicher im Code kannst DU es Dir machen, wenn Du Dir zb. einen Indikator anlegst und diesen dann "Komp´st".

Quellcode

1
Komp(#ref(Pivot_h1(),-1)#, #30#)
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 050

Wohnort: Giessen

6

Freitag, 3. April 2015, 13:16

Hallo Hajo
warum definierst du nicht die Pivots als Indikatoren ?

Du kannst die sicher öfters verwenden und musst sie nicht jedesmal neu programmieren.
Und schneller gehts dann auch noch :-)

so hab ich´s gemacht

Gruß igi


Hehe, da haben wir beide gleichzeitig die gleiche Antwort formuliert.
Schneller rechnen tut der Indikator nicht, aber das Programmieren geht dann einfacher.
If you think it´s expensive to hire a professional, wait until you hire an amateur.

hajo

Meister

Registrierungsdatum: 20. Oktober 2002

Beiträge: 553

7

Freitag, 3. April 2015, 13:36

Super Antwort, Klexer :thumbsup: , schon getan ... und funktioniert! hajo -> :) :) :)

Lieber Lenzelott, Du schreibst:
"If you think it´s expensive to hire a professional, wait until you hire an amateur."
Nun, die Professionals habe ich doch genau hier "ge-hired" :D

Da kann ich nun sagen: You made my day :D

Genießt die Ostertage.