Dienstag, 16. April 2024, 22:56 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.

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

1

Freitag, 23. Oktober 2009, 16:36

Zeitraum per Optimierung justieren

Hallo,

es wurde ja schon darüber gesprochen, dass das Lernverhalten des Indikators NeuroClassify stark vom Lernzeitraum abhängt (was nicht verwundert) und dass man mit dem Zeitraum-Justierer teilweise erstaunliche Ergebnisse erhält. Es gab ja auch die Idee, dass man die Zeitraum-Justierung innerhalb der HS-Optimierung vornehmen lassen könnte.

In diesem Beitrag möchte ich eine Anregung geben, wie dies mit den vorhandenen Mitteln bereits möglich ist, indem man einen optimierbaren Zeitraum als Lernbeschränkung verwendet.

Der folgende Formelblock definiert einen per Optimierung justierbaren Zeitraum "Beschränkung". Die Berechnung "Beschränkung" liefert den Wert 1, wenn der Periodenzähler "PeriodenZähler" zwischen "StartPeriode" und "EndPeriode" liegt. Daher kann "Beschränkung" als Lernbeschränkung in den Einstellungen von NeuroClassify verwendet werden.
Die Justierung erfolgt über zwei Optimierungs-Variablen in der Berechnung von "StartPeriode" bzw. "Perioden" (Anzahl Perioden für den Trainingszeitraum) - jeweils in Prozent gerechnet. In diesem Beispiel ist der Initialisierungswert der Variablen für die Anzahl Perioden auf den Bereich 2-8 % (maximal 1-10 %) gesetzt. Hier ergeben sich natürlich viele Möglichkeiten für Experimente. Prinzipiell kann dieser Berechnungsblock aber unabhängig von der Komprimierung und der Lage des Opt-Zeitraums verwendet werden (da % berechnet):

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Anzahl Perioden vor dem Opt-Zeitraum: 
global calc PeriodenVorOpt: ErsterWert(CUM(Schalter(1,#_HS_Zeitraum OS#,0,0,0)),-1); 
//Anzahl Perioden des Opt-Zeitraums (gemäß Einstellung Optimierungszeitraum des HS). 
//Hierzu wird einfach zwischen Opt-Start und Opt-Ende für jede Periode 
//der Wert 1 kumuliert: 
global calc OptPerioden: ErsterWert(CUM(Schalter(0,#_HS_Zeitraum OS#,1,#_HS_Zeitraum OE#,0)),-1); 
//Start des Trainingszeitraums (als Prozentsatz aller Opt-Perioden): 
global calc StartPeriode: PeriodenVorOpt+INT([46,0,95,5,95,2,1.1984,I]/100*OptPerioden); 
//Anzahl Perioden fürTraining (als Prozentsatz aller Opt-Perioden): 
global calc Perioden: INT([4,1,10,2,8,0.5,1.2427,I]/100*OptPerioden); 
//Ende des Trainingszeitraums (als Start+Perioden, aber höchstens bis zum Ende des Opt-Zeitruams) 
global calc EndPeriode: MIN(StartPeriode+Perioden,PeriodenVorOpt+OptPerioden); 
// einfacher PeriodenZähler: 
global calc PeriodenZähler: CUM(1); 
//Alles Perioden im Trainingszeitraum auf 1 setzen (kann dann als Lernbeschränkung verwendet werden): 
global calc Beschränkung: Schalter(0, PeriodenZähler=StartPeriode, 1, PeriodenZähler=EndPeriode,0);


Hier ein Bild, wie das dann aussehen kann (es geht hier nicht um die Form der Kapitalkurve):



Der blau markierte Bereich gibt an (per globale Variable als Farbstudie), in welchem Bereich der NeuroClassify-Indikator trainiert wurde, also lediglich etwa im zweiten Halbjahr 2001. Der gelbe Bereich ist der Optimierungszeitraum. Dieser wird bei der Optimierung zur Bewertung verwendet, beeinflusst also die Einstellung des Trainingszeitraums und der anderen Variablen (Anzahl Cluster etc.). Der weiße Bereich rechts ist zur Kontrolle (Out of Sample). Wärend der Optimierung verändert sich der blau markierte Bereich, also der Trainingszeitraum. Man gewinnt also im Grunde einen zusätzlichen Bewertungszeitraum.

Für den Test wurde das bekannte Hurst-Projekt von der Homepage ohne größere Änderungen verwendet. Der restliche Formelblock aus den Definitionen sieht wie folgt aus:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
global const Limit: 0.5; 
global calc NN: NeuroClassify(#>> 
<Inputcache Name=NNCache4847/> 
calc RSI: RSI(close, 24); 
calc Hurst: HurstExpo(RSI, 2, 50); 
hurst; 
LRSlope(hurst,3); 
LRSlope(hurst,5); 
rsi; 
LRSlope(rsi,3); 
LRSlope(rsi,5); 
<<#,#>><Training MaxCluster=[66,2,200,10,60,2,1.4609,I];MaxAbweichung=[1.303,0.01,50,0.5,2,0.1,1.4123,];/><Prognose Ref(ROC(open,2,%),3)/><Lernbereich Datenreihe(#Beschränkung#)/><<#); //Beschränkung in Lernbeschränkung eingesetzt


In künftigen Versionen könnte man diese Vorgehensweise auch in den Indikator einbauen, so dass man dann nur noch die beiden Prozentzahlen für StartPerioden und Perioden angeben muss.

Viele Grüße

Andreas Knöpfel

Edit: Das Programm zum Download ist im Anhang
»Investox« hat folgende Datei angehängt:

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

2

Freitag, 23. Oktober 2009, 17:38

Hallo Herr Knöpfel,
vielen Dank für den Code und die Idee,das könnten Sie eigentlich an jeden Freitag machen damit uns am WE (in der grauen Jahreszeit) nicht "langweilig" wird..;)

Nach ersten Tests und vergleichen klappt das sehr gut und wird auch sauber abgerechnet!Man könnte bei Ihrer Variante "theoretisch" den HS-Zeitraum (Einstellung über Inv-Interface in der Maske) voll aufziehen ohne einen Testzeitraum vorzugeben da der Zeitraum mit Hilfe Ihres Codes ohnehin separat und unabhängig vom Systemzeitraum berechnet wird? Maßgeblich ist: Die blaue Fläche und "überschreibt" die gelbe Fläche! Ist das so korrekt?
Happy Trading

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

3

Freitag, 23. Oktober 2009, 18:37

Nachtrag: Der weiße Bereich wäre in dem Fall Out of Sample. Habe in Ihrem o.g. Beitrag einen wichtigen Satz überlesen ..:) Die vorher gestellete Frage erübrigt sich somit!
»Udo« hat folgendes Bild angehängt:
  • aos.png
Happy Trading

hajo

Meister

Registrierungsdatum: 20. Oktober 2002

Beiträge: 553

4

Freitag, 23. Oktober 2009, 19:29

Hallo Herr Knöpfel

haben Sie das so mal in der Mittagspause gemacht ;) ?

Jedenfalls besten Dank. So wie Udo schrieb, haben wir wieder etwas zum Zeitvertreib am Wochenende.

Letzteres wünsche ich Ihnen als angenehme Erhohlung ... ach so ... doch nicht, da ich gerade gelesen habe, dass der Umzug des Forums stattfinden soll. Also ( in unserem Interesse ) viel Tatkraft ... für Hans-Jürgen und Sie :)

Gruß,
hajo

idefix Männlich

Benutzer

Registrierungsdatum: 9. November 2005

Beiträge: 56

Wohnort: Hamburg

5

Sonntag, 25. Oktober 2009, 10:31

Hallo Herr Knöpfel,

vielen Dank für die Umsetzung der variablen Zeiträume per Optimierung.

Leider lässt sich das Beispielprojekt nicht ohne Fehler (Fehler im ZIP Archiv) laden. Ebenso ist das Bild aus dem darunter liegenden Beitrag von Udo nicht mehr darstellbar. Sind die Probleme eventuell auf den Baord Umzug zurückzuführen?

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

6

Sonntag, 25. Oktober 2009, 10:40

Hallo idefix,

ja es gibt Probleme bei den alten png-Grafiken. Hans-Jürgen arbeitet dran...
Happy Trading

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

7

Sonntag, 25. Oktober 2009, 16:19

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Anzahl Perioden vor dem Opt-Zeitraum: 
global calc PeriodenVorOpt: ErsterWert(CUM(Schalter(1,#_HS_Zeitraum OS#,0,0,0)),-1); 
//Anzahl Perioden des Opt-Zeitraums (gemäß Einstellung Optimierungszeitraum des HS). 
//Hierzu wird einfach zwischen Opt-Start und Opt-Ende für jede Periode 
//der Wert 1 kumuliert: 
global calc OptPerioden: ErsterWert(CUM(Schalter(0,#_HS_Zeitraum OS#,1,#_HS_Zeitraum OE#,0)),-1); 
//Start des Trainingszeitraums (als Prozentsatz aller Opt-Perioden): 
global calc StartPeriode: PeriodenVorOpt+INT([46,0,95,5,95,2,1.1984,I]); 
//Anzahl Perioden fürTraining (als Prozentsatz aller Opt-Perioden): 
global calc Perioden: INT([4,1,10,2,8,0.5,1.2427,I]); 
//Ende des Trainingszeitraums (als Start+Perioden, aber höchstens bis zum Ende des Opt-Zeitruams) 
global calc EndPeriode: MIN(StartPeriode+Perioden,PeriodenVorOpt+OptPerioden); 
// einfacher PeriodenZähler: 
global calc PeriodenZähler: CUM(1); 
//Alles Perioden im Trainingszeitraum auf 1 setzen (kann dann als Lernbeschränkung verwendet werden): 
global calc Beschränkung: Schalter(0, PeriodenZähler=StartPeriode, 1, PeriodenZähler=EndPeriode,0);



Wer den Step nicht prozentual sondern absolut durchführen möchte kann den oben leicht geänderten Code einsetzen. Wenn die Maus-Klickerei im Trimmer überhand nimmt kann man den absoluten Zahlenwert in die betreffende Box tippen und mit ENTER bestätigen. Dann wird sofort der eingetippte Wert angesteuert!
Happy Trading

hajo

Meister

Registrierungsdatum: 20. Oktober 2002

Beiträge: 553

8

Sonntag, 25. Oktober 2009, 18:34

edit von hajo
... Wenn die Maus-Klickerei im z.B. Variablen-Trimmer überhand nimmt ...
... und ich nicht mehr den "ursprünglich eingestellten Wert" weiß (nicht aufgeschrieben habe ... etc. ), wie ... ja wie kann ich dann "resetten" , also dass nach meiner Klickerei wieder der ursprüngliche Wert eingestellt wird ???

Gruß,
hajo

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

9

Sonntag, 25. Oktober 2009, 22:13

@hajo

Auf die Frage habe ich schon lange gewartet! :) Ich denke das müssen wir Herrn Knöpfel noch einmal näher bringen. In der Tat habe ich diese Funktion schon lange vermisst!Momentan geht es leider nur so, das man das System immer wieder dupliziert. Wünschenswert wäre Undo/Redo und Reset!
Happy Trading

hajo

Meister

Registrierungsdatum: 20. Oktober 2002

Beiträge: 553

10

Montag, 26. Oktober 2009, 10:49

@hajo
edit von hajo
... Wünschenswert wäre Undo/Redo und Reset!
Dabei wäre es auch wünschenswert um mit einem Klick die Opti-Variablen zu fixieren.
Elegant wäre eine solche Spalte im Variablen-Trimmer und dort pro Zeile (Variable) die Festlegung ! Idem für Reset !

Gruß,
hajo

Frieder

unregistriert

11

Montag, 26. Oktober 2009, 12:16

Hallo,

habe das Projekt mal mit meinen Daten durchoptimiert, und muss sagen: ich bin "deeply impressed"! :thumbsup:
Das ist das beste an Erweiterung, was Herr Knöpfel seit Investox 2.0 kreiert hat.
Chapeau! :engel:

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

12

Montag, 26. Oktober 2009, 13:04

Hallo hajo,

man kann die Variablen auf einen Rutsch fixieren:

  • Markiere den Block in dem sich Variablen befinden
  • klicke mit der rechten Maustaste in die markierte Fläche und dann im Korntextmenü auf "Optimierungsvariable fixieren

Somit hast Du alle Variable auf einen Rutsch fixiert und kannst sie umgekehrt alle wieder freigeben.

Es ist zu beachten das fixierte Variable durch anklicken im Variablen-Trimmer wieder freigegeben werden, da der Trimmer Priorität hat!


@Frieder

Siehst'e,ich habe damals mit den KKs nicht zu "dick aufgetragen"! Klappt doch...:)
Happy Trading

Peratron

unregistriert

13

Dienstag, 27. Oktober 2009, 13:32

Klassifizierungs-Modell speichern nicht möglich

Hallo Herr Knöpfel,
leider ist es mir nicht möglich ein Klassifizierungs-Modell zu speichern
wenn im Lernbereich eine Datenreihenbeschränkung eingetragen ist.


Grüße Peratron
»Peratron« hat folgendes Bild angehängt:
  • Lernbereichbeschränkung_speichern.jpg

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

14

Dienstag, 27. Oktober 2009, 14:00

Hallo,

im Moment lässt sich das Modell nicht speichern, wenn Bezüge auf Berechnungen ausserhalb der Einstellungen des Indikators verwendet werden (hier mit Datenreihe(##)). Man muss also zum Speichern in einem solchen Fall die Berechnung der Beschränkung samt aller Teilberechnungen in die Classify-Einstellungen hineinnehmen (an Stelle von "Datenreihe(#..#)"). Die Meldung auf dem Screenshot hat damit aber nichts zu tun (sie besagt nur, dass das Speichern direkt im HS-Editor, nicht im vergrößerten Editor vorgenommen werden muss).

Viele Grüße

Andreas Knöpfel

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

15

Dienstag, 27. Oktober 2009, 14:01

Hallo Peratron,

ich gehe davon aus das es nicht möglich ist weil die Schablone auf eine Zeitreihe zugreift!Du musst in LERNBEREICH BESCHRÄNKEN den Zugriff auf Herrn Knöpfels Indikator löschen!Wenn Du das System wieder aufrufst,trägst Du die Lernbeschränkung wieder ein-fertig. Das ist zwar im Moment ein bisschen umständlich aber Herr Knöpfel sprach nur von einer vorläufigen Lösung..;)

Edit:Da war ich zu langsam...;)
Happy Trading

Peratron

unregistriert

16

Dienstag, 27. Oktober 2009, 17:28

Hallo Herr Knöpfel,
sorry hatte die falsche Fehlermeldung gepostet. Obwohl ich diese auch nicht verstanden hatte, da ich mich ja "eigentlich" im Editor befand.
Hab jetzt mal alle externen Abfragen in den Classify Indikator gepackt. Leider bekomme ich daraufhin ein total anderes Ergebnis.
Hab ich etwas falsch gemacht? Grüße Peratron

Hallo,

im Moment lässt sich das Modell nicht speichern, wenn Bezüge auf Berechnungen ausserhalb der Einstellungen des Indikators verwendet werden (hier mit Datenreihe(##)). Man muss also zum Speichern in einem solchen Fall die Berechnung der Beschränkung samt aller Teilberechnungen in die Classify-Einstellungen hineinnehmen (an Stelle von "Datenreihe(#..#)"). Die Meldung auf dem Screenshot hat damit aber nichts zu tun (sie besagt nur, dass das Speichern direkt im HS-Editor, nicht im vergrößerten Editor vorgenommen werden muss).

Viele Grüße

Andreas Knöpfel
»Peratron« hat folgendes Bild angehängt:
  • Formel_intern.jpg

Peratron

unregistriert

17

Dienstag, 27. Oktober 2009, 17:33

Hallo Udo,
bin mir nicht sicher ob Dein Vorschlag funktioniert. Wenn ich den Zugriff auf die Lernbeschränkung entferne und dann das Modell speichere,
dann stehen diese Informationen im Modell leider nicht zur Verfügung. Ein nachträgliches Einfügen der Lernbeschränkung ändert daran anscheind
nichts. Grüße Peratron

Hallo Peratron,

ich gehe davon aus das es nicht möglich ist weil die Schablone auf eine Zeitreihe zugreift!Du musst in LERNBEREICH BESCHRÄNKEN den Zugriff auf Herrn Knöpfels Indikator löschen!Wenn Du das System wieder aufrufst,trägst Du die Lernbeschränkung wieder ein-fertig. Das ist zwar im Moment ein bisschen umständlich aber Herr Knöpfel sprach nur von einer vorläufigen Lösung..;)

Edit:Da war ich zu langsam...;)

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

18

Dienstag, 27. Oktober 2009, 18:06

Hallo,

gegenüber dem Screenshot müssten die "Globals" weg, die letzte Zeile mit "Datenreihe" sowie die Beschränkung nicht als Variable berechnen. Das müsste dann ungefähr so aussehen:

calc PeriodenVorOpt: ErsterWert(CUM(Schalter(1,#_HS_Zeitraum OS#,0,0,0)),-1);
calc OptPerioden: ErsterWert(CUM(Schalter(0,#_HS_Zeitraum OS#,1,#_HS_Zeitraum OE#,0)),-1);
calc StartPeriode: PeriodenVorOpt+INT([46,0,95,5,95,2,1.1984,I]/100*OptPerioden);
calc Perioden: INT([4,1,10,2,8,0.5,1.2427,I]/100*OptPerioden);
calc EndPeriode: MIN(StartPeriode+Perioden,PeriodenVorOpt+OptPerioden);
calc PeriodenZähler: CUM(1);
Schalter(0, PeriodenZähler=StartPeriode, 1, PeriodenZähler=EndPeriode,0)

Viele Grüße

Andreas Knöpfel

Peratron

unregistriert

19

Dienstag, 27. Oktober 2009, 18:15

Perfekt, funktioniert!

Vielen Dank

Hallo,

gegenüber dem Screenshot müssten die "Globals" weg, die letzte Zeile mit "Datenreihe" sowie die Beschränkung nicht als Variable berechnen. Das müsste dann ungefähr so aussehen:

calc PeriodenVorOpt: ErsterWert(CUM(Schalter(1,#_HS_Zeitraum OS#,0,0,0)),-1);
calc OptPerioden: ErsterWert(CUM(Schalter(0,#_HS_Zeitraum OS#,1,#_HS_Zeitraum OE#,0)),-1);
calc StartPeriode: PeriodenVorOpt+INT([46,0,95,5,95,2,1.1984,I]/100*OptPerioden);
calc Perioden: INT([4,1,10,2,8,0.5,1.2427,I]/100*OptPerioden);
calc EndPeriode: MIN(StartPeriode+Perioden,PeriodenVorOpt+OptPerioden);
calc PeriodenZähler: CUM(1);
Schalter(0, PeriodenZähler=StartPeriode, 1, PeriodenZähler=EndPeriode,0)

Viele Grüße

Andreas Knöpfel

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

20

Sonntag, 6. Dezember 2009, 21:25

Problem: nach Beschränkung=1 keine Trades mehr

Hallo,

warum werden nach Beschränkung=1 keine Trades mehr angezeigt? Der orange-gefärbte Bereich, dort ist die Beschränkung=1 und leider werden nur dort Trades generiert.

Zitat

{OZR Justierung absolut}
//OS..OptimierungsZR Start
//OE..OptimierungsZR Ende
//Anzahl Perioden vor dem Opt-Zeitraum:
global Calc periodenVorOpt: ErsterWert(CUM(Schalter(1,#_HS_Zeitraum OS#,0,0,0)),-1);

//Anzahl Perioden des Opt-Zeitraums (gemäß Einstellung Optimierungszeitraum des HS).
//Hierzu wird einfach zwischen Opt-Start und Opt-Ende für jede Periode der Wert 1 kumuliert:
global Calc optPerioden: ErsterWert(CUM(Schalter(0,#_HS_Zeitraum OS#,1,#_HS_Zeitraum OE#,0)),-1); //allePeriodenOZR

//Start des Trainingszeitraums (absolut):
global Calc startPeriode: periodenVorOpt+INT([startPeriode:10,0,95,0,95,1,3,I]);

//Anzahl Perioden fürTraining (absolut):
global Calc periodenTraining: INT([periodenTraining:200,1,50,1,50,1,3,I]);

//Ende des Trainingszeitraums (als Start+Perioden, aber höchstens bis zum Ende des Opt-Zeitruams)
global Calc endPeriode: MIN(startPeriode+periodenTraining,periodenVorOpt+optPerioden);

// einfacher PeriodenZähler:
global Calc periodenZähler: CUM(1);

//Alles Perioden im Trainingszeitraum auf 1 setzen (kann dann als Lernbeschränkung verwendet werden):
global Calc beschränkung: Schalter(0, periodenZähler=startPeriode, 1, periodenZähler=endPeriode,0);


{NC}
global Calc NN: NeuroClassify(#>>
calc RSI: RSI(close, 35);
calc Hurst: HurstExpo(RSI, 2, 50);
hurst;
LRSlope(hurst,3);
LRSlope(hurst,5);
rsi;
LRSlope(rsi,3);
LRSlope(rsi,5);
<<#,#>><Training MaxCluster=235;MaxAbweichung=0.01;/><Prognose Ref(ROC(open,2,%),3)/><Lernbereich Datenreihe(#beschränkung#)/><<#); //Beschränkung in Lernbeschränkung eingesetzt

global Calc REFn1_NN: Ref(NN, -1);


Wo habe ich den Fehler gemacht bzw. was kann die Ursache hierfür sein?

Danke.

Viele Grüße
Torsten

PS:
Vielleicht hängt es mit meiner Zeitraumeinstellung zusammen. Habe diese mit angefügt.
»sten« hat folgende Bilder angehängt:
  • 091206_ChartMitAbbruch_nachBeschränkung.GIF
  • 091206_ZeitraumEinstellung.GIF

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »sten« (7. Dezember 2009, 01:18)