Freitag, 19. April 2024, 01:08 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.

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

1

Donnerstag, 24. September 2009, 18:23

HS läuft auf Ticks, Indikator soll aber nur am Anfang jeder neuen Periode (1min-Kompr.) neu berechnet werden

Hallo,

mein Wunsch ist , dass das HS mit Ticks läuft, d.h. alle Intradaystops sollen nach jeden Tick überprüfen können, ob sie auslösen müssen.
Nun habe ich einen berechnungsintensiven VBscript-Indikator, wo es ausreicht wenn dieser am Anfang jeder neuen Periode einmal berechnet wird, d.h. bei einer 1min-Titelkomprimierung, jede Minute nur einmal.

So habe ich es umgesetzt:

Zitat


HS einstellen - Definitionen:
...
#_AktPerPeriode#
global Calc returnZeitreihe: berechnungsintensivesVBscript(close,5);
...


Aber leider wird trotzdem bei jedem neuen Tick die Indikator neu berechnet.

In der Inv-Doku steht dazu:

Zitat

Wenn das Schlüsselwort #_AktPerPeriode# an einer beliebigen Stelle in einer Formel im Chart enthalten ist, wird diese Formel bei der zeitbedingten Aktualisierung des Charts nur zu Beginn einer neuen Periode des Charts aktualisiert. Auf diese Weise ist es möglich, die Kursdaten tickweise aktualisieren zu lassen, die Berechnungen im Chart jedoch nur zu Beginn einer neuen Periode.


Eigentlich genau so wie ich es mir wünsche. Nur klinkt das so, dass es nur im Chart und nicht bei den HS-Regeln für eine Indikatorberechnung eingesetzt werden kann ?

Gibt es irgendwie eine Möglichkeit bei einem HS das mit Ticks läuft zu erreichen, dass ein Indikator nur am Anfang einer neuen Periode berechnet wird?

Danke.

Viele Grüße
Torsten

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

2

Donnerstag, 24. September 2009, 18:34

Hallo Torsten,

setze den Schlüssel so ein #_AktPerPeriode-1# und direkt hinter die Calc:..... Berechnung #_AktPerPeriode-1#. Nutze dazu auch mal den Schlüsselwort-Helfer. Dort kann man alle möglichen Varianten direkt in den Chart einfügen!
Happy Trading

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

3

Donnerstag, 24. September 2009, 18:52

Hallo Udo,

Zitat


Nutze dazu auch mal den Schlüsselwort-Helfer.


Komisch, beim Schlüsselwort-Assistenten kann ich "AktPerPeriode" nicht finden.

Viele Grüße
Torsten

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

4

Donnerstag, 24. September 2009, 19:05

Hallo Torsten,

sorry,ich habe ganz übersehen das Du es als Formel im Formeleditor verwenden willst. Das geht leider nicht denn das Schlüsselwort steht nur Berechnungen im Chart zur Verfügung!Klick mal in den Chart und dann auf den Schlüsselwort-Assistenten. Hier findest Du das Schlüsselwort in der Liste!Eventuell kannst Du die Berechnung über einen BT zeitsteuern?
Happy Trading

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

5

Donnerstag, 24. September 2009, 19:18

Hallo Udo,

Zitat

Das geht leider nicht denn das Schlüsselwort steht nur Berechnungen im Chart zur Verfügung!Klick mal in den Chart und dann auf den Schlüsselwort-Assistenten.

Ja, jetzt ist es sichtbar und ich sehe alle Einstellmöglichkeiten, aber nur bei Berechnungen im Chart.

Hmm, das ist wirklich ein sehr interessante und hilfreiche Funktionalität von #_AktPerPeriode#, nur leider bringt das in Chartberechnungen nicht so viel.
Gibt es vielleicht für den HS-Formelregelteil ein anderes Schlüsselwort mit der #_AktPerPeriode#-Funktionalität?

Viele Grüße
Torsten

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

6

Donnerstag, 24. September 2009, 19:49

Hallo Tosten,

nein,zumindest keins das mir bekannt wäre da man aus dem System heraus keine separaten Berechnungsprioritäten zuweisen kann. Alternativ könnte man Prioritäten mit Hilfe bzw. in KOMP und BTs zuweisen. Wenn Du den extern berechneten VB-Indikator in einen BT einfügst, und diesen zeitsteuerst könnte es funktionieren. Ist zwar eine Schleife, aber in dem Fall vermutlich unumgänglich!Mit den Schlüsselwörtern kann man auch auf einen BT zugreifen. Betrachte mal die Liste des Schlüsselwort-Assistenten...-Berechnungstitel!
Happy Trading

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

7

Donnerstag, 24. September 2009, 21:53

Hallo,

ich habe es jetzt mal umgebaut, so dass der VBscript-Indikator im Berechnungstitel ausgeführt wird. Leider gibt es da ein Problem. Ich schreibe eine InvCalc-Berechnung in ein File ins Dateinsystem. Für den Dateinamen verwende ich den HS-Namen, d.h. die VBscript-Funktion "BasisSystemName ", wie folgt:

Zitat

fileName_inv2ext = BasisSystemName & "_inv2ext.txt" 'raus aus Investox


Im Filesystem steht _inv2ext.txt ... d.h. der BasisSystemName kann über den Berechnungstitel nicht ermittelt werden, womit ich dann bei BT ein Problem habe.

Gibt es vielleicht eine Möglichkeit ohne BT, ein HS mit Tickdaten zu füttern und trotzden zu erreichen das ein Indikator nur am Anfang jeder Periode berechnet wird und IntradayStopp's sollten möglichst trotzdem noch berechnen auf Ticks.

Viele Grüße
Torsten

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

8

Donnerstag, 24. September 2009, 22:55

Hallo,

Zitat

ich habe es jetzt mal umgebaut, so dass der VBscript-Indikator im
Berechnungstitel ausgeführt wird. Leider gibt es da ein Problem. Ich
schreibe eine InvCalc-Berechnung in ein File ins Dateinsystem. Für den
Dateinamen verwende ich den HS-Namen, d.h. die VBscript-Funktion
"BasisSystemName ", wie folgt:

Zitat





Zitat




fileName_inv2ext = BasisSystemName & "_inv2ext.txt" 'raus aus Investox



Im Filesystem steht _inv2ext.txt ... d.h. der BasisSystemName kann über
den Berechnungstitel nicht ermittelt werden, womit ich dann bei BT ein
Problem habe.
Das verstehe ich leider nicht ganz! Wird der Indikator im BT (ohne Syntax) überhaupt ausgeführt,wenn man den BT aufruft?
Schlüsselwort #_BT#
Happy Trading

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

9

Donnerstag, 24. September 2009, 23:56

Hallo Uod,

funktionieren tut der VBscript-Indikator im Berechnungstitel prizipiell schon.

Zitat

Schlüsselwort #_BT#

Das Schlüsselwort verwende ich nicht. Ich habe den Berechnung angelegt und dann einen Titel der auf die Berechnung zugreift. Im HS verwende ich dann einfach den Titel:

Zitat

global Calc returnBT: Close("bt_indikator"); //im BT alle 1min neuer Wert


Da der BT aber losgelöst vom HS arbeitet, denke ich wird es schwierig mit der VBscript-Funktion "BasisSystemName" einen String zu bekommen.

Wozu benötige ich den "BasisSystemName"?
Wenn mehrere HS den export-Indikator verwenden, müssen die Filenamen unterschiedlich sein und am einfachsten kann man eine Unterscheidung über den jeweiligen HS-Namen erreichen, wobei dass dann auch einfach debugbar ist. Wenn aber alle HS in das gleiche File "_inv2ext.txt" exportieren, dann kollidieren die Daten. Diese BT-Variante ist dann also nicht Multi-Handelssystem fähig.

Im Moment fällt mir auch nichts ein, wie ich über BT den Knoten lösen kann.
Deshalb meine Hoffnung:

Zitat

Gibt es vielleicht eine Möglichkeit ohne BT, ein HS mit Tickdaten zu füttern und trotzden zu erreichen das ein Indikator nur am Anfang jeder Periode berechnet wird und IntradayStopp's sollten möglichst trotzdem noch berechnen auf Ticks.


Viele Grüße
Torsten

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

10

Freitag, 25. September 2009, 00:46

Zitat

Wenn aber alle HS in das gleiche File "_inv2ext.txt" exportieren, dann
kollidieren die Daten. Diese BT-Variante ist dann also nicht
Multi-Handelssystem fähig.
Das würden sie aber auch ohne BT? Man müsste dann mehrere BTs anlegen und in den Einstellungen gleichen Tick für alle Daten und eventuell auf Basis synchronisieren aktivieren!Die Syntax im System kann nur global (bis auf die genannten Ausnahmen) gesteuert werden da keine zweite Zeitebene angekoppelt werden kann. Eine eventuelle weitere Variante wäre noch Master-Slave indem man vom Master System das Signal des VB-Indikators alle Minuten zuführt! Der Timer kann im Master-System eingestellt werden und liefert alle Minuten einen Wert an Slave.

Noch ein Versuch: Komprimiere den Indikator und teste,ob man mit dem "Trick" eine Zeitsteuerung erreicht! Ich habe es aber nicht getestet. Dazu aus der Inv-Hilfe:

Zitat

Schlüsselwort #_LadePerioden#Schlüsselwort #_LadePerioden#

Ermöglicht individuelle Perioden in Komprimierungs-Berechnungen

Für Komprimierungsberechnungen kann die Anzahl der bei der
Aktualisierung verwendeten Datenperioden individuell angegeben werden. Dazu dient das Schlüsselwort #_LadePerioden n#, wobei n die Anzahl der gewünschten Perioden ist (siehe auch Schlüsselwort-Assistent).

Die individuelle Angabe ist nur bei zeitbedingten Aktualisierungen wirksam, wenn auch im Chart bzw. Handelssystem eine Periodenbegrenzung angegeben ist. Wenn keine individuelle Angabe vorhanden ist, wird weiterhin gegebenenfalls die Periodenbeschränkung des Charts bzw.
Handelssystems verwendet.

Beispiel:

Komp(#RSI(Close, 5)#, #5t#)

Verwendet zur Berechnung die gleiche Anzahl Perioden wie der
Chart bzw. das Handelssystem, indem der Indikator eingesetzt wird.

Komp(# #_LadePerioden 200# RSI(Close, 5)#, #5t#)

Verwendet auf jeden Fall 200 Perioden (hier à 5-Ticks) zur
Berechnung.

Hinweis: Wenn im Formelkontext mehrere Komp()-Berechnungen mit derselben Komprimierung verwendet werden, so entscheidet
die erste Angabe mit #_LadePerioden# über die zu ladenden Perioden aller Berechnungen in dieser Komprimierung.


Wenn alle Stricke reißen erstelle einen Kombititel (eine Minute) und hänge den Tickchart mit einer TickbyTick Aktualisierung vorne an! Voraussetzung dafür ist, der komplette Code (historisch) mit der Variante klar kommt....
Happy Trading

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

11

Freitag, 25. September 2009, 15:13

Hallo Udo,

Danke für die Vorschläge.
Habe mal die Komp() Variante mit und ohne #_LadePerioden 200# probiert, aber hier wird die Berechnung auch mit jden neuen Tick neu berechnet.

Von allen bisher getesteten Variante war die Variante mit dem Berechnungstitel am besten. Mit der Einschränkung, dass diese Variante nicht Multi-HS fähig ist. Da ich die Tests sowieso erstmal nur mit einem HS durchführe, ist dass nicht so tragisch. Meist kommt es dann sowieso ganz anders als man denkt...

Leider habe ich einen konzeptionellen Fehler gemacht.
Ich habe versucht ein HS welches auf Open & Delay=0 läuft mit einem Indikator als Signalgeber zu verwenden, der Close verwendet und ohne Ref(xyz, -1).
In einem 1min-HS, welches mit Ticks gespeist wird, ändert sich dann das Handelssignal vorlaufend, mal Long, mal Short, dann ist es wieder weg.
Ich hatte gehofft, das HS doch handelbar zu machen, wenn nur einmal pro Periode der Indikator berechnet wird. Zwar ist jetzt das Flattersignal weg, aber das EntryLevel liegt jetzt bei dem Open der Vorperiode und wenn der Trade erfolgreich ist, dann kommt man mit dem aktuellen Kurs nicht zur VorperiodenOpen hinein.
Wenn man aber Market im OM zuläst, bekommt man zwar alle Trades aber mit zum Teil heftigen Slippage, so das totz steigender Backtest-KK die OM-KK fällt.

Schade, im Backtest hat die KK einfach zu gut ausgesehen, da musste etwas faul sein.

Viele Grüße
Torsten

PS:
Sobald ich den Indikator in Ref-1 packe oder statt Open mit Close & Delay=0 einsteige, dann bricht die KK zusammen.

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

12

Freitag, 25. September 2009, 15:33

Hallo Torsten,

Zitat

Schade, im Backtest hat die KK einfach zu gut ausgesehen, da musste etwas faul sein.


Das ist meistens und leider so -aber nicht immer! Ich hatte selbst viele Systeme mit einem unscheinbaren Fehler im Code. Dieser kam erst nach Tagen in der Simulation zum tragen-aber dann heftig! Zumindest veranlassen trügerische Kapitalkurven die Syntax mindestens noch x- mal genau zu betrachten und vor allen ausreichend zu testen!
Happy Trading

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

13

Freitag, 25. September 2009, 16:49

Hallo Torsten

Aber leider wird trotzdem bei jedem neuen Tick die Indikator neu berechnet.

Warum hast Du den Indi über global calc überhaupt in das HS reingenommen, statt ihn nur und direkt zu charten?
Gruss
Bernd

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

14

Freitag, 25. September 2009, 17:32

Hallo Bernd,

Zitat

Warum hast Du den Indi über global calc überhaupt in das HS reingenommen, statt ihn nur und direkt zu charten?


Ursprünglich war das auch so gedacht. Ich wollte VBscript nur dafür verwenden, eine Zeitreihe bzw. Calc-Berechnung ins Filesystem zu exportieren, dann extern eine Berechnung durchzuführen und das Ergebnis wiederrum in ein File zu schreiben und dann das File über ASCII-Import als Titel wieder in Investox reinzuholen und dort zu verwenden.

Aber der Weg ist ein bischen umständlich und wenn man das Ergbnisse-Array in VBscript füllt, dann liefert der Indikator gleich die Antwort-Zeitreihe zurück ins Investox. Deshalb hat das charten dann nicht mehr gereicht, weil ich einen return-Array mitgebracht habe.

Viele Grüße
Torsten

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

15

Freitag, 25. September 2009, 18:13

Da könntest Du einen Parameter einbauen in den Indi: Fileschreiben. Das Ergebnis() Array lieferst Du auf jeden Fall zurück, aber das File nur wenn Fileschreiben=1 gesetzt ist. Dann wir der Indi 2x aufgerufen, einmal im HS selbst mit Fileschreiben=0 für Deine Array bassierten Entscheidungen im HS, einmal im Chart mit Fileschreiben=1, um am Anfang der Periode das File zu updaten.
Gruss
Bernd

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 051

Wohnort: Giessen

16

Freitag, 25. September 2009, 19:11

Mal ne ganz andere (doofe ?) Frage:

was machst DU denn extern so kompliziertes, was Du nicht in VBS Direkt machen kannst?
If you think it´s expensive to hire a professional, wait until you hire an amateur.

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

17

Freitag, 25. September 2009, 23:23

Hallo Bernd,

Zitat

Da könntest Du einen Parameter einbauen in den Indi: Fileschreiben. Das Ergebnis() Array lieferst Du auf jeden Fall zurück, aber das File nur wenn Fileschreiben=1 gesetzt ist. Dann wir der Indi 2x aufgerufen, einmal im HS selbst mit Fileschreiben=0 für Deine Array bassierten Entscheidungen im HS, einmal im Chart mit Fileschreiben=1, um am Anfang der Periode das File zu updaten.


Die Idee gefällt mir. Das sollte funktionieren und man komme dann ohne Berechnungstitel aus.
Danke.

Viele Grüße
Torsten

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

18

Freitag, 25. September 2009, 23:42

Hallo Lenzelott,

Zitat

was machst DU denn extern so kompliziertes, was Du nicht in VBS Direkt machen kannst?


Ich habe mich mal versucht an einem eigenen NN, welches mit jeder neuen Periode automatisch dazu lernt. Ich habe gehofft, dass dadurch die Signalgenerierung besser und stabiler wird. Zuerst sah es so aus, als ob es funktioniert, aber ich habe einen Fehler gemacht, d.h. ich habe um 1min in die Zukunft geschaut (zum Open gehandelt und dabei den Close verwendet). Nachdem ich dann das NNout in ein REF-1 gepackt habe und der Zukunftsblick weg war, ist leider auch die schöne KK in sich zusammengebrochen.

Viele Grüße
Torsten

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

19

Freitag, 25. September 2009, 23:52

Hallo Torsten,

da hast Du Dir den falschen Algorithmus ausgesucht! Mit überwachten Backprop ohne irgend was wird das nix....
Happy Trading

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

20

Freitag, 16. Oktober 2009, 11:32

Hallo,

Zitat

Wenn das Schlüsselwort #_AktPerPeriode# an einer beliebigen Stelle in einer Formel im Chart enthalten ist, wird diese Formel bei der zeitbedingten Aktualisierung des Charts nur zu Beginn einer neuen Periode des Charts aktualisiert. Auf diese Weise ist es möglich, die Kursdaten tickweise aktualisieren zu lassen, die Berechnungen im Chart jedoch nur zu Beginn einer neuen Periode.


Zitat

Da könntest Du einen Parameter einbauen in den Indi: Fileschreiben. Das Ergebnis() Array lieferst Du auf jeden Fall zurück, aber das File nur wenn Fileschreiben=1 gesetzt ist. Dann wir der Indi 2x aufgerufen, einmal im HS selbst mit Fileschreiben=0 für Deine Array bassierten Entscheidungen im HS, einmal im Chart mit Fileschreiben=1, um am Anfang der Periode das File zu updaten.


Ich habe das jetzt mal mit dem gesplitteten VBscript-Indikator (nur lesen im Definitionsbereich, schr. & lesen im Chart) umgesetzt und es funktioniert. Aber leider nicht sehr zufällig, d.h. ich habe mehrere HS laufen, bei dem einen wird Java alle XX-Periode aufgerufen, beim anderen nicht. Wenn man dann das HS anklickt, dann werden alle Berechnungen nachgeholt und es kommt zu Flattersignalen, weil sich der Indikatorwert rückwirkend über mehrere Perioden geändert hat. Diese Variante ist somit auch sehr schwierig zu händeln bei der Signalanalyse.

Mir scheint diese Vorgehensweise auch irgendwie zu kompliziert und umständlich. Gibt es vielleicht nicht eine einfachere Variante, wo man mit einem Indikator im Definitionsbereich des HS auskommt?
z.B. so:
global Calc isNewPeriode: ... ; //liefert eine 1 wenn eine neue Kerze entsteht, sonst =0

global Calc enterLong: xyz AND isNewPeriode;

Wie kann man "isNewPeriode" berechnen?
Wenn man irgendwie die Anzahl der Perioden seit dem Tagesanfang zählt und falls eine dazu kommt, d.h. sich die Anzahl ändert dann wird der 1peak erzeugt.

Hat da vielleicht jemand eine Idee?

Viele Grüße
Torsten

Ähnliche Themen