Dienstag, 16. April 2024, 14:21 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

dubi

Profi

Registrierungsdatum: 1. September 2002

Beiträge: 331

1

Sonntag, 5. März 2017, 13:17

GetGlobalVar liest Daten aus "Definitionen" nicht / getconst macht das aber

Hallo,

Ich habe unter HS/Defnitionen eine Globale Variable definiert, die ich dann mit VBS in einem eigenen Testergebnis auswerten möchte. Ich komme nicht an den Wert!
Definiert ist der Wert als:

Quellcode

1
Global Const wd: [x:0,0,1,0,1,1,1,I];

Unter den Testergebnissen versuche ich den Wert so auszulesen:

Quellcode

1
GetGlobalVar "wd", Write


Write nimmt aber weder 0 noch 1 an?

Als Workaround habe ich folgendes gemacht:

Ich definiere eine Hilfskonstante x unter Definitionen:

Quellcode

1
Const x: [x:0,0,1,0,1,1,1,I];


und schreibe den Wert von x dann im "Enter-Long-Fenster" in die Globale Variable "WD":

Quellcode

1
Global Const WD: x;


Auf diese Weise kann ich auf den Wert von x in den eigenen Testergebnissen auswerten. Aber soll das so sein :wacko:

Zusatz: Wenn ich mit (dem kaum dokumentierten) VBS-Befehl getconst arbeite, kann ich auf Konstanten aus dem Definitionsfenster zugreifen.

Mache ich etwas falsch oder ist das ein Fall für Herrn Knöpfel?
-dubi

LowTrader

Fortgeschrittener

Registrierungsdatum: 3. Juli 2014

Beiträge: 115

2

Freitag, 14. Juli 2017, 16:43

Hallo Dubi,

Zitat

Ich habe unter HS/Defnitionen eine Globale Variable definiert, die ich
dann mit VBS in einem eigenen Testergebnis auswerten möchte. Ich komme
nicht an den Wert!
Ich habe das gleiche Problem im VBS-Editor! Ich habe den Beispiel-Code aus der Anleitung unter Definitionen kopiert:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
global calc MyCalc: 5;

global calc vbs: VBScript(#>>
Dim a, i
GetGlobalVar "MyCalc", a
if IsArray(a) then	
for i= 1 to ubound(a)
if a(i)<>NoValue then
a(i)=a(i)*2
end if
next
SetGlobalVar "MyCalc",a
end if
<<#);


Es macht auch nichts ob das als Konstante, oder ein Array ist der z. B. die Close-Kurse enthält im Debugger sieht man dass die Werte nicht in die Variable a gelesen werden sie bleibt leer.

Zitat

Zusatz: Wenn ich mit (dem kaum dokumentierten)
VBS-Befehl getconst arbeite, kann ich auf Konstanten aus dem
Definitionsfenster zugreifen.
Ich habe Deinen Workaround nicht ganz verstanden. Aber ich bekomme mit Getconst nichts, egal ob das als Konstante, Variable, lokal, global wie auch immer definiert ist. Getconst erkennt bei mir noch nicht einmal der VBS-Editor als Befehl an (keine Veränderung der Farbe der Schrift). Welche IV Version nutzt Du? ich 7.

Für mich ist das gerade ein großes Problem, da ich nicht weiß wie die Werte einer Optimierungsvariablen in den VBS-Teil bekommen soll. ;(

Giuseppe Männlich

Meister

Registrierungsdatum: 31. März 2004

Beiträge: 556

Wohnort: Wien

3

Freitag, 14. Juli 2017, 19:16

Hello Dubi,

unter Definitionen:

Quellcode

1
Global Const wd: [x:99,0,1,0,1,1,1,I];


unter Anwenderdefinierten Testergebnissen (VBS Editor)

Quellcode

1
2
GetGlobalVar "wd", Write
Ergebnis =  Write


Funktioniert bei mir prima :thumbsup:

Wahrscheinlich hast du die Variable Write vergessen ins Ergebnis zu schreiben.

LG
giuseppe
keep going on...
Inv [7.6.7]

LowTrader

Fortgeschrittener

Registrierungsdatum: 3. Juli 2014

Beiträge: 115

4

Samstag, 15. Juli 2017, 10:33

Hi Giuseppe,

welche IV Version nutzt Du? Ich habe mal den Code bei mir in den VBS Editor kopiert, im Debugging modus sieht man, dass die Variable nie gelesen wird:
https://1drv.ms/i/s!AhL9Tt_7-jkNgWuUnM4T8sYbDiQy

Code:

Quellcode

1
2
3
4
5
6
7
8
Global Const wd: [x:99,0,1,0,1,1,1,I];
global calc z: 5;

global calc vbs: VBScript(#>>
dim write	
GetGlobalVar "wd", write
setglobalvar "z", write
  <<#);



es spielt wie gesagt auch keine Rolle ob das als Konstante oder Variable oder global oder lokal definiert ist - es geht einfach nicht..


Grüße!

Giuseppe Männlich

Meister

Registrierungsdatum: 31. März 2004

Beiträge: 556

Wohnort: Wien

5

Samstag, 15. Juli 2017, 12:52

hello,

hier ein kurzer Test von mir:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Global Const optiConst: [x:99,0,1,0,1,1,1,I];
Global Const fixConst: 5;

global calc vbs: 
VBScript(#>>

dim optiConstVBS, fixConstVBS

'übernehme optiConst IN optiConstVBS
GetGlobalVar "optiConst", optiConstVBS
MsgBox("optiConstVBS:" + optiConstVBS)

'alter Wert
GetGlobalVar "fixConst", optiConstVBSnew
MsgBox("fixConstOld:" + optiConstVBSnew)

'übernehme optiConstVBS IN fixConst
SetGlobalVar "fixConst", optiConstVBS

'neuer Wert
GetGlobalVar "fixConst", optiConstVBSnew
MsgBox("fixConstNew:" + optiConstVBSnew)

<<#);


Ich nutze Inv[7.4.2] Ich glaube dass du dein Code nicht im VBS-Editor testen. Da du es in Definitionen hast, muss die Verbindung zu dem Investox-Code bestehen (definition von den Konstanten). In VBS has du kein Bezug zu diesen Daten, deswegen (gehe ich mal davon aus) ist deine Variable leer. Mein Code zeigt dass die Variablen von Inv-Code in VBS übernommen werden und von dort vieder manipuliert werden können.

LG
giuseppe
keep going on...
Inv [7.6.7]

LowTrader

Fortgeschrittener

Registrierungsdatum: 3. Juli 2014

Beiträge: 115

6

Samstag, 15. Juli 2017, 17:24

Hi Giuseppe,

again vielen, vielen Dank für diese tolle Antwort! Ich habe es jetzt verstanden, dass der VBS-Editor keinen Zugriff auf die Variablen-Definitionen des Investox-Formelteils hat, das hat bei mir zum falschen Eindruck geführt die Variablen wären leer. Jetzt verstehe ich die Bedeutung von MsgBox fürs Debugging, vorher dachte ich naja ist unwichtig, ich sehe ja eh die Werte der Variablen im Lauf im Debugger...

Dein Code-Beispiel war wirklich die PERFEKTE Verdeutlichung von was der Unterschied in Bezug auf eingelesene Variablen ist, wenn Code im Debugger läuft vs er läuft im IV Fenster. das war schon ein schönes Aha-Erlebnifür mich danke nochmals dafür :thumbsup:

Giuseppe Männlich

Meister

Registrierungsdatum: 31. März 2004

Beiträge: 556

Wohnort: Wien

7

Samstag, 15. Juli 2017, 17:49

Hello LowTrader,

super, freut mich, dass ich helfen konnte :D

LG
giuseppe
keep going on...
Inv [7.6.7]

LowTrader

Fortgeschrittener

Registrierungsdatum: 3. Juli 2014

Beiträge: 115

8

Samstag, 15. Juli 2017, 18:24

Hallo Giuseppe,
ja mich erst. Haha. :D

Dir noch ein schönes WE!

Grüße

Ähnliche Themen