Freitag, 19. April 2024, 12:59 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.

Manfred Wahl

unregistriert

1

Freitag, 2. November 2007, 18:07

VB Script - Dominanter Zyklus nach Ehlers

Hallo,

vielleicht kann mich jemand unterstützen. Ich bin dabei, für die Version 5 den Dominant Cycle Indikator nach Ehlers von Visual Basic nach VB Script zu übertragen. Aber irgendwie habe ich im Augenblick 2 linke Hände und stolpere von einer Fehlermeldung in die nächste. Konkret bin ich mir dann nie sicher, ob es an meinen eingerosteten Programmierkenntnissen liegt oder ein Fehler in VB Script oder Investox ist. Auch bei einem hochwertigen Prerelease kann das ja durchaus sein.

Und hier das Ausgangsmaterial:
  1. Mein altes Visual Basic Programm. Die Unterprogramme Smooth und Cycle stehen ganz unten DomCycle.txt
  2. Die EasyLanguage Vorlage von Ehlers


Im Augenblick hänge ich an der Meldung:
Fehler im Script: Typen unverträglich in Linie:
Q1(I) = (0.0962 * CYCLE(I) + 0.5769 * CYCLE(I-2) - 0.5769 * CYCLE(I-4) - 0.0962 * CYCLE(I-6)) * (0.5 + 0.08 * INSTPERIOD(I - 1))
und komme nicht weiter.

Der Indikator hat bisher 2 Parameter: Daten (Datenreihe) und Alpha(Defaultwert 0,07)
und das unten stehende Coding.

Gruß Manfred

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
Dim Smooth, Cycle, Q1, I1, Instperiod
Dim alpha1, alpha2
Dim StartIndex, EndIndex, i

''Start und Ende der verfügbaren Daten prüfen
Startindex=ErsteDatenPeriode(Daten)
EndIndex=LetzteDatenPeriode(Daten)

scriptberechneformel "(daten()+2*Ref(daten,-1)+2*Ref(daten,-2)+Ref(daten,-3))/6", smooth

for i= startindex to 7
   cycle(i) = 0
   Q1(i) = 0
   I1(i) = 0
   Instperiode(i) =0
next

alpha1 = (1-0.5*alpha)*(1-0.5*alpha)
alpha2 = (1-alpha) * (1-alpha)
for i = startindex + 3 to endindex
   Cycle(i) = alpha1 * (Smooth(i)-2*Smooth(i-1)+Smooth(i-2)) + 2 *(1-alpha)*Cycle(i-1)- alpha2 *Cycle(i-2)
next

for i = startindex + 6 to endindex
     Q1(i) = (0.0962 * Cycle(i) + 0.5769 * Cycle(i-2) - 0.5769 * Cycle(i-4) - 0.0962 * Cycle(i-6)) * (0.5 + 0.08 * InstPeriod(i - 1))
     I1(i) = Cycle(i - 3)
next

''Das Ergebnis zuweisen
For i = Startindex+1 To EndIndex
  Ergebnis(i)= cycle(i)
next

VBS

Fortgeschrittener

Registrierungsdatum: 9. November 2008

Beiträge: 109

2

Freitag, 26. November 2010, 12:25

Hallo,

einen kleinen Schritt bin ich wohl weiter gekommen ;-)

Letztendlich muß wohl Anke ran...... :D

VBS

1. Parameter: daten, datenreihe, close
2. Parameter alpha, wert, 0.7



StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)

Dim myArray(4), a(4), Median
Dim Smooth,Cycle,Q1,I1,InPhase,DeltaPhase,MedianDelta,DC,InstPeriod,Period,I2,Q2
ReDim Smooth(EndI),Cycle(EndI),Q1(EndI),I1(EndI),InstPeriod(EndI),DeltaPhase(EndI),MedianDelta(EndI),DC(EndI),Period(EndI)

For i = StartI + 7 To EndI

Smooth(i) = (Daten(i) + 2*Daten(i-1) + 2*Daten(i-2) + Daten(i-3)) / 3
Cycle(i) = (1-0.5*alpha)*(1-0.5*alpha)*(smooth(i)-2*Smooth(i-1)+Smooth(i-2))+2*(1-alpha)*cycle(i-1)-(1-alpha)*(1-alpha)*cycle(i-2)
Q1(i) = (0.962*Cycle(i) + 0.5769*Cycle(i-2) - 0.5769*Cycle(i-4) - 0.962*Cycle(i-6)) * (0.5 + 0.8*InstPeriod(i-1))
I1(i) = Cycle(i-3)

IF Q1(i) <> 0 and Q1(i-1) <> 0 Then
DeltaPhase(i) = (I1(i) / Q1(i) - I1(i-1) / Q1(i-1)) / (1 + I1(i)*I1(i-1) / (Q1(i)*Q1(i-1)))
End If

IF DeltaPhase(i) < 0.1 Then
DeltaPhase(i) = 0.1
End If

If DeltaPhase(i) > 1.1 Then
DeltaPhase(i) = 1.1
End If

myArray(0) = DeltaPhase(i)
myArray(1) = DeltaPhase(i-1)
myArray(2) = DeltaPhase(i-2)
myArray(3) = DeltaPhase(i-3)
myArray(4) = DeltaPhase(i-4)

a(0) = myArray(0)
a(1) = myArray(1)
a(2) = myArray(2)
a(3) = myArray(3)
a(4) = myArray(4)

BubbleSort(myArray)

MedianDelta(i) = Median

IF MedianDelta(i) = 0 Then
DC = 15
else DC = 6.28318 / MedianDelta(i) + 0.5
End If

'InstPeriod(i) = 0.33*DC + 0.67*InstPeriod(i-1)
'Period(i) = 0.15*InstPeriod(i) + 0.85*Period(i-1)

Ergebnis(i) = DC 'Period(i)
Next

Function BubbleSort(myArray)
Dim i, n, Temp
Dim Sortiert
n = UBound(a)
Do
Sortiert = True
For i = 0 To n - 1
If a(i) > a(i + 1) Then
Temp = a(i)
a(i) = a(i + 1)
a(i + 1) = Temp
Sortiert = False
End If
Next
Loop Until Sortiert
BubbleSort = a
Median = a(2)
End Function

Ganesha

unregistriert

3

Freitag, 26. November 2010, 23:31

Geht!?

Hallo Manfred,

für mich scheint der Code zu funktionieren. Also Dein zweites Code-Stück. Zumindest syntaktische Probleme gibt es nicht mehr. Was ist jetzt Dein Problem? :-)

Andere Frage: Es gibt von Anke eine ganze Latte von Ehler-Indikatoren auf ihrer Webseite. Und Dein Cycle sieht vom Code her aus wie der Cyber Cycle, den Du dort downloaden kannst.

Noch eine andere Frage: Was mich persönlich interessieren würde und was es nicht bei Anke gibt: (Falls Du Lust hast) der Zero Lag.

Viele Grüße

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

4

Samstag, 27. November 2010, 12:41

der Zero Lag

.. da ist doch einer in der Investox Forums Datenbank.
Gruss
Bernd