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.
Tim
unregistriert
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Tim« (4. Juli 2006, 17:39)
Tim
unregistriert
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 |
VBScript(#>> option explicit dim SH, ST, SA dim Datum dim Levels dim i, j,Maximum dim Kasten, KeyT, AlleKeys Set Levels = CreateObject("Scripting.Dictionary") ' Das Datum sowie Spalten Hoch, Tief und Kästchenanzahl pro Spalte holen GetDatum Datum scriptberechneformel "Spalte(SH)", SH scriptberechneformel "Spalte(ST)", ST scriptberechneformel "Spalte(SA)", SA ' Nun für jede Periode die Kästchen zählen for i=2 to AllePerioden if SH(i)<>Novalue then if fix(datum(i))>fix(Datum(i-1)) then ' Beim Tageswechsel, das Maximum auswerten if Levels.count>0 then maximum=0 AlleKeys=Levels.Keys ' Alle gezählten Levels untersuchen for j=0 to ubound(AlleKeys) if Levels(AlleKeys(j))>maximum then maximum=Levels(AlleKeys(j)) ergebnis(i)=Mid(AlleKeys(j),2) ' Der Key des Eintrags ist "#" & Kurslevel end if next else ergebnis(i)= 0 ' Kein Level gefunden end if ' Nach der Auswertung alle gespeicherten Levels löschen Levels.removeall else ' während eines Tages den Vorgänger-Wert verwenden if ergebnis(i-1)<>NoValue then ergebnis(i)=ergebnis(i-1) end if end if ' Ab hier erfolgt die Kästchen-Zählung pro Periode ' Zunächst die Kästchen-Größe in Punkten ermitteln if SA(i)>1 then Kasten=(SH(i)-ST(i))/(SA(i)-1) else Kasten=SH(i)-ST(i) end if for j = 1 to SA(i) ' Der Key des Eintrags ist das Kästchen-Kurslevel (davor ein #) KeyT="#" & ST(i)+(j-1)*Kasten-Kasten/2 ' Nun einfach für jedes Level eine 1 addieren, um das Kästchen zu zählen ' Bei Dictionary wird ein Element automatisch angelegt, wenn es noch ' nicht existiert Levels(KeyT)=Levels(KeyT)+1 next end if next <<#) |
Tim
unregistriert
Zitat
Bei Verwendung eines Indikators würde ich ein Problem darin sehen, geeignete Preisniveaus zu ermitteln, wenn waagerecht mehrmals an verschiedenen Niveaus die gleiche Boxenzahl auftritt?
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 |
VBScript(#>> option explicit dim SH, ST, SA dim Datum dim Levels dim i, j,Maximum dim Kasten, KeyT, AlleKeys dim TickSize Set Levels = CreateObject("Scripting.Dictionary") ' Das Datum sowie Spalten Hoch, Tief und Kästchenanzahl pro Spalte holen GetDatum Datum scriptberechneformel "Spalte(SH)", SH scriptberechneformel "Spalte(ST)", ST scriptberechneformel "Spalte(SA)", SA scriptberechneformel "#_MinPriceChange#", TickSize ' Nun für jede Periode die Kästchen zählen for i=2 to AllePerioden if SH(i)<>Novalue then if fix(datum(i))>fix(Datum(i-1)) then ' Beim Tageswechsel, das Maximum auswerten if Levels.count>0 then maximum=0 AlleKeys=Levels.Keys ' Alle gezählten Levels untersuchen for j=0 to ubound(AlleKeys) if Levels(AlleKeys(j))>maximum then maximum=Levels(AlleKeys(j)) ' Der Key des Eintrags ist "#" & Kurslevel ergebnis(i)=Mid(AlleKeys(j),2) - Kasten/2 end if next else ergebnis(i)= 0 ' Kein Level gefunden end if ' Nach der Auswertung alle gespeicherten Levels löschen Levels.removeall Kasten=0 else ' während eines Tages den Vorgänger-Wert verwenden if ergebnis(i-1)<>NoValue then ergebnis(i)=ergebnis(i-1) end if end if ' Ab hier erfolgt die Kästchen-Zählung pro Periode ' Zunächst die Kästchen-Größe in Punkten ermitteln if SA(i)>1 then Kasten=clng((SH(i)-ST(i))/TickSize(i))*TickSize(i)/(SA(i)-1) end if for j = 1 to SA(i) ' Der Key des Eintrags ist das Kästchen-Kurslevel (davor ein #) KeyT="#" & ST(i)+(j-1)*Kasten ' Nun einfach für jedes Level eine 1 addieren, um das Kästchen zu zählen ' Bei Dictionary wird ein Element automatisch angelegt, wenn es noch ' nicht existiert Levels(KeyT)=Levels(KeyT)+1 next end if next <<#) |
Tim
unregistriert
Zitat
Dieses Problem stellt sich bei Verwendung von Histogrammen aber genauso. In einem VBScript-Code kann man sogar eher noch flexibel damit umgehen. Die Frage ist nur, wie?