Donnerstag, 18. April 2024, 20:07 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.

andaja

unregistriert

1

Samstag, 18. Oktober 2003, 23:04

IndikatorEinstellung "speichern"

Hallo,

ich habe mal wieder ein Programmierproblem:

Im fdax setze ich 2 GD´s ein.
Der fdax befindet sich z.B. bei 3500 Pkt. Die GD´s schneiden sich nun. Der Schnittpunkt der GD´s ist aber ja nicht 3500 Pkt, sondern z.B 3550 Pkt.
Zur Frage:
Wie kann ich diesen Schnittpunkt (den Wert 3550) als Wert "speichern" bzw. merken, so dass eine Long-Position dann bei 3550 Pkt. eingegangen wird?

Also:
Enter Long:
1. Bedingung: Cross...(akt. Kurs bei 3500, GD-Schnittpunkt bei 3550)
erst wenn diese Bedingung erreicht ist, dann
2. wenn der Kurs diesen Wert (3550) erreicht, dann -> Enter Long

Wer hat da eine Idee bzw. welcher Parameter muss hierfür verwendet werden ?

Gruß
Andreas

Thomas

unregistriert

2

Sonntag, 19. Oktober 2003, 08:13

Hallo andaja,

das geht mit der Funktion ValueWhen.


calc SP: ValueWhen(GD(Close, 200, S), Cross(GD(Close, 20, S), GD(Close, 200, S), 1)=1, 1, V);



close>SP AND GD(Close, 20, S)>GD(Close, 200, S)

andaja

unregistriert

3

Sonntag, 19. Oktober 2003, 12:09

Hallo Thomas,

ich danke Dir für die schnelle Antwort.

Werde es heute testen.

Gruß
Andreas

andaja

unregistriert

4

Sonntag, 19. Oktober 2003, 13:29

Hallo Thomas und auch alle Programmierer...,

ich habe mich nun an den ValueWhen-Parameter gemacht, leider bisher ohne Erfolg.

Mir ist Deine (Thomas) Formel calc SP... nicht so ganz klar.
Es kreuzen sich zwei GD´s: GD 200 und GD 20,
aber was bedeutet in dem Beispiel der erste Parameter nach ValueWhen ?



Gruß
Andreas

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »andaja« (19. Oktober 2003, 13:30)


Thomas

unregistriert

5

Sonntag, 19. Oktober 2003, 17:11

Hallo andaja,

stimmt, geht so nicht, da das HS in diesem Fall immer long geht solange der Close über dem letzten Schnittpunkt liegt, auch wenn es zuvor schon einmal ausgestiegen ist.

Als ersten Parameter in der ValueWhen Formel habe ich den längeren gleitenden Durschnitt gewählt. Ich gehe davon aus, dass der kürzere GD den längeren GD schneidet und nicht umgekehrt. Der Schnittpunkt entspricht daher in diesem Punkt wertmäßig dem längeren GD, der als Wert zurückgegeben werden soll.

Den Teil der Einstiegsbedingung, mit ValueWhen kann man glaube ich so stehen lassen. Der unerwünschte Nebeneffekt liegt daran dass die Einstiegsbedingung an sich zu unscharf definiert ist.

Man könnte hier noch eine Zeitspanne ergänzen, die maximal verstreichen darf bis ein Signal ausgelöst wird. Andernfalls kann es bei seitwärts tendiertenden Kursen lange dauern bis ein Einstiegssignal entsteht und es ist die Frage ob dieses dann noch gelten soll.

Wenn das Signal nur einmal pro Schnittpunkt der GDs erfolgen soll (nicht jedesmal wenn dieses Niveau wie jetzt überschritten wird) müsste man das auch noch mit einbauen. Lässt sich aber machen. Denk einfach mal darüber nach welche zusätzlichen Bedingungen für den Einstieg gelten sollen, dann versuche ich einen Lösungsvorschlag zu machen.

Das der kürzere weiterhin über dem längeren GD liegen soll habe ich beim letzten Mal schon berücksichtigt. Nehme an das war so gedacht?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Thomas« (19. Oktober 2003, 19:49)


andaja

unregistriert

6

Sonntag, 19. Oktober 2003, 19:37

Hallo Thomas,

um bei Deinem Beispiel zu bleiben, soll der ermittelte Wert, der durch das Kreuzen der 2 GD´s generiert wird, solange stehen bleiben, bis der Kurs diesen Wert erreicht hat.

Beispiel:
Der Kurs befindet sich bei 3500 als die GD´s sich schneiden. Der Schnittpunkt der GD´s wird bei 3550 ermittelt. Nun soll diese Linie bzw. dieser Schnittpunkt so lange stehen bleiben, bis der Kurs auch bei 3550 angekommen ist. Es soll erst dann eine Position eingegangen werden, wenn diese Linie erreicht oder überschritten wird, also eben bei 3550 oder 3550,5..., je nachdem was der nächste Kurswert ist.

Ich habe nun schon viele Varianten versucht zu programmieren, bisher aber ohne Erfolg. Es werden entweder zuviele Signale oder nur ein Signal generiert. Vielleicht hast Du noch eine Idee ?

Gruß
Andreas

Thomas

unregistriert

7

Sonntag, 19. Oktober 2003, 20:55

Hallo andaja,

ich habe meinen Beitrag weiter oben noch einmal ergänzt. Vielleicht wird jetzt etwas klarer was ich gemeint habe. Allerdings hab ich momentan auch keine Idee wie man weiterkommt.

andaja

unregistriert

8

Montag, 20. Oktober 2003, 10:52

Hallo,

gibt es denn außer ValueWhen keine andere Möglichkeit, einen ermittelten Wert irgendwie festzuhalten? Und zwar so lange, bis der Kurs diesen ermittelten Wert erreicht hat ?
Der ermittelte Wert kann ja gerne auch unter einem anderen Namen festgehalten werden (Ist doch ansonsten in jeder Programmierssprache möglich) !!!


Gruß
Andreas

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

9

Montag, 20. Oktober 2003, 12:48

Hallo,

die Lösung mit ValueWhen ist richtig:

calc GD1: GD(close,20,s);
calc GD2: GD(close,200,s);
calc Kreuzt: Cross(gd1,gd2,1)=1;
calc SP: ValueWhen(GD2, Kreuzt, 1, V);

SP speichert den Wert des GD2 am Kreuzungspunkt so lange, bis der GD1 den GD2 erneut nach oben kreuzt. Ab dann gilt natürlich die neue Kreuzungslinie.

Die andere Frage ist, wie man die Signallinie SP auswertet. Wenn Sie einsteigen möchten, sobald Close die Signallinie nach oben kreuzt, müssen Sie schreiben:

Cross(Close, SP, 1)= 1

Jetzt müssen Sie noch den Exit bzw. Stops definieren (wenn Sie nur mit Stops arbeiten möchten, in Exit eine Null schreiben).

Viele Grüße
Andreas Knöpfel

andaja

unregistriert

10

Montag, 20. Oktober 2003, 18:29

Hallo Herr Knöpfel,

auch habe ich nun Ihre Möglichkeit getestet. Leider wird der ermittelte ValueWhen-Wert mit dem nächsten Überschneiden neu gesetzt, so dass dann, um bei meinem Beispiel zu bleiben, der nächste Wert z.B. 3570 gespeichert wird. Der Kurs hat aber nicht einmal 3550 erreicht, steht also z.B bei 3540.
Gibt es nicht irgendwie die Möglichkeit, das der ValueWhen-Wert (hier 3550) in einer anderen Variablen weiterhin gespeichert bleibt, bis ein anderer Wert in diese Variable geschrieben wird ?

Z.B. wenn gd1 den gd2 kreuzt, dann wird SP gesetzt. Gleichzeitig muss der Wert z. B. an eine Variable X übergeben werden SP = X.
X wird einmalig gesetzt und bleibt stehen. Erst wenn der Kurs x kreuzt, wird x neu gesetzt (SP = x).

Gibt es so eine Lösung???

Gruß
Andreas

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »andaja« (20. Oktober 2003, 18:31)


andaja

unregistriert

11

Dienstag, 21. Oktober 2003, 10:56

Hallo Herr Knöpfel,
hallo an Alle,

leider komme ich mit der Value-When-Funktion nicht weiter.
Kann es sein, dass die Schalter-Funktion die Bessere ist ?

...Wenn SP (Cross GD1 und GD2) =1 and Close=SP=1, dann Enter Long...

Leider bekomme ich die Programmierzeile nicht hin.
Wer kann mir helfen ? - Oder liege ich mit der Schalter-Funktion falsch ?


Gruß
Andreas

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

12

Dienstag, 21. Oktober 2003, 11:02

Hallo,

Sie könnten es mit Hilfe der Schalter()-Funktion versuchen, als ergänzend zu oben:

--------------------
calc CloseKreuzt: Cross(Close, SP, 1)= 1;
calc SP2: Schalter(0, CloseKreuzt, SP,0,0);
----------------

soll SP2 aus Level nur neu gesetzt werden, wenn ein Cross statt fand.

Viele Grüße
Andreas Knöpfel

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Investox« (21. Oktober 2003, 11:03)


andaja

unregistriert

13

Dienstag, 21. Oktober 2003, 11:17

Hallo Herr Knöpfel,

warum müssen die Schalter-Funktionen auf 0 stehen ? - Und fehlt dan hinter dem CrossKreuzt nicht eine 1 (oder 0) ?

Gruß
Andreas

Vielleicht können Sie mir Ihre beiden Beiträge einmal zusammen führen, denn ich verstehe nun nicht ganz, welche Zeilen ich nehmen soll.

Danke !

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »andaja« (21. Oktober 2003, 11:18)


Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

14

Dienstag, 21. Oktober 2003, 11:44

Hallo,

die Schalter-Funktion ist in diesem Zusammenhang wohl wirklich nicht transparent und kann genauso durch ValueWhen() ersetzt werden, also zusammengeführt:
----------------------------
calc GD1: GD(close,20,s);
calc GD2: GD(close,200,s);
calc Kreuzt: Cross(gd1,gd2,1)=1;
calc SP: ValueWhen(GD2, Kreuzt, 1, V);
calc CloseKreuzt: Cross(Close, SP, 1)= 1;
calc SP2: ValueWhen(SP, CloseKreuzt, 1, V);

Cross(Close, SP2, 1)=1
------------------------------
Hinter "CloseKreuzt" fehlt keine 1, die steht ja bereits in der Cross-Definition von CloseKreuzt (CloseKreuzt ist als bereits als Durchkreuzen nach oben definiert).

Viele Grüße
Andreas Knöpfel

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

15

Dienstag, 21. Oktober 2003, 11:52

Zitat

Der Kurs befindet sich bei 3500 als die GD´s sich schneiden. Der Schnittpunkt der GD´s wird bei 3550 ermittelt. Nun soll diese Linie bzw. dieser Schnittpunkt so lange stehen bleiben, bis der Kurs auch bei 3550 angekommen ist. Es soll erst dann eine Position eingegangen werden, wenn diese Linie erreicht oder überschritten wird, also eben bei 3550 oder 3550,5..., je nachdem was der nächste Kurswert ist.


Ein Long Cross bei GDs kann nicht oberhalb der Basis stattfinden. Es muss ein Short cross sein mit anschliessend Return zum Short-Crosspunkt.Ist das richtig? Wenn ja dann mach mal folgendes:

ValueWhen(GD(Close, 20, S), Cross(GD(Close, 20, S), GD(Close, 50, S), 1)=-1, 1, V)

Diese Formel in einen z.B.5min Chart legen und als LEVELS anzeigen lassen um das Ganze optisch zu testen (Skalierung :linke Achse mischen)!

Im HS diese Formel für LONG eingeben:

Cross(Close, ValueWhen(GD(Close, 20, S), Cross(GD(Close, 20, S), GD(Close, 50, S), 1)=-1, 1, V), 1)=1{Die Formel berchnet Close cross Level}

EXIT LONG:0 eingeben und mit Stopps den Trade beenden oder eine beliebige EXIT BASIS einsetzen!

Wenn EXIT automatisiert wird-Gegenteil von LONG- dann wird Investox immer wieder einsteigen wenn CLOSE den LEVEL crosst!
Happy Trading