Dienstag, 16. April 2024, 14:32 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.

Giuseppe Männlich

Meister

Registrierungsdatum: 31. März 2004

Beiträge: 556

Wohnort: Wien

1

Samstag, 23. Januar 2010, 21:39

Zugriff auf alle Titel des Projektes über VB-Script und "BasisTitelName"

Hallo,

ich habe mir ein kleines VB-script geschrieben, dass die Kurse in einem txt-File speichert (für eine weitere Analyse mit Matlab). Das klappt so weit sehr gut. Ich will es jetzt folgendermaßen erweitern:

1.Es soll nicht nur ein Titel in dem txt-File geschrieben werden, sondern alle im Projekt vorhandenen Titel.
2. Es sollen mehrere Komprimierungen gespeichert werden.

Diesbezüglich ergeben sich für mich folgende Fragestellungen:

zu 1. mit dem Schlüsselwort "BasisTitelName" bekomme ich nur den ersten Titel im Projekt. Wie könnte ich an alle Titel des Projektes zugreifen (z.B in einer Array)?
zu 2. ist es möglich die Daten innerhalb des VB-Scripts zu anderen Komprimierungen zu konvertieren? z.B. mit Komp()? Wie schaut der Befehl aus?

Danke Giuseppe
keep going on...
Inv [7.6.7]

Giuseppe Männlich

Meister

Registrierungsdatum: 31. März 2004

Beiträge: 556

Wohnort: Wien

2

Sonntag, 24. Januar 2010, 12:25

Hallo,

ich bin ein Stück weiter gekommen:

zu 1. noch keine Idee, bzw. ka ob es überhaupt möglich ist auf alle, im Projekt geladenen Titel, zugreifen zu können. Mit "BasisTitelName" bekomme ich nur den ersten Titel in der Liste auch wenn mehrere vorhanden sind. ?(
zu 2. mit dem Komprimierung der Daten im Script klappt es, wenn man den Befehl: Komp(#datenFeld#, #timeFrame#) benutzt. Es hat sich eine neue Frage ergeben: muss ich auch Datum-Feld komprimieren wenn ich O,H,L,C,V,OI komprimiere, oder wird das Datum automatisch angepasst?

Noch eine Frage an VBScript Spezialisten: Ich habe für das Komprimieren der Daten eine Funktion geschrieben (Function convertData(field, tf)-Zeile 41). Das Problem besteht darin, dass ich innerhalb dieser Funktin an das Ergebniss = die komprimierte Daten zugreifen kann, allerdings kann ich diese nicht auf die aufrufende Stelle retournieren. Wenn ich die Routine ohne eine ausgelagerte Funktion umschreibe, funktioniert es ohne probleme. Ich würde es aber gern auslagern. 8|

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
''EXPORT PRICES 
''VBScript exports prices of project loaded assets, convert them into 
''required time frame and saves them as text files. 

'' Init vars 
Dim i 
Dim filesys, filetxt 
Dim comprArr, convD, convO, convH, convL, convC, convV,convOI 
comprArr = Array("5","10","15","30","60","120","W","M","Q","Y") 
Set filesys = CreateObject("Scripting.FileSystemObject") 
''Get data 
GetDatum d 
GetDaten "Open", o 
GetDaten "High", h 
GetDaten "Low", l 
GetDaten "Close", c 
GetDaten "Volume", v 
GetDaten "OpenInt", oi 
''do for each asset loaded in project 
''for i = 1 to UBound(BasisTitelName) 
''do for each required time frame 
for a = 1 to UBound(comprArr) 
outFileName = generateOutFileName(BasisTitelName , comprArr(a)) 
Set filetxt = filesys.OpenTextFile(exportPath & "\" & outFileName & ".txt", 2, True) 
filetxt.WriteLine(BasisTitelName) 
writeFileHeader() 

convO = convertData("Open", comprArr(a)) 
convH = convertData("High", comprArr(a)) 
convL = convertData("Low", comprArr(a)) 
convC = convertData("Close", comprArr(a)) 
convV = convertData("Volume", comprArr(a)) 
convOI = convertData("OpenInt", comprArr(a)) 
Call writeData(d, convO, convH, convL, convC, convV, convOI) 
filetxt.Close 

next 

''next 
''===============================FUNCTIONS AND SUBS=============================== 
Function convertData(field, tf) 

''Converts data to required time frame 
Dim cmd, convData 
cmd = """Komp(#" & field & "#,#" & tf & "#)""" 
''============TEST=========== 
filetxt.WriteLine(field) 
filetxt.WriteLine(tf) 
filetxt.WriteLine(Eval(cmd)) 
''=========================== 
if ScriptBerechneFormel(Eval(cmd), convData) then 
For i= 1 to AllePerioden 
Ergebnis(i)=convData(i) 
Next 
filetxt.WriteLine(UBound(convData)) ''TEST 
convertData = convData 
end if 
End Function 
Function generateOutFileName(inTitle, tf) 
'' creates output file name acoording to name of loaded asset 
''Example for input asset name: GBL_IB_5M_200806 = assetName_source_timeFrame_startDate(YYYYMM) 
''inTitleArray(0) = assetName 
''inTitleArray(1) = source 
''inTitleArray(2) = timeFrame 
''inTitleArray(3) = startDate 

''required time frames: "5","10","15","30","60","120","w","m","q","y" 
inTitleArray = Split(inTitle, "_", -1, 1) 
if StrComp(tf, "m", 0) = 0 then 
tf = "mo" 
elseif isnumeric(tf)then 
tf = "m" & tf 
End if 
outTitle = inTitleArray(0) & "_"& tf 
generateOutFileName = outTitle 
End function 
Sub writeFileHeader() 
''Write header line 
filetxt.WriteLine("Date" & chr(9) & "Time" & chr(9) & "Open" & chr(9) & _ 
"High" & chr(9) & "Low" & chr(9) & "Close" & chr(9) & "Volume" & chr(9) & "OpenInt") 
End Sub 
Sub writeData(d, convO, convH, convL, convC, convV, convOI) 
''Write date time and price data in text file 
for j= 2 to alleperioden-3 

filetxt.WriteLine(FormatDateTime(d(j),2) & chr(9) & _ 
FormatDateTime(d(j),4) & ":00" & chr(9) &_ 
convO(j) & chr(9) & _ 
convH(j) & chr(9) & _ 
convL(j) & chr(9) & _ 
convC(j) & chr(9) & _ 
convV(j) & chr(9) & _ 
convOI(j)) 
next 
End Sub
keep going on...
Inv [7.6.7]

Hetfield

unregistriert

3

Dienstag, 6. April 2010, 20:57

hallo,

bin grade am stöbern in sachen vbs. ist es eigentlich möglich einen vbs-indikator zu bauen, der mir die kursdaten, sowie die dazugehörige wkn in einem file mit wkn-bezogenem namen abspeichert ?

Giuseppe Männlich

Meister

Registrierungsdatum: 31. März 2004

Beiträge: 556

Wohnort: Wien

4

Dienstag, 6. April 2010, 22:20

Hallo,

dein Szenario ist realisierbar. Notwendige Schritte:
* daten holen (je nach dem welche für Indi notwendig sind)

Quellcode

1
2
3
4
5
6
7
8
''Get data 
GetDatum d 
GetDaten "Open", o 
GetDaten "High", h 
GetDaten "Low", l 
GetDaten "Close", c 
GetDaten "Volume", v 
GetDaten "OpenInt", oi


* dein Indi berechnen

* file schreiben

Quellcode

1
2
3
4
5
6
7
8
Set filesys = CreateObject("Scripting.FileSystemObject") 
exportPath = "deinPfadName" 
outFileName = "deinFileName" 
Set filetxt = filesys.OpenTextFile(exportPath & "\" & outFileName & ".txt", 2, True) 
for j= 1 to alleperioden 

filetxt.WriteLine(<< daten die du schreiben willst>>) 
next


Der vorgestellte Code ist nur ein grobes Beispiel. Es sollte dir bei deiner konkreten Szenarioumsetzung helfen.

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

Hetfield

unregistriert

5

Mittwoch, 7. April 2010, 09:04

hallo giuseppe,

vielen dank für deine schnellen tips !!
kannst du mir noch sagen, was ich hierbei reinschreiben muss, wenn pro zeile das datum und die kursdaten stehen soll ??

Quellcode

1
filetxt.WriteLine(<< daten die du schreiben willst>>)



habe das probiert in form von:

Quellcode

1
filetxt.WriteLine(d,o,h,l,c,v,oi)


aber da gibt mir der indikator in jeder zeile d,o,h,l,c,v,oi aus
kannst du mir vielleicht ein buch empfehlen in dem diese programmiersprache behandelt wird ??

ist es außerdem möglich die wkn oder den titel des underlyings abzufragen und mit auszugeben ohne "IstBASIS" ?? sonst habe ich über 3000 IF(IstBasis(...), A, ..... verschachtelungen.

ich arbeite nebenbei auch mit einer statistiksoftware (R) und möchte den export so gut es geht automatisieren...

Giuseppe Männlich

Meister

Registrierungsdatum: 31. März 2004

Beiträge: 556

Wohnort: Wien

6

Mittwoch, 7. April 2010, 13:30

Hallo Hetfield,

ich habe dir gern geholfen und werde es wieder machen ;) so weit ich kann. Mit R habe ich auch schon gearbeitet, jetzt benutze ich für die Auswertungen Matlab. Die Entwicklungsumgebung und die Möglichkeiten finde ich besser als bei R. Ausserdem habe ich bei der Anbindung von R an Bloomberg große Probleme (innerhalb von R-Schnittstelle zu Bloom) gehabt. Die Pakete die man dort installieren kann sind nicht immer sauber ausprogrammiert. Es ist allerdings freeware, so weit ich mich noch erinnern kann. Matlab ist dagegen kostenpflichtig.

Zu deinem Problem: ich habe mir vor einiger Zeit genau so ein Indi bzw. Routine ausprogrammiert. Sie liest den Titel den du im Projekt auf der ersten stelle hast, konvertiert die Daten in Timeframe die du brauchst und schreibt die Daten in eine Textfile. Folgendes musst du dabei noch ändern oder beachten:


  • Pfad für die Output-Files muss angelegt/geändert werden




  • beachte, dass nur die Daten verarbeitet werden , die sich im sichtbarem Ausschnitt des Investoxfensters befinden (Investox bezogen)
  • beachte, nur der erste Titel wird verarbeitet (meine erste Idee war, dass alle Titel im Projekt abgearbeitet werden, allerdings kann man nur auf den ersten Titel zugreifen - auch Grenze von Investox)
  • du kannst die Zeitkomprimierung ändern, je nach dem welche Komprimierung du brauchst. Meine Investoxdaten waren in 5 Min Komprimierung.
  • den Namen von Titel oder die Funktion generateOutFileName(inTitle, tf) für deine Titelsbenennung musst du anpassen.
    ''Example for input asset name: GBL_IB_5M_200806 = assetName_source_timeFrame_startDate(YYYYMM)
  • Bei großen Datenmenge fragt der Indi nach gewisser Zeit ob du weitermachen willst. Dieses Verhalten stellt ein Problem bei Automatisierung dar. Ich denke, dass es abgestellt werden kann, habe mich damit aber noch nicht befasst.

    Zur Benutzung: ich habe mir ein Projekt (exportPrices) erstellt und dort den Titel der exportiert werden soll geladen. Danach exportIndi in Chart per drag and drop gezogen. Gleich wird der export gestartet und du kannst im Exportordner beobachten wie die Größe der Datei wächst. So ein Projekt kannst du dann regelmässig (über ein Scheduler) starten lassen und die Txt-Files werden regelmässig aktualisiert. Wenn du mehrere Titel in Txt-Files konvertieren willst, musst du pro Titel ein Projekt anlegen.

    Ich hoffe ich habe nichts wichtiges vergessen. Sonnst melde dich mal wieder, wenn es Probleme gibt.

    LG giuseppe

    Add1: bezüglich Info zu VBS empfehle ich dir kostenlose Hilfedatei zu VBS. Da findest du alles was du brauchen könntest. Den Link findeste du im Thread vom Oli: VB-Script Referenz

    Add2: Info zu allen Schlüsselwörtern findest du in der Investox Hilfe, wenn du nach VBScript suchst. Konkret zu deiner Frage nach WKN oder Namen steht dort folgendes: "BasisTitelName, BasisTitelWKN, BasisProjektName, BasisSystemName =>Diese Schlüsselwörter liefern Informationen über den aktuellen Datenkontext, in der das Script berechnet wird, also den Namen bzw. die WKN des Basistitels, den Namen des Projekts sowie des Handelssystems (falls vorhanden)." (Investox Hilfe - VBScript, 2010, Version 5)

    CODE:

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    
    ''EXPORT PRICES 
    ''VBScript exports prices of asset loaded in project at first place 
    ''convert them into required time frame and saves them as text files. 
    '' Init vars 
    Dim i 
    Dim filesys, filetxt 
    Dim comprArr, convO, convH, convL, convC, convV, convOI, cmd 
    comprArr = Array("5","10","15","30","60","120","W","M","Q") 
    Set filesys = CreateObject("Scripting.FileSystemObject") 
    ''Get data 
    GetDatum d 
    ''do for each asset loaded in project 
    ''for i = 1 to UBound(BasisTitelName) 
    ''do for each required time frame 
    for a = 1 to UBound(comprArr) 
    outFileName = generateOutFileName(BasisTitelName , (comprArr(a))) 
    Set filetxt = filesys.OpenTextFile(exportPath & "\" & outFileName & ".txt", 2, True) 
    filetxt.WriteLine(BasisTitelName) 
    writeFileHeader() 
    ''Converts open data to required time frame=========================== 
    cmd = """Komp(#Open#,#" & comprArr(a) & "#)""" 
    if ScriptBerechneFormel(Eval(cmd), convO) then 
    ''Ergebnis in Ergebnisfeld übertragen 
    For i= 1 to AllePerioden 
    Ergebnis(i)=convO(i) 
    Next 
    end if 
    ''Converts high data to required time frame=========================== 
    cmd = """Komp(#High#,#" & comprArr(a) & "#)""" 
    if ScriptBerechneFormel(Eval(cmd), convH) then 
    For i= 1 to AllePerioden 
    Ergebnis(i)=convH(i) 
    Next 
    end if 
    ''Converts low data to required time frame=========================== 
    cmd = """Komp(#Low#,#" & comprArr(a) & "#)""" 
    if ScriptBerechneFormel(Eval(cmd), convL) then 
    For i= 1 to AllePerioden 
    Ergebnis(i)=convL(i) 
    Next 
    end if 
    ''Converts close data to required time frame=========================== 
    cmd = """Komp(#Close#,#" & comprArr(a) & "#)""" 
    if ScriptBerechneFormel(Eval(cmd), convC) then 
    For i= 1 to AllePerioden 
    Ergebnis(i)=convC(i) 
    Next 
    end if 
    ''Converts volume data to required time frame=========================== 
    cmd = """Komp(#Volume#,#" & comprArr(a) & "#)""" 
    if ScriptBerechneFormel(Eval(cmd), convV) then 
    For i= 1 to AllePerioden 
    Ergebnis(i)=convV(i) 
    Next 
    end if 
    ''Converts Open Interest data to required time frame=========================== 
    cmd = """Komp(#OpenInt#,#" & comprArr(a) & "#)""" 
    if ScriptBerechneFormel(Eval(cmd), convOI) then 
    For i= 1 to AllePerioden 
    Ergebnis(i)=convOI(i) 
    Next 
    end if 
    ''Write date time and price data in text file 
    for j= 2 to alleperioden-3 
    
    filetxt.WriteLine(FormatDateTime(d(j),2) & chr(9) & _ 
    FormatDateTime(d(j),4) & ":00" & chr(9) & _ 
    convO(j) & chr(9) & _ 
    convH(j) & chr(9) & _ 
    convL(j) & chr(9) & _ 
    convC(j) & chr(9) & _ 
    convV(j) & chr(9) & _ 
    convOI(j)) 
    
    next 
    filetxt.Close 
    next 
    ''next 
    ''------------------------------------FUNCTIONS AND SUBS------------------------------------------------ 
    ''------------------------------------------------------------------------------------------------------ 
    Function generateOutFileName(inTitle, tf) 
    '' creates output file name acoording to name of loaded asset 
    ''Example for input asset name: GBL_IB_5M_200806 = assetName_source_timeFrame_startDate(YYYYMM) 
    ''inTitleArray(0) = assetName 
    ''inTitleArray(1) = source 
    ''inTitleArray(2) = timeFrame 
    ''inTitleArray(3) = startDate 
    
    ''required time frames: "5","10","15","30","60","120","w","m","q","y" 
    inTitleArray = Split(inTitle, "_", -1, 1) 
    if StrComp(tf, "m", 0) = 0 then 
    tf = "mo" 
    elseif isnumeric(tf)then 
    tf = "m" & tf 
    End if 
    outTitle = inTitleArray(0) & "_"& tf 
    generateOutFileName = outTitle 
    End function 
    ''------------------------------------------------------------------------------------------------------ 
    Sub writeFileHeader() 
    ''Write header line 
    filetxt.WriteLine("Date" & chr(9) & "Time" & chr(9) & "Open" & chr(9) & _ 
    "High" & chr(9) & "Low" & chr(9) & "Close" & chr(9) & "Volume" & chr(9) & "OpenInt") 
    End Sub 
    ''------------------------------------------------------------------------------------------------------ 
    ''------------------------------------------------------------------------------------------------------
keep going on...
Inv [7.6.7]

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Giuseppe« (7. April 2010, 18:37)


pit2

unregistriert

7

Montag, 7. März 2011, 21:55

Modifikation Script mit kleinem Problem

Guten Abend,

vielleicht ist Guiseppe noch aktiv oder ein(e) andere(r) VBS Profi,

ich habe das obige Script so modifiziert daß der untenstehende Export in den Ordner c:\export erfolgt. Soweit so gut. Dann in eine Signalspalte eingefügt (wie von Hernn Knöpfel vorgeschlagen) und das Teil updatet sich selbst automatisch. Super. Einziges kleines Problem sind die genau 7 Zeilen am Ende es Exports, von denen ich keinen Schimmer habe wo sie herkommen. Könnnte da vilelleicht mal jemand draufschauen? für einen kleinen Tip bin ich dankbar.

Meine Modifikationen: Delimiter Tab durch Semikolon ersetzt, Volumen und OI disabled. Da ich das in der Signalspalte nutze habe ich alle Komprimierungen aus dem Array oben rausgenommen, da die Signalspalte ihre eigene Komprimierung überstülpt.

Lieben Dank und Gruß

Pit
»pit2« hat folgende Datei angehängt:

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 050

Wohnort: Giessen

8

Dienstag, 8. März 2011, 01:03

Ich würde mal denken, rechter Chartrand ?!

Der steht wohl auf 10 Perioden.

Quellcode

1
2
''Write date time and price data in text file 
for j= 2 to alleperioden-3


schnippelt die letzte drei davon ab, bleiben 7 übrig.

So in der Richtung dürfte es besser lüppen:

Quellcode

1
2
3
4
Startindex = ErsteDatenPeriode(Daten)
Endindex = LetzteDatenPeriode(Daten)
.....
for i=startindex  to endindex
If you think it´s expensive to hire a professional, wait until you hire an amateur.

pit2

unregistriert

9

Dienstag, 8. März 2011, 09:53

Hi Lenzelott,

Deine Vermutung war richtig, ich hatte inzwischen auch weiter experimentiert und einfach fogendes gemacht

for j= 2 to alleperioden-10

und das hat das Problem auch gelöst, aber ich hätte natürlich nichts dagegen, die 'saubere Lösung' zu fahren. Wenn ich deinen Code einfüge passiert das was du im Anhang siehst. Du hast ja auch Pünktchen drin, also gehört da etwas dazwischen. Ich habe echt davon keinen Plan, kannst du mir noch mal einen Tip geben was wohin gehört, und heißt das Argument wirklich 'DATEN' oder ist das nur ein Platzhalter.

Nochmal für Dummies wenn möglich ;-)

Gruß

Pit
»pit2« hat folgendes Bild angehängt:
  • Fehler.PNG

Giuseppe Männlich

Meister

Registrierungsdatum: 31. März 2004

Beiträge: 556

Wohnort: Wien

10

Dienstag, 8. März 2011, 11:05

Hallo Pit,

zu deinen Fragen:

1) "Daten" ist nur ein Platzhalter. "Daten" muss durch eine vorher deklarierte und initialisierte (befüllte) Variable ersetzt werden. In deinem Fall wäre das o, h, l, c.
2) In:

Startindex = ErsteDatenPeriode(Daten)
Endindex = LetzteDatenPeriode(Daten)
.....
for i=startindex to endindex

ist Startindex mit großem "S" geschrieben und Endindex "E" mit kleinem. Das muss noch angepasst werden.

Ich kann mir dein Code anschauen wenn du willst. Dann ist der Fehler schnell behoben. Kannst du es entweder hier posten, oder an mich mailen. :)

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

pit2

unregistriert

11

Dienstag, 8. März 2011, 16:02

Hallo Giuseppe,

wie nett ! :)

Also ich habe die Modifikation deines Skriptes nun mal angehängt und wie gesagt, das funktioniert so wie es ist. Ich betreibe das mit 3 Echtzeittiteln und habe aus dem Skript einen Indikator gemacht, den ich als Berechnung in eine Signalspalte eingefügt habe. Die Signalspalte gibt die Komprimierung vor, ich nutze 30min Daten.

Alles paletti soweit, jetzt sind da bestimmt einige Dinge drin die in dem Szenario nicht benötigt werden. Wie hast du denn den Indi eingebunden? Auch in der Signalspalte?

Ich habe auch mal versucht den Indikator einfach in einen neuen Teilchart einzufügen, da exportiert dann aber nichts. War nur zu meinem Verständnis, wie gesagt, das eigentliche Problem das ich lösen wollte, habe ich gelöst, ich kann in einer EW Software nun parallel Echzeitsignale bekommen, dank deines Skriptes, VIELEN DANK, das spart viel viel Geld für einen eSignal Feed.
Interessant ist, daß wo in deinem Indi oben die Komprimierung vorgegeben wird,

Dim comprArr, convO, convH, convL, convC, convV, convOI, cmd
comprArr = Array("5","10")

das muss von der Komprimierung her kleiner sein als die eingestellte Komprimierung der Signalspalte, sonst bekomme ich doppelte Kerzen, zum Beispiel wenn ich hier "60" vorgebe und in der Signalspalte 30min Komp habe, dann wird im Textfile jede Kerze verdoppelt. Es scheint egal zu sein was im Skript steht, solange es nur kleiner ist als die Signalspalte. Ist irgendwie einleuchtend, auch wenn ich es nicht 100%ig durchblicke...

Lieben Gruß

Pit
»pit2« hat folgende Datei angehängt:
  • skript.txt (4,7 kB - 562 mal heruntergeladen - zuletzt: 9. April 2024, 11:12)

Giuseppe Männlich

Meister

Registrierungsdatum: 31. März 2004

Beiträge: 556

Wohnort: Wien

12

Dienstag, 8. März 2011, 23:19

Hallo Pit,

freut mich dass es geklappt hat. Du hast recht, in dem Indikator sind schon ziemlich viele Zeilen um sonst, da es für einen anderen Zweck gemacht wurde. Ich habe bis jetzt die Signalspalte noch nicht benutzt, finde es aber sehr hilfreich. Vor allem wenn man, so wie du, zusätzlichen Datenfeed benötigt.

Ich analysiere die Zeitreihen in Matlab und deswegen habe ich die Investox Daten (auch Indis) als txt-File benötigt. Ich habe es also nicht als Feed gebraucht, deswegen habe ich einfach nach dem Bedarf das Indi in den Chart gezogen, und schon hatte ich die Daten exportiert gehabt.

Ich habe jetzt ein neues Indi für dich geschrieben, der performanter sein sollte. Er schreibt die gesamte Zeitreihe in File nur beim anlegen und danach nur mehr die letzte Zeile, also die letzte Periode bei der Aktualisierung. Bei der letzten Version wurde die gesamte Datei bei jeder Aktualisierung neu erstellt. Das könnte bei kleineren Komprimierungen und längeren Zeitreihen performance Probleme bereiten. Die Komprmierung habe ich entfernt, da du es nicht benötigst, wie du geschrieben hast. Im Anhang findest du das erwähnte Indikator so weit als eine Beta version, da ich nicht wirklich Zeit hatte es zu Testen. Die gesamtzeitreihe wird korrekt in ein File geschrieben und auch wenn ich die letzte Zeile in bereit vorhandenem File lösche und dann in Investox F5 drücke (Aktualisierung) wird die letzte Periode in File korrekt geschrieben. Du kannst austesten wie es sich eingebunden innerhalb von der Signalspalte verhält. Lasse mich dann mal wissen ob noch was engepasst werden muss.

Zu dem Problem mit doppelten Kerzen kann ich so weit nicht viel sagen, da ich es noch nicht ausprobiert habe und weis auch nicht ob die Komprimierung die in der Signalspalte eingestellt ist immer größer sein muss als die Komprimierung des Titels selbs - was ich eigentlich erwarten würde.

exportPrice_SigSp_B1.Inn

Viel Erfolg.

LG aus Wien
Giuseppe
keep going on...
Inv [7.6.7]

pit2

unregistriert

13

Mittwoch, 9. März 2011, 08:00

Hammer !!

Boah. Vielen Dank, Giuseppe! :thumbsup:

Ich probier das durch und sag mal wie es klappt. 8)

Gruß

Pit

pit2

unregistriert

14

Mittwoch, 9. März 2011, 09:59

OK, ich habe den Indi mal eingebunden, und im Prinzip funktioniert das super. Das einzige Problem ist, daß während einer Periode die aktualisierten Kerzen hintereinander geschrieben und damit dupliziert werden, während eigentlich die letzte Kerze vor dem Refresh gelöscht bzw. gleich ganz überschrieben werden müsste, sonst habe ich auf dem Chart ganz viele Kerzen hintereinander für ein und dieselbe Periode. Eigentlich logisch.

Vielleicht ist es doch einfacher, das ganze File jedesmal neu zu schreiben? Ich habe nicht den Eindurck, daß da ein massives Performancethema auftritt, zumindest bei meinen drei Symbolen, mit denen ich das mache?

Gruß

Pit

Giuseppe Männlich

Meister

Registrierungsdatum: 31. März 2004

Beiträge: 556

Wohnort: Wien

15

Mittwoch, 9. März 2011, 14:13

Hallo Pit,

anbei die geänderte Version (schreibt alle Daten bei jeder Aktualisierung). Ich schaue mir dann noch die vorige Version, wo das Problem liegt ;)

LG
giuseppe

exportPrice_SignalSpalte_all_V1.Inn
keep going on...
Inv [7.6.7]

pit2

unregistriert

16

Mittwoch, 9. März 2011, 17:47

Das Teil rennt wie ein Zäpfchen :thumbsup:

EW-Mustererkennung realtime, wie genial ist das denn?

Giuseppe hat pm :)

Magno

unregistriert

17

Donnerstag, 7. April 2011, 13:09

Problem mit Pfad

Hallo Giuseppe...

vielen dank für den überarbeiteten indi. läuft bis auf eine kleinigkeit super. das ist genau das wonach ich immer gesucht habe....

ich kann mir nicht zusammenreimen, wieso investox beim pfad probleme hat. habe schon mehrere ""-kombinationen getestet, aber immer fehlermeldungen.
es geht um zeile 3:

Quellcode

1
2
3
4
5
6
7
8
9
10
'set file name and path
outFileName = generateOutFileName(BasisTitelName , "30")
outFilePath = "c:\Test\export\test.txt"

'find the start and end index of valid data 
StartIdx = ErsteDatenPeriode(o)
EndIdx = LetzteDatenPeriode(o)

'open file and write
Set filetxt = filesys.OpenTextFile(outFilePath, 2, True)


in dieser version funktioniert alles prima. bekomme das test.txt in diesen ordner mit allen daten. nur wäre das ganze mit individuellem titelnamen noch viel praktischer.
schreibe ich jedoch das ganze so, wie in deiner indi-version:

Quellcode

1
2
3
4
5
6
7
8
9
10
'set file name and path
outFileName = generateOutFileName(BasisTitelName , "30")
outFilePath = exportPath & "\export\" & outFileName & ".txt"

'find the start and end index of valid data 
StartIdx = ErsteDatenPeriode(o)
EndIdx = LetzteDatenPeriode(o)

'open file and write
Set filetxt = filesys.OpenTextFile(outFilePath, 2, True)


bekomme ich eine fehlermeldung zur filesys.opentextfile - zeile, da er den pfad nicht findet.

wie müsste denn die definition für outFilePath lauten, wenn das verzeichnis direkt angegeben wird ?
outFilePath = C:\Test\export\ & outFileName & ".txt" ??

mir ist aufgefallen, dass ganz unten im code eine unterberechnung steht, die noch bestimmte attribute dem namen hinzufügt. mir würde jedoch ein einfacher name des titels genügen.

vielen dank schon einmal..

frank

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

18

Donnerstag, 7. April 2011, 16:54

Hallo Frank

Im nächsten Update wird es wohl eine Verbesserung geben, wodurch die Schlüsselwörter BasisTitelWKN, BasisTitelName, BasisProjektName und BasisSystemName in VBScript in mehr Kontexten zur Verfügung stehen. Schätze, das könnte Dein Problem lösen; also einfach ein kleines bisschen Geduld und dann mit dem nächsten V6 Update probieren.
Gruss
Bernd

Giuseppe Männlich

Meister

Registrierungsdatum: 31. März 2004

Beiträge: 556

Wohnort: Wien

19

Donnerstag, 7. April 2011, 16:59

Hallo,

ich bin momentan noch in der Arbeit und kann es nicht testen, aber so weit ich es sehen kann sollte deine Zeile:

outFilePath = C:\Test\export\ & outFileName & ".txt"

korrekterweise so ausschauen:

outFilePath = "C:\Test\export\" & outFileName & ".txt"


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

Matthias123

unregistriert

20

Donnerstag, 7. April 2011, 17:55

Hallo,

ich vermute, dass in dem String outFilePath irgendein Sonderzeichen steht, welches nicht als Pfadangabe erlaubt ist.

Am besten mal die Variable outFilePath in ein Text-File schreiben und sich den Pfad ansehen.

Gruss
Matthias