Dienstag, 16. April 2024, 20:19 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

Magno

unregistriert

1

Montag, 31. August 2015, 11:03

Push Indi-Values in JSON-Format to Database

Hallo,

ich probiere nun schon seit Wochen ein VBS zum Laufen zu bringen. Nun bin ich leider mit meinem Latein am Ende und bitte um Euere Hilfe. :baby:

Zweck dieses Scripts:

Investoxberechnungen in Realtime zu einer Datenbank zu schicken.
Von dort aus diese Daten formatieren und zum Beispiel eine Webseite befeuern, die mir in Echtzeit die für mich wichtigen Kennzahlen, Kontostände, Probleme oder was auch immer anzeigt.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Dim oShell
Set oShell = CreateObject("WScript.Shell")

Dim val1

val1 = 1

Dim strJson, q, r, s, t, u, strCmd

q = Chr(34)		'"
r = Chr(123)		'{
s = Chr(125)		'}
t = Chr(92)		'\
u = Chr(58)		':

strCmd = "curl -X " &q& "Content-Type: application/json" &q& " -X POST https://someurl.com/test.json -d "

strJson = q&r&t&q
strJson = strJson & "Variable1" &t&q&u&t&q& val1 &t&q&s&q
			
oShell.Run strCmd & strJson

Set oShell = Nothing


Das aktuelle Script funktioniert soweit, dass es mir den Wert „val1“ über einen curl Befehl des Terminals hochlädt.
Das ist schon mal echt nett, dennoch wäre es weitaus sinnvoller nicht ständig einen fixen Wert hochzuschiessen, sondern dynamische Berechnungen.

An welcher Stelle integriere ich nun zum Beispiel diese MACD Berechnung, die alleine gesehen funktioniert ?

Quellcode

1
2
3
4
5
6
7
dim i
dim mymacd
if scriptberechneformel("macd(close)", mymacd) then
  for i= 1 to AllePerioden
    Ergebnis(i)=mymacd(i)
  next
end if


Oder auch nur einen einzelnen Kurswert:

Quellcode

1
GetDaten "Close", close


Für jeden Tip bin ich sehr dankbar ! :D

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 050

Wohnort: Giessen

2

Montag, 31. August 2015, 12:03

in Deinem Kontext kannst Du wohl keine Arrays "hochschießen".
Der letzte Wert des Arrays interessiert doch wohl nehme ich an?
also stat val1=1 dann sowas wie val1=close(letztePeriode)
wobei Du letztePeriode mit den Investox-VBS üblichen Methoden ermitteln mußt.
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Magno

unregistriert

3

Montag, 31. August 2015, 13:19

Danke Lenzelott !

das war das fehlende Puzzleteilchen ! Läuft wie geschmiert... :thumbsup:

Magno

unregistriert

4

Montag, 31. August 2015, 15:53

Hier ist der upgedatete Code - aktuell mit vier Preisvariablen belegt:

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Dim LetztePeriode, close, open, high, low, val1, val2, val3, val4

GetDaten "Close", close
LetztePeriode = LetzteDatenPeriode(close)
val1 = close(LetztePeriode)

GetDaten "Open", open
LetztePeriode = LetzteDatenPeriode(open)
val2 = open(LetztePeriode)

GetDaten "High", high
LetztePeriode = LetzteDatenPeriode(high)
val3 = high(LetztePeriode)

GetDaten "Low", low
LetztePeriode = LetzteDatenPeriode(low)
val4 = low(LetztePeriode)

Dim oShell
Set oShell = CreateObject("WScript.Shell")

Dim strJson, q, r, s, t, u, v, strCmd

q = Chr(34)		'"
r = Chr(123)	'{
s = Chr(125)	'}
t = Chr(92)		'\
u = Chr(58)		':
v = Chr(44)		',

strCmd = "curl -X " &q& "Content-Type: application/json" &q& " -X PUT https://someurl.com/test.json -d "

strJson = q&r&t&q
strJson = strJson & "Close" &t&q&u&t&q& val1 &t&q&v
strJson = strJson &t&q & "Open" &t&q&u&t&q& val2 &t&q&v
strJson = strJson &t&q & "High" &t&q&u&t&q& val3 &t&q&v
strJson = strJson &t&q & "Low" &t&q&u&t&q& val4 &t&q&s&q
			
oShell.Run strCmd & strJson, 0, false

Set oShell = Nothing


Wie ist es nun möglich die GetDaten Funktion mit ScriptBerechneFormel auszutauschen ? Ich komm ums verrecken nicht drauf gerade. Alleine laufen die Beispielscripts myMACD, jedoch ist der Zugriff auf diese Variable in diesem Konstrukt mir noch nicht möglich.

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 050

Wohnort: Giessen

5

Dienstag, 1. September 2015, 00:13

Scriptberechneformel liefert ebenfals ein ARRAY zurück.
Und jetzt darfst Du selber auf die Lösung kommen.... ;)
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Magno

unregistriert

6

Mittwoch, 2. September 2015, 09:44

So, nun habe ich die Nuss geknackt:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
dim i
dim Indikator1, var1

if scriptberechneformel(„Indikator1()“, Indikator1) then
  for i= 1 to AllePerioden
  	LetztePeriode = letztedatenperiode(Indikator1)
    var1=Indikator1(LetztePeriode)
  next
end if


dim i2
dim Indikator2, var2

if scriptberechneformel("Indikator2()", Indikator2) then
  for i2= 1 to AllePerioden
  	LetztePeriode = letztedatenperiode(Indikator2)
    var2=Indikator2(LetztePeriode)
  next
end if


Läuft alles ohne Fehler. var1 und var2 und var5000 werden in den JSON-String übergeben. Danke Dir für Dein Feedback.

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 050

Wohnort: Giessen

7

Donnerstag, 3. September 2015, 10:32

Sitze gerade nich am PC, aber noch meinem Verständnis brauchst Du keine Schleife um die letzte Datenperiode zu ermitteln.

Das hier sollte imho ausreichnen:

Quellcode

1
2
LetztePeriode = letztedatenperiode(Indikator1)
var1=Indikator1(LetztePeriode)
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Lenzelott« (3. September 2015, 10:55)


Magno

unregistriert

8

Donnerstag, 3. September 2015, 11:43

Das war mein erster Versuch. Jedoch meckert Investox dann wegen dem freistehendem scriptberechneformel():

"Cannot use parantheses when calling a Sub"

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

9

Donnerstag, 3. September 2015, 12:44

Wieso steht scriptberechneformel() bei Dir frei? Ich denke es müsste doch jetzt ungefähr so bei Dir aussehen aufgrund des Hinweises von Lenzelott, aber hab's jetzt auch nur ungetestet hier reingepinselt:

Quellcode

1
2
3
if scriptberechneformel(„Indikator1()“, Indikator1) then
    var1=letztedatenperiode(Indikator1)
end if

Sonst postest Du vielleicht Dein Coding auch, welches Dir die Fehlermeldung produziert, damit man es besser verstehen kann.
Gruss
Bernd

Magno

unregistriert

10

Donnerstag, 3. September 2015, 13:25

Danke Bernd und Lenzelott...

so rockt das !! Wieder ein paar unnötige Zeilen gespart. :thumbup:

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 050

Wohnort: Giessen

11

Donnerstag, 3. September 2015, 14:23

Der entscheidende Punkt sind hier nicht die gesparten Zeilen, sondern, dass Du bei einer langen Historie kombiniert mit einem langen Leistungs Schema die gleiche Berechnung 1 oder 2 Millionen mal ausführst statt nur einmal.
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

12

Donnerstag, 3. September 2015, 17:22

Ach Lenzelott, die Coding-Qualität wird überbewertet. Da kauft man heutzutage halt einfach schnellere Hardware und der Drops ist gelutscht [Satire Ende] ;)

Wie auch immer, es freut mich, dass Magno weitergekommen ist.
Gruss
Bernd

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Bernd« (3. September 2015, 17:36)


Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 050

Wohnort: Giessen

13

Donnerstag, 3. September 2015, 19:08

Ach Lenzelott, die Coding-Qualität wird überbewertet


Quellcode

1
2
10 print "Otto"
20 goto 10
If you think it´s expensive to hire a professional, wait until you hire an amateur.