Dienstag, 23. April 2024, 20:50 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

Patrick

unregistriert

1

Montag, 8. Januar 2007, 16:43

Global führt zu einem Fehler

Hallo Zusammen,

vielleicht kann mir mal wieder jemand einen guten Tip geben.

Ich habe folgendes Problem.
Gebe ich diese Zeilen in der Definition an

global calc trend_gd1: GD(Close, 100, S);
global calc trend_gd2: GD(Close, 200, S);
global calc trend: If( trend_gd1>trend_gd2, 0 , 1);


kommt es zu einer Fehlermeldung.

Entferne ich das global

calc trend_gd1: GD(Close, 100, S);
calc trend_gd2: GD(Close, 200, S);
global calc trend: If( trend_gd1>trend_gd2, 0 , 1);


funktioniert die Berechnung.

So ist das aber lästig, ich möchte die Parameter trend_gd1 und trend_gd_2 im Chart anzeigen. Dazu müssen diese aber Global sein. Und einmal Global berechnen zum anzeigen und ein zweites mal zum weiterverarbeiten, dass kann es ja auch nicht sein.

Was ich zudem nicht verstehe ist die Fehlermeldung im Logbuch.
Unverständlicher Parameter: Datenreihe oder Unterberechnung erwartet.
Alle Berechnungen sind als "clac" definiert. Lt. Handbuch ist "calc" die Datenreihe bzw. Unterbrechnung.

Übrigens, die Codezeilen sind nur Beispiele.

Gruß, Patrick

Tim

unregistriert

2

Montag, 8. Januar 2007, 17:02

Hi Patrick,

dein Beispiel funktioniert bei mir.

Bei mir kam es manchmal zu Problemen, wenn "global" sehr oft verwendet wurde.

Vielleicht gibt es ja eine Maximalanzahl für "Global" ?

Ist denn dein Code sehr lang ?


Cu Tim

Patrick

unregistriert

3

Montag, 8. Januar 2007, 19:32

Hallo Tim,

danke das du dir das so schnell angesehen hast.

Ich bin deinem Hinweis mal nachgegangen. Ich hab in der Tat 17 Globals drin. Daran kann es aber nicht liegen. Ich habe mein Beispiel noch einmal gestestet. Und der Fehler ist wiederholbar.

Entweder kann ich im Chart die beiden trend_gd1 und 2 anzeigen lassen, oder eben nur den trend selbst. Alle drei zusammen zeigt INV nicht an. Fügt man die dritte Formel in den Chart hinzu, kommt es zu besagter Fehlermeldung.

Ich hab als Beispiel mal eine Projektdatei beigefügt. Unter Definition hab ich einen Komentar hinterlassen.


Gruß, Patrick
»Patrick« hat folgende Datei angehängt:

Wiwu Weiblich

Experte

Registrierungsdatum: 4. September 2002

Beiträge: 1 752

Wohnort: Neuenhagen b. Berlin

4

Montag, 8. Januar 2007, 19:48

Hallo Patrick,

ich habe mir Deine Datei gerade angeguckt und 2 Fehler gefunden:


1.) Deine Codezeile:

global calc trend: If( trend_gd1>trend_gd2, 0 , 1);

definiert den Zustand trend_gd1= trend_gd2 nicht.
Deshalb liefert der Code teilweise den Wert "novalue" und der Indi kann nicht angezeigt werden.

Änder bitte mal auf :

global calc trend: If( trend_gd1>=trend_gd2, 0 , 1);

2.) Wenn Du Dir die globale Variable "trend" im Chart anzeigen läßt, lautet Dein Code bisher:

#_LoadGlobal trend#
trend


Damit "trend" berechnet werden kann, müssen aber immer alle globalen Variablen geladen werden, die in der Berechnung vorkommen (also auch nochmal trend_gd1 und trend_gd2)

Probier folgende Alternative:

#_LoadGlobal trend_gd1##_LoadGlobal trend_gd2##_LoadGlobal trend#
trend

Dann sollte alles funktionieren ..... ????
Viele Grüße von Anke

http://www.ascunia.de

Patrick

unregistriert

5

Montag, 8. Januar 2007, 20:57

Hallo Anke,

Alle Achtung! Wie unter 2. beschrieben habe ich jetzt mit

#_LoadGlobal trend##_LoadGlobal trend_gd1##_LoadGlobal trend_gd2#
trend


umgesetzt. Und, es hat funktioniert. Da wäre ich ohne Hilfe nicht drauf gekommen - Danke.
Bei einem anderen HS hab ich da schon Kopfstände gemacht, und so manche Variable zwei mal gerechnet nur um diese im Chart mit anzeigen zu können.

Gruß, Patrick