Mittwoch, 24. April 2024, 01:51 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.

Alex73 Männlich

Profi

Registrierungsdatum: 9. Oktober 2007

Beiträge: 211

Wohnort: Niederbayern

1

Montag, 18. Juli 2011, 20:56

Formel umsetzen

Hallo zusammen,

hab Probleme beim umsetzen einer Formel.
Könnt Ihr mir da helfen?

Gruß
Alex
»Alex73« hat folgendes Bild angehängt:
  • Preprozessing.png

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 051

Wohnort: Giessen

2

Montag, 18. Juli 2011, 21:22

Nö, kann ich nicht.

Bild zu klein, da hilft auch keine Lupe.
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Alex73 Männlich

Profi

Registrierungsdatum: 9. Oktober 2007

Beiträge: 211

Wohnort: Niederbayern

3

Montag, 18. Juli 2011, 21:31

Das wäre nochmal die Formel.
»Alex73« hat folgendes Bild angehängt:
  • Preprozessing.png

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 051

Wohnort: Giessen

4

Dienstag, 19. Juli 2011, 00:52

MA(t) ist eine normale exponentielle Glättung, wobei nirgendwo steht wie der Glättungsfaktor ß berechnet wird.
Was P(t) wird auch nicht erwähnt, sei´s drum.

Wie wäre es wenn mal bisschen mehr Fleisch am Knochen ist, wenn man geholfen bekommen will?
Ansonsten läuft das Ungfähr darauf hinaus:
es sei Daten=P(T)

Quellcode

1
calc feature:log(Daten/gd(Daten,perioden,E));
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Ganesha

unregistriert

5

Dienstag, 19. Juli 2011, 00:53

#_FastPrev#
const t: 20; //Anzahl Perioden fuer den MA
const beta: 0.5; //Beta-Faktor
calc ma: beta*close+(1-beta) * PREV; //Berechnung geglätteter(?) MA
calc feature: LOG(close/ma);

//Handelsregeln
calc Enter_Long: (
Cross(feature, 0, 1)=1
);

calc ExitLong: (
Cross(feature, 0, 1)=-1
);

Ganesha

unregistriert

6

Dienstag, 19. Juli 2011, 00:57

Noch was: Habe das ganze gerade mal im NQ getestet: Bringt so ganz gute Enter und Exits. Also eigentlich ist es richtig gut. Es fehlt noch etwas für eine Bestimmung der Trendrichtung und an den const-Werten müsste man noch mal optimieren. Manche Ein- und Ausstiege waren so gut, dass ich überlege ob hier irgendwie in die Zukunft geguckt wird!

Noch was die Zweite: Durch das Schlüsselwort "PREV" wird die Berechnung sehr langsam. Wenn Du sagst "passt so", kann ich Dir das Teil auch mit Basic schreiben, dürfte deutlich schneller sein.

Noch was die Dritte: Was ist die Quelle dieser Idee?

Ganesha

unregistriert

7

Dienstag, 19. Juli 2011, 01:00

das hier meine ich mit richtig gut (NQ auf EOD-Basis)
»Ganesha« hat folgendes Bild angehängt:
  • dd.png

Ganesha

unregistriert

8

Dienstag, 19. Juli 2011, 01:04

Handelsregeln geändert: Nun ist es fast handelbar!
calc Enter_Long: (
feature < 0 and ROC(feature, 2,$)>0
);

calc Exit_Long: (
feature > 0 and ROC(feature, 2,$)<0
);

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 051

Wohnort: Giessen

9

Dienstag, 19. Juli 2011, 01:06

#_FastPrev#
const t: 20; //Anzahl Perioden fuer den MA
const beta: 0.5; //Beta-Faktor
calc ma: beta*close+(1-beta) * PREV; //Berechnung geglätteter(?) MA
calc feature: LOG(close/ma);


Mehrere Dinge:
1. PREV ist ziemlich langsam auch mit #_FastPrev#, macht keinen Spass. Daher unbedingt darauf verzichten, wenn nicht unbedingt notwendig.
Es handel sich um eine normale Exponentielle Glättung, insofern nicht notwendig.

Zitat

Der Glättungsfaktor berechnet sich anhand der angegebenen Perioden wie folgt: 2/(1+Perioden).

Insofern ist ß bei t=20 bestimmt nicht 0.5.
Sollte ß Vorgabegemäß 0.5 sein (was ich leider nicht wissen kann, weil mir immer nich die Lupe fehlt für den ersten Screenshot), würde man wie folgt rechnen:
ß=2/(1+Perioden)
1+Perioden=2/ß
perioden=2/ß-1

Rest siehe mein obiger Post.
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 051

Wohnort: Giessen

10

Dienstag, 19. Juli 2011, 01:11

Will damit sagen ß=0.5 führt zu Perioden =3 und in Investoxcode heißt das dann:

Quellcode

1
log(daten/gd(Daten,3,E))


Und von mir aus kann auch Daten = Close sein.
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 051

Wohnort: Giessen

11

Dienstag, 19. Juli 2011, 01:25

Ist zwar spät, hoffentlicht nich zu spät für mein Hirn, aber ich behaupte mal:

Handelsregeln geändert: Nun ist es fast handelbar!
calc Enter_Long: (
feature < 0 and ROC(feature, 2,$)>0
);

calc Exit_Long: (
feature > 0 and ROC(feature, 2,$)<0
);




Ich weiß zwar nicht wo der Code jetzt herkommt, aber kleiner Hinweis:

log(x) <0 gilt für alle x <1 und >=0
insofern
ist die Abfrage feature<0 gleichzusetzen mit
daten/gd(Daten,3,E)<1 bzw.
daten<gd(Daten,3,E)

Da log gleichmäßig stetig ist, brauch man auch für die Abfrage des ROC() den Log nicht.
Auch hier würde demnach dann gelten:

ROC(feature, 2,$)>0
ist gleichbedeutend mit
roc(daten/gd(Daten,3,E) ,2,$)>0

Sollte dann zusammengesetzt ergeben:

Quellcode

1
2
3
4
calc Enter_Long: (
close<gd(close,3,E) 
and ROC(close/gd(close,3,E) , 2,$)>0
);
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Alex73 Männlich

Profi

Registrierungsdatum: 9. Oktober 2007

Beiträge: 211

Wohnort: Niederbayern

12

Dienstag, 19. Juli 2011, 19:48

Danke erstmal für eure Losungsvorschläge.
Ich habe die Formel aus einem Buch von Mark Jurik.
Ich bekomme es auch nicht größer, weil 100kB Begrenzung.
Wenn es aber jemand größer haben will, der kann sich gerne melden.

Alex73 Männlich

Profi

Registrierungsdatum: 9. Oktober 2007

Beiträge: 211

Wohnort: Niederbayern

13

Dienstag, 19. Juli 2011, 21:22

Hier der Indikator von Lenzelott.
»Alex73« hat folgende Datei angehängt:
  • Indikator.Inn (619 Byte - 427 mal heruntergeladen - zuletzt: 4. Februar 2024, 07:59)

Ganesha

unregistriert

14

Dienstag, 19. Juli 2011, 22:35


Es handel sich um eine normale Exponentielle Glättung, insofern nicht notwendig.

Jupp. Ich habe überlegt woher ich das Beta kenne und war irgendwie auf die Indikatoren von John Ehler aus, aber Du hattest recht. Dein Posting habe ich übrigens übersehen, bist offensichtlich auch einer von denen die ähhh schon am frühen Morgen ins Bett gehen.

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 051

Wohnort: Giessen

15

Mittwoch, 20. Juli 2011, 01:21


Es handel sich um eine normale Exponentielle Glättung, insofern nicht notwendig.

Jupp. Ich habe überlegt woher ich das Beta kenne und war irgendwie auf die Indikatoren von John Ehler aus, aber Du hattest recht. Dein Posting habe ich übrigens übersehen, bist offensichtlich auch einer von denen die ähhh schon am frühen Morgen ins Bett gehen.


naja Beta ja eigentlich was ganz anderes.
Normalerweise wird der Glättungsfaktor ja eher als Alpha dargestellt.
Sei´s drum.

Früher morgen ist ne nette Definition. ;(
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Ganesha

unregistriert

16

Mittwoch, 20. Juli 2011, 01:29


naja Beta ja eigentlich was ganz anderes.
Normalerweise wird der Glättungsfaktor ja eher als Alpha dargestellt.
Sei´s drum.

Früher morgen ist ne nette Definition. ;(
Dieses Alpha-Beta-Ding war auch die Falle. John Ehler benutzt Beta für das Herausrechnen von Zyklen... Deswegen war ich auch so schnell dabei die Formel mal umzusetzen... :)

So, es ist jetzt wieder früh geworden, ich gehe ins Bett. ;)

Alex73 Männlich

Profi

Registrierungsdatum: 9. Oktober 2007

Beiträge: 211

Wohnort: Niederbayern

17

Samstag, 27. August 2011, 13:16

Hallo,

bräuchte wieder mal eure Hilfe bei der Umsetzung einer Formel.
Es ist mal wieder ein Preeprozessing-Ansatz.
Falls jemand nähere Infos braucht kann ich diese per Mail zukommen lassen.
Hier die Formel.

Gruß
Alex
»Alex73« hat folgendes Bild angehängt:
  • Level 1.bmp

Ganesha

unregistriert

18

Samstag, 27. August 2011, 15:36



bräuchte wieder mal eure Hilfe bei der Umsetzung einer Formel.
Es ist mal wieder ein Preeprozessing-Ansatz.
Falls jemand nähere Infos braucht kann ich diese per Mail zukommen lassen.
Hier die Formel.

Gruß
Alex
Was ist denn M, t, n, k?

Ok, k ist vermutlich die Zählervariable der Summe. Aber die anderen Werte? Dann gibt es da eine Funtion P. Wofür soll die stehen?

Die Gleichung/Funktion macht aktuell keinen Sinn.

Ich vermute mal:

t ist der Zeitpunkt in einer Zeitreihe. Also zum beispiel "heute". n ist eine Rückblück in die Vergangenheit. Wenn n = 20, dann könnte man also sagen "vor 20 Perioden".

M dürfte eine Konstante sein. Zum Beispiel die Anzahl zu betrachtender Perioden???

Aber vor allem: Was ist P?

@Alex: Die Funktion ist durchaus auch für Nicht-Mathematiker verständlich. Du musst klären was die Variablen bedeuten und was hinter P steht. Wenn Du Dir das Summenzeichen auf Wikipedia mal anguckst, dann wird auch klar was dieses k=-M/2 k=+M/2 bedeutet. Wenn die Variablen geklärt sind, kann man die Funktion fast direkt in Investox-Code eintippen.

Alex73 Männlich

Profi

Registrierungsdatum: 9. Oktober 2007

Beiträge: 211

Wohnort: Niederbayern

19

Sonntag, 28. August 2011, 11:17

Hallo Ganesha,

mit dem Summenzeichen komme ich schon klar.
Aber wie geht man vor wenn oben und unten, links und rechts vom Summenzeichen auch Formeln stehen.
»Alex73« hat folgendes Bild angehängt:
  • Serial 1.jpg

Ganesha

unregistriert

20

Sonntag, 28. August 2011, 21:00

Hallo Ganesha,

mit dem Summenzeichen komme ich schon klar.
Aber wie geht man vor wenn oben und unten, links und rechts vom Summenzeichen auch Formeln stehen.
Hallo Alex,

Beim Summenzeichen braucht man eine Zählervariable und die wird üblicherweise 'k' genannt. Wenn man zum Beispiel bei einer Zahlenreihe die ersten fünf Zahlen addieren möchte, würde man unten k=1 schreiben. Die Zählervariable wird dabei initial auf den ersten Wert gesetzt. Über dem Summenzeichen schreibt man dann wie weit die Zählervariable laufen soll. Also k=5.


In Deinem Beispiel wird k mit "-M/2" initialisiert. Ist M=10 wird also k mit -10/2=-5 initialisiert. Bei jedem Durchlauf durch die Summierung wird k um eins erhöht. Das Summieren läuft solange bis k=M/2=5 ist.


Rechts vom Summezeichen steht das, was aufsummiert werden soll. Bei Dir steht da P(..). Gemeint ist hier vermutlich eine Zeitreihe, zum Beispiel der Schlusskurs.

Links vom Summezeichnen ist eine einfache Rechnung 1/(M+1). Zwischen dieser einfachen Rechnung und dem Summenzeichen muss man sich hier ein Multiplikationszeichen denken. Generell kann man bei mathematischen Formeln das Multiplikationszeichen wegfallen lassen. Also statt 2*M könnte man auch 2M schreiben.

Dieses t-n Konstrukt ist auch wieder eine Zählervariable. t ist die aktuell betrachtete Periode. n ist eine Variable die erklärt, um wieviel Perioden man zurückguckt. Angenommen t=heute und n=10, würde man also bei einem Kurs den Kurswert von vor zehn Perioden betrachten.

Grundsätzlich kann man den Kram jetzt direkt in Investox eintippen. Problem ist jetzt aber die eigenwillige Definition von k, die im negativen Bereich beginnt und im positivem Bereich aufhört. Sowas kann man in Investox nicht direkt eingeben, sondern muss zurückrechnen. Die Aufsummierung erfolgt immer für M Perioden. Für das zurückgehen nach k=-5 muss man die ref()-Funktion nehmen.

In Investox-Code würde man daher schreiben

//deklaration von Variablen
const M: 4;
const n: 9;
calc p: close;

//die eigentliche Berechnung:
calc B: 1/(M+1)*ref(Sum(p, M), (M/2));

In B steht dann der gesuchte Wert.

Problem: Was hier eigentlich gemacht wird, ist ein schlichter gleitender Durchschnitt. In Investox gibt es dafür die Funktion GD(...). Was der Autor allerdings macht, ist einen gleitenden Durchschnitt für die Zukunft zu berechnen. Wenn die p-Reihe zum Beispiel der Schlusskurs sein soll und n soll 9 sein und M soll 4 sein, kann man einfach das hier machen:

GD(ref(close, 4), 9, S)

Da es bei Investox um Kauf- und Verkaufsentscheidungen geht, kann man eine solche Funktion aber nicht benutzen. Zukünftige Werte sind ja nicht bekannt. Von daher verstehe ich nicht was der Autor eigentlich machen will.

Viele Grüße

Edit:

Zu dieser Formel noch mal:
calc B: 1/(M+1)*ref(Sum(p, M), (M/2));

In der Mathematik rechnet man beim Summenzeichen immer von links nach rechts. Investox rechnet aber immer von rechts nach links. Die normale Sum-Funktion beginnt also in der Vergangenheit und summiert in die Zukunft hinein, während Investox beim letzten Wert beginnt und in die Vergangenheit hinein rechnet.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Ganesha« (28. August 2011, 21:15)