VBS Indikatoren, Investox, Visual Basic Script
|
VBS Indikatoren, Investox, Visual Basic Script
Auf dieser Seite sind VBS-Quellcodes verschiedener Indikatoren veröffentlicht.
Durch konkrete Beispiele für den Praxiseinsatz von Visual Basic Script soll allen interessierten Anwendern von Investox XL Version 5 die Einarbeitung in VBS als zusätzliche Programmiersprache erleichtert werden.
|
|
|
|
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
2.Parameter
| Name: |
Lag_Reduction |
| Typ: |
Wert |
| Standardwert: |
1,5 |
| Minimum: |
0,1 |
| Maximum: |
10 |
'VBS-Code:
StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)
Dim Coefcounter,Denominator,counter,Numerator,Counter1
For i = StartI + 7 To EndI
Numerator = 0
counter = 1
Denominator = 10.5
Do While counter < 8
If counter = 1 Then
Coefcounter = 1
ElseIf counter = 2 Then
Coefcounter = 2 + Lag_reduction
ElseIf counter = 3 Then
Coefcounter = 3 + Lag_reduction
ElseIf counter = 4 Then
Coefcounter = 3
ElseIf counter = 5 Then
Coefcounter = 2 - Lag_reduction
ElseIf counter = 6 Then
Coefcounter = 1 - Lag_reduction
ElseIf counter = 7 Then
Coefcounter = 0 - Lag_reduction
End If
Counter1 = counter - 1
Numerator = Numerator + Coefcounter * Daten(i - Counter1)
counter = counter + 1
Loop
Ergebnis(i) = Numerator / Denominator
Next
Download Adjustable Lag VBS-Indikator
|
|
|
| |
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
2.Parameter
| Name: |
Perioden |
| Typ: |
Wert |
| Standardwert: |
10 |
| Minimum: |
2 |
| Maximum: |
500 |
' VBS-Code
StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)
Dim Num, Denom, Counter
For i = StartI + Perioden - 1 To EndI
counter = 0
Num = 0
Denom = 0
Do While counter < Perioden
Num = Num + (1 + counter) * Daten(i - counter)
Denom = Denom + Daten(i - counter)
counter = counter + 1
Loop
If Denom <> 0 Then
Ergebnis(i) = -Num / Denom
Else
Ergebnis(i) = Daten(i)
End If
Next
Download Center of Gravity Filter
|
|
|
|
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
2.Parameter
| Name: |
Perioden |
| Typ: |
Wert |
| Standardwert: |
14 |
| Minimum: |
2 |
| Maximum: |
500 |
' VBS-Code
StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)
Dim Num, Denom, Counter
For i = StartI + Perioden - 1 To EndI
counter = 0
Num = 0
Denom = 0
Do While counter < Perioden
Num = Num + (1 + counter) * Daten(i - counter)
Denom = Denom + Daten(i - counter)
counter = counter + 1
Loop
If Denom <> 0 Then
Ergebnis(i) = -Num / Denom + (Perioden + 1) / 2
Else
Ergebnis(i) = Daten(i)
End If
Next
Download Center of Gravity Oszillator
 |
|
|
| |
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
2.Parameter
| Name: |
Perioden |
| Typ: |
Wert |
| Standardwert: |
14 |
| Minimum: |
2 |
| Maximum: |
500 |
' VBS-Code
StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)
Dim Alpha, Smooth, Cycle
ReDim Smooth(EndI),Cycle(EndI)
For i = StartI + 3 To EndI
Alpha = 2 / (Perioden + 1)
Smooth(i) = (Daten(i) + 2 * Daten(i - 1) + 2 * Daten(i - 2) + Daten(i - 3)) / 6
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)
If i <= StartI + 7 Then
Cycle(i) = (Daten(i) - 2 * Daten(i - 1) + Daten(i - 2)) / 4
End If
Ergebnis(i) = Cycle(i)
Next
Download Cyber Cycle Indikator
|
|
|
| |
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
2.Parameter
| Name: |
Perioden |
| Typ: |
Wert |
| Standardwert: |
20 |
| Minimum: |
2 |
| Maximum: |
500 |
' VBS-Code
StartI=ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)
Const Pi = 3.14159265
dim a,hp,Cyclic_Comp,Dummy,currentbar
ReDim hp(EndI),Cyclic_Comp(EndI)
For i = StartI + 3 To EndI
Dummy = (2 * Pi) / Perioden
A = (1 - Sin(dummy)) / Cos(dummy)
hp(i) = 0.5 * (1 + A) * (Daten(i) - Daten(i - 1)) + A * hp(i - 1)
Cyclic_Comp(i) = (hp(i) + (2 * (hp(i - 1)) + (2 * hp(i - 2)) + hp(i - 3))) / 6
currentbar = i - 1
If currentbar < 4 Then
Cyclic_Comp(i) = Daten(i) - Daten(i - 1)
End If
If currentbar = 1 Then
Cyclic_Comp(i) = 0
End If
Ergebnis(i) = Cyclic_Comp(i)
Next
Download Cyclic Component
 |
|
|
| |
Distance Coefficient Filter
|
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
2.Parameter
| Name: |
Perioden |
| Typ: |
Wert |
| Standardwert: |
15 |
| Minimum: |
2 |
| Maximum: |
500 |
' VBS-Code
StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)
Dim counter,Counter1,LookBack,SumCoef,Num,Filt,count2,Coef, Distance2
ReDim Coef(EndI), Distance2(Endi)
For i = StartI + (2 * Perioden) To EndI
counter = 0
LookBack = 1
Num = 0
SumCoef = 0
Do While counter < Perioden - 1
Distance2(i - counter) = 0
For LookBack = 1 To Perioden
Counter1 = counter + LookBack
Distance2(i - counter) = Distance2(i - counter) + (Daten(i - counter) - Daten(i - Counter1)) * (Daten(i - counter) - Daten(i - Counter1))
LookBack = LookBack + 1
Next
Coef(i - counter) = Distance2(i - counter)
Num = Num + Coef(i - counter) * Daten(i - counter)
SumCoef = SumCoef + Coef(i - counter)
counter = counter + 1
Loop
If SumCoef <> 0 Then
Ergebnis(i) = Num / SumCoef
Else
Ergebnis(i) = 0
End If
Next Download Distance Coefficient Filter
 |
|
|
| |
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
2. Parameter
| Name: |
Indikator |
| Typ: |
Datenreihe |
| Standardwert: |
close |
3.Parameter
| Name: |
Perioden |
| Typ: |
Wert |
| Standardwert: |
15 |
| Minimum: |
2 |
| Maximum: |
500 |
' VBS-Code
Starti=ErsteDatenPeriode(Daten)
Endi=LetzteDatenPeriode(Daten)
Dim counter,Num,SumCoef
For i = StartI + Perioden - 1 To EndI
counter = 0
Num = 0
SumCoef = 0
Do While counter < Perioden
Num = Num + Daten(i - counter) * Indikator(i - counter)
SumCoef = SumCoef + Daten(i - counter)
counter = counter + 1
Loop
If SumCoef <> 0 Then
Ergebnis(i) = Num / SumCoef
Else
Ergebnis(i) = Indikator(i)
End If
Next Download Ehlers Filter
 |
|
|
| |
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
2. Parameter
| Name: |
Fastlimit |
| Typ: |
Wert |
| Standardwert: |
0,5 |
| Minimum: |
0 |
| Maximum: |
2 |
3.Parameter
| Name: |
Slowlimit |
| Typ: |
Wert |
| Standardwert: |
0,05 |
| Minimum: |
0 |
| Maximum: |
3 |
' VBS-Code
StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)
Dim InPhase,Quadrature,value1,Imult,Qmult,Period,SmoothDetrender,Q1,I1,Ji,JQ,I2,Q2,Re,IM,Smoothperiod_
,Phase,DeltaPhase,Alpha,MAMA,FAMA
ReDim InPhase(EndI),Quadrature(EndI),value1(EndI),Period(EndI),Smooth(EndI),Detrender(EndI),Q1(Endi),I1(Endi)_
,Ji(Endi),JQ(Endi),I2(Endi),Q2(Endi),Re(Endi),IM(Endi),Smoothperiod(Endi),Phase(Endi)_
,DeltaPhase(Endi),Alpha(Endi),MAMA(Endi),FAMA(Endi)
Imult = 0.635
Qmult = 0.338
For i = StartI + 6 To EndI
Smooth(i) = (4 * Daten(i) + 3 * Daten(i - 1) + 2 * Daten(i - 2) + Daten(i - 3)) / 10
Detrender(i) = (0.0962 * Smooth(i) + 0.5769 * Smooth(i - 2) - 0.5769 * Smooth(i - 4) - 0.0962 * Smooth(i - 6)) * (0.075 * Period(i - 1) + 0.54)
''{Compute InPhase and Quadrature components}
Q1(i) = (0.0962 * Detrender(i) + 0.5769 * Detrender(i - 2) - 0.5769 * Detrender(i - 4) - 0.0962 * Detrender(i - 6)) * (0.075 * Period(i - 1) + 0.54)
I1(i) = Detrender(i - 3)
''{Advance the phase of I1 and Q1 by 90 degrees}
Ji(i) = (0.0962 * I1(i) + 0.5769 * I1(i - 2) - 0.5769 * I1(i - 4) - 0.0962 * I1(i - 6)) * (0.075 * Period(i - 1) + 0.54)
JQ(i) = (0.0962 * Q1(i) + 0.5769 * Q1(i - 2) - 0.5769 * Q1(i - 4) - 0.0962 * Q1(i - 6)) * (0.075 * Period(i - 1) + 0.54)
''{Phasor addition for 3 bar averaging)}
I2(i) = I1(i) - JQ(i)
Q2(i) = Q1(i) + Ji(i)
''{Smooth the I and Q components before applying the discriminator}
I2(i) = 0.2 * I2(i) + 0.8 * I2(i - 1)
Q2(i) = 0.2 * Q2(i) + 0.8 * Q2(i - 1)
''{Homodyne Discriminator}
Re(i) = I2(i) * I2(i - 1) + Q2(i) * Q2(i - 1)
IM(i) = I2(i) * Q2(i - 1) - Q2(i) * I2(i - 1)
Re(i) = 0.2 * Re(i) + 0.8 * Re(i - 1)
IM(i) = 0.2 * IM(i) + 0.8 * IM(i - 1)
If IM(i) <> 0 And Re(i) <> 0 Then
Period(i) = 360 / Atn(IM(i) / Re(i))
End If
If Period(i) > 1.5 * Period(i - 1) Then
Period(i) = 1.5 * Period(i - 1)
End If
If Period(i) < 0.67 * Period(i - 1) Then
Period(i) = 0.67 * Period(i - 1)
End If
If Period(i) < 6 Then
Period(i) = 6
End If
If Period(i) > 50 Then
Period(i) = 50
End If
Period(i) = 0.2 * Period(i) + 0.8 * Period(i - 1)
Smoothperiod(i) = 0.33 * Period(i) + 0.67 * Smoothperiod(i - 1)
If I1(i) <> 0 Then
Phase(i) = (Atn(Q1(i) / I1(i)))
DeltaPhase(i) = Phase(i - 1) - Phase(i)
End If
If DeltaPhase(i) < 1 Then
DeltaPhase(i) = 1
End If
Alpha(i) = Fastlimit / DeltaPhase(i)
If Alpha(i) < Slowlimit Then
Alpha(i) = Slowlimit
End If
If i = StartI + 6 Then
MAMA(i) = Daten(i)
FAMA(i) = Daten(i)
Else
MAMA(i) = Alpha(i) * Daten(i) + (1 - Alpha(i)) * MAMA(i - 1)
FAMA(i) = 0.5 * Alpha(i) * MAMA(i) + (1 - 0.5 * Alpha(i)) * FAMA(i - 1)
End If
Ergebnis(i) = FAMA(i)
Next
Download FAMA
 |
|
|
| |
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
2. Parameter
| Name: |
Perioden |
| Typ: |
Wert |
| Standardwert: |
14 |
| Minimum: |
2 |
| Maximum: |
500 |
3.Parameter
| Name: |
Stoclength |
| Typ: |
Wert |
| Standardwert: |
8 |
| Minimum: |
2 |
| Maximum: |
500 |
' VBS-Code
StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)
Dim Alpha,Smooth,Cycle,counter,Maxval,Counter1,MinVal,value1,value2,value3
ReDim Smooth(EndI),Cycle(EndI),value1(EndI),value2(EndI),value3(EndI)
For i = StartI + Perioden + 1 To EndI
Alpha = 2 / (Perioden + 1)
Smooth(i) = (Daten(i) + 2 * Daten(i - 1) + 2 * Daten(i - 2) + Daten(i - 3)) / 6
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)
If i <= StartI + 7 Then
Cycle(i) = (Daten(i) - 2 * Daten(i - 1) + Daten(i - 2)) / 4
End If
counter = 0
Maxval = -999
Do While counter < StocLength
If Maxval < Cycle(i - counter) Then
Maxval = Cycle(i - counter)
End If
counter = counter + 1
Loop
Counter1 = 0
MinVal = 999
Do While Counter1 < StocLength
If MinVal > Cycle(i - Counter1) Then
MinVal = Cycle(i - Counter1)
End If
Counter1 = Counter1 + 1
Loop
If Maxval <> MinVal Then
value1(i) = (Cycle(i) - MinVal) / (Maxval - MinVal)
value2(i) = (4 * value1(i) + 3 * value1(i - 1) + 2 * value1(i - 2) + value1(i - 3)) / 10
value3(i) = 0.5 * Log((1 + 1.98 * (value2(i) - 0.5)) / (1 - 1.98 * (value2(i) - 0.5)))
End If
Ergebnis(i) = value3(i)
Next
Download Fisher Cyber Cycle
|
|
|
| |
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
2. Parameter
| Name: |
Perioden |
| Typ: |
Wert |
| Standardwert: |
8 |
| Minimum: |
2 |
| Maximum: |
500 |
' VBS-Code
StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)
Dim Cycle,counter_max,Maxval,Counter_min,MinVal,value1,value2,value3,counter,num,denom
ReDim Cycle(EndI),value1(EndI),value2(EndI),value3(EndI)
For i = StartI + Perioden + 1 To EndI
counter = 0
Num = 0
Denom = 0
Do While counter < Perioden
Num = Num + (1 + counter) * Daten(i - counter)
Denom = Denom + Daten(i - counter)
counter = counter + 1
Loop
If Denom <> 0 Then
Cycle(i) = -Num / Denom + (Perioden + 1) / 2
Else
Cycle(i) = Daten(i)
End If
Counter_max = 0
Maxval = -999
Do While Counter_max < Perioden
If Maxval < Cycle(i - Counter_max) Then
Maxval = Cycle(i - Counter_max)
End If
Counter_max = Counter_max + 1
Loop
Counter_min = 0
MinVal = 999
Do While Counter_min < Perioden
If MinVal > Cycle(i - Counter_min) Then
MinVal = Cycle(i - Counter_min)
End If
Counter_min = Counter_min + 1
Loop
If Maxval <> MinVal Then
value1(i) = (Cycle(i) - MinVal) / (Maxval - MinVal)
value2(i) = (4 * value1(i) + 3 * value1(i - 1) + 2 * value1(i - 2) + value1(i - 3)) / 10
value3(i) = 0.5 * Log((1 + 1.98 * (value2(i) - 0.5)) / (1 - 1.98 * (value2(i) - 0.5)))
End If
Ergebnis(i) = value3(i)
Next
Download Fisher Center of Gravity
|
|
|
| |
Fisher Relative Vigor Index
|
1. Parameter
| Name: |
Perioden |
| Typ: |
Wert |
| Standardwert: |
14 |
| Minimum: |
2 |
| Maximum: |
500 |
' VBS-Code
dim i,closedaten, highdaten,lowdaten,opendaten
getdaten "Close",closedaten
getdaten "High",highdaten
getdaten "Low",lowdaten
getdaten "Open",opendaten
StartI = ErsteDatenPeriode(closeDaten)
EndI = LetzteDatenPeriode(closeDaten)
Dim value1,value2,Num,Denom,counter,RVI,Counter_max,Counter_min,Maxval,MinVal,value3,Value4,Value5
ReDim value1(EndI),value2(EndI),RVI(EndI),value3(EndI),Value4(EndI),Value5(EndI)
For i = StartI + Perioden + 1 To EndI
value1(i) = ((CloseDaten(i) - openDaten(i)) + 2 * (CloseDaten(i - 1) - openDaten(i - 1)) + 2 * (CloseDaten(i - 2) - openDaten(i - 2)) + (CloseDaten(i - 3) - openDaten(i - 3))) / 6
value2(i) = ((HighDaten(i) - LowDaten(i)) + 2 * (HighDaten(i - 1) - LowDaten(i - 1)) + 2 * (HighDaten(i - 2) - LowDaten(i - 2)) + (HighDaten(i - 3) - LowDaten(i - 3))) / 6
Num = 0
Denom = 0
counter = 0
Do While counter < Perioden
Num = Num + value1(i - counter)
Denom = Denom + value2(i - counter)
counter = counter + 1
Loop
If Denom <> 0 Then
RVI(i) = Num / Denom
Else
RVI(i) = CloseDaten(i)
End If
Counter_max = 0
Maxval = -999
Do While Counter_max < Perioden
If Maxval < RVI(i - Counter_max) Then
Maxval = RVI(i - Counter_max)
End If
Counter_max = Counter_max + 1
Loop
Counter_min = 0
MinVal = 999
Do While Counter_min < Perioden
If MinVal > RVI(i - Counter_min) Then
MinVal = RVI(i - Counter_min)
End If
Counter_min = Counter_min + 1
Loop
If Maxval <> MinVal Then
value3(i) = (RVI(i) - MinVal) / (Maxval - MinVal)
Value4(i) = (4 * value3(i) + 3 * value3(i - 1) + 2 * value3(i - 2) + value3(i - 3)) / 10
Value5(i) = 0.5 * Log((1 + 1.98 * (Value4(i) - 0.5)) / (1 - 1.98 * (Value4(i) - 0.5)))
End If
Ergebnis(i) = Value5(i)
Next
Download Fisher Relative Vigor Index
|
|
|
| |
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
2. Parameter
| Name: |
Alpha |
| Typ: |
Wert |
| Standardwert: |
0,2 |
| Minimum: |
0,01 |
| Maximum: |
3 |
'VBS-Code
StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)
Dim LO,L1,L2,L3,Filt,Fir
ReDim L0(EndI),L1(EndI),L2(EndI),L3(EndI),Filt(EndI),Fir(EndI)
For i = StartI + 6 To EndI
L0(i) = Alpha * Daten(i) + (1 - Alpha) * L0(i - 1)
L1(i) = -(1 - Alpha) * L0(i) + L0(i - 1) + (1 - Alpha) * L1(i - 1)
L2(i) = -(1 - Alpha) * L1(i) + L1(i - 1) + (1 - Alpha) * L2(i - 1)
L3(i) = -(1 - Alpha) * L2(i) + L2(i - 1) + (1 - Alpha) * L3(i - 1)
Filt(i) = (L0(i) + 2 * L1(i) + 2 * L2(i) + L3(i)) / 6
Fir(i) = (Filt(i) + 2 * Filt(i - 1) + 2 * Filt(i - 2) + Filt(i - 3)) / 6
If i <= StartI + 50 Then
Ergebnis(i) = NoValue
Else
Ergebnis(i) = Fir(i)
End If
Next
Download FIR-Filter
 |
|
|
| |
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
2. Parameter
| Name: |
Perioden |
| Typ: |
Wert |
| Standardwert: |
14 |
| Minimum: |
2 |
| Maximum: |
500 |
'VBS-Code
dim i,highdaten,lowdaten
getdaten "High",highdaten
getdaten "Low",lowdaten
StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)
Dim count,N1,N2,N3,HH,LL,Dimen,Alpha,Filt,Highest,Lowest,counter_Highest,counter_lowest
ReDim Filt(EndI)
For i = StartI + Perioden To EndI
counter_Highest = 0
Highest = -999999999
Do While counter_Highest < Perioden
If Highest < HighDaten(i - counter_Highest) Then
Highest = HighDaten(i - counter_Highest)
End If
counter_Highest = counter_Highest + 1
Loop
counter_lowest = 0
Lowest = 99999999
Do While counter_lowest < Perioden
If Lowest > LowDaten(i - counter_lowest) Then
Lowest = LowDaten(i - counter_lowest)
End If
counter_lowest = counter_lowest + 1
Loop
if n=0 then
n=0.0000001
end if
N3 = (Highest - Lowest) / Perioden
HH = HighDaten(i)
LL = LowDaten(i)
count = 0
For count = 0 To Perioden / 2 - 1
If HighDaten(i - count) > HH Then
HH = HighDaten(i - count)
End If
If LowDaten(i - count) < LL Then
LL = LowDaten(i - count)
End If
count = count + 1
Next
N1 = (HH - LL) / (Perioden / 2)
HH = HighDaten(i - Perioden / 2)
LL = LowDaten(i - Perioden / 2)
For count = Perioden / 2 To Perioden - 1
If HighDaten(i - count) > HH Then
HH = HighDaten(i - count)
End If
If LowDaten(i - count) < LL Then
LL = LowDaten(i - count)
End If
count = count + 1
Next
N2 = (HH - LL) / (Perioden / 2)
If N1 > 0 And N2 > 0 And N3 > 0 Then
Dimen = (Log(N1 + N2) - Log(N3)) / Log(2)
End If
Alpha = Exp(-4.6 * (Dimen - 1))
If Alpha < 0.01 Then
Alpha = 0.01
End If
If Alpha > 1 Then
Alpha = 1
End If
Filt(i) = Alpha * Daten(i) + (1 - Alpha) * Filt(i - 1)
If i <= StartI + Perioden Then
Filt(i) = Daten(i)
End If
Ergebnis(i) = Filt(i)
Next
Download FRAMA
|
|
|
| |
Hilbert Transformation Inphase
|
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
'VBS-Code
StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)
Dim InPhase,Quadrature,value1,Imult,Qmult
ReDim InPhase(EndI),Quadrature(EndI),value1(EndI)
Imult = 0.635
Qmult = 0.338
For i = StartI + 7 To EndI
value1(i) = Daten(i) - Daten(i - 7)
InPhase(i) = 1.25 * (value1(i - 4) - Imult * value1(i - 2)) + Imult * InPhase(i - 3)
Quadrature(i) = value1(i - 2) - Qmult * value1(i) + Qmult * Quadrature(i - 2)
Ergebnis(i) = InPhase(i)
Next
Download Hilbert Inphase
|
|
|
| |
Hilbert Transformation Quadrature
|
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
' VBS-Code
StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)
Dim InPhase,Quadrature,value1,Imult,Qmult
ReDim InPhase(EndI),Quadrature(EndI),value1(EndI)
Imult = 0.635
Qmult = 0.338
For i = StartI +7 To EndI
value1(i) = Daten(i) - Daten(i - 7)
InPhase(i) = 1.25 * (value1(i - 4) - Imult * value1(i - 2)) + Imult * InPhase(i - 3)
Quadrature(i) = value1(i - 2) - Qmult * value1(i) + Qmult * Quadrature(i - 2)
Ergebnis(i) = Quadrature(i)
Next
Download Hilbert Quadrature
|
|
|
| |
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
2. Parameter
| Name: |
Perioden |
| Typ: |
Wert |
| Standardwert: |
20 |
| Minimum: |
2 |
| Maximum: |
500 |
' VBS-Code
StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)
Dim Counter0001,Sum0001,SMA,A,sl,ssl,Inst_Trend
ReDim SMA(EndI),sl(EndI),ssl(EndI),Inst_Trend(EndI)
Function MAX(val1, val2)
If val1 > val2 Then
MAX = val1
Else
MAX = val2
End If
End Function
For i = StartI + MAX(Perioden, 3) To EndI
Counter0001 = 0
Sum0001 = 0
Do While Counter0001 < Perioden
Sum0001 = Sum0001 + Daten(i - Counter0001)
Counter0001 = Counter0001 + 1
Loop
SMA(i) = Sum0001 / Perioden
A = Perioden - 1
sl(i) = Daten(i) - Daten(i - A)
ssl(i) = (sl(i) + 2 * sl(i - 1) + 2 * sl(i - 2) + sl(i - 3)) / 6
If i = StartI + Perioden Then
Inst_Trend(i) = Daten(i)
Else
Inst_Trend(i) = SMA(i) + 0.5 * ssl(i)
End If
Ergebnis(i) = Inst_Trend(i)
Next
Download Instantaneous Trendline
|
|
|
| |
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
2. Parameter
| Name: |
Alpha |
| Typ: |
Wert |
| Standardwert: |
0,2 |
| Minimum: |
0,01 |
| Maximum: |
3 |
' VBS-Code
StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)
Dim Lo,L1,L2,L3,Filt,Fir
ReDim L0(EndI),L1(EndI),L2(EndI),L3(EndI),Filt(EndI),Fir(EndI)
For i = StartI + 6 To EndI
L0(i) = alpha * Daten(i) + (1 - alpha) * L0(i - 1)
L1(i) = -(1 - alpha) * L0(i) + L0(i - 1) + (1 - alpha) * L1(i - 1)
L2(i) = -(1 - alpha) * L1(i) + L1(i - 1) + (1 - alpha) * L2(i - 1)
L3(i) = -(1 - alpha) * L2(i) + L2(i - 1) + (1 - alpha) * L3(i - 1)
Filt(i) = (L0(i) + 2 * L1(i) + 2 * L2(i) + L3(i)) / 6
Fir(i) = (Daten(i) + 2 * Daten(i - 1) + 2 * Daten(i - 2) + Daten(i - 3)) / 6
If i <= StartI + 50 Then
Ergebnis(i) = NoValue
Else
Ergebnis(i) = Filt(i)
End If
Next
Download Laguerre Filter
|
|
|
| |
1. Parameter
| Name: |
Gamma |
| Typ: |
Wert |
| Standardwert: |
0,5 |
| Minimum: |
0,01 |
| Maximum: |
10 |
' VBS-Code
dim i,closedaten
getdaten "Close",closedaten
StartI = ErsteDatenPeriode(closeDaten)
EndI = LetzteDatenPeriode(closeDaten)
Dim Lo,L1,L2,L3,CU,CD,Laguerre
ReDim L0(EndI),L1(EndI),L2(EndI),L3(EndI),Laguerre(EndI)
For i = StartI + 1 To EndI
L0(i) = (1 - Gamma) * CloseDaten(i) + Gamma * L0(i - 1)
L1(i) = -Gamma * L0(i) + L0(i - 1) + Gamma * L1(i - 1)
L2(i) = -Gamma * L1(i) + L1(i - 1) + Gamma * L2(i - 1)
L3(i) = -Gamma * L2(i) + L2(i - 1) + Gamma * L3(i - 1)
CU = 0
CD = 0
If L0(i) >= L1(i) Then
CU = L0(i) - L1(i)
Else
CD = L1(i) - L0(i)
End If
If L1(i) >= L2(i) Then
CU = CU + L1(i) - L2(i)
Else
CD = CD + L2(i) - L1(i)
End If
If L2(i) >= L3(i) Then
CU = CU + L2(i) - L3(i)
Else
CD = CD + L3(i) - L2(i)
End If
If CU + CD <> 0 Then
Laguerre(i) = CU / (CU + CD)
End If
Ergebnis(i) = Laguerre(i)
Next
Download Laguerre RSI
|
|
|
| |
Meander Indikatoren (Thomas Stridsman)
|
keine Parameter
' VBS-Code
1. Indikator -
Meander VS_High
dim i
dim setarr
dim myhigh
dim mylow
dim myclose
dim myopen
getdaten "High",myhigh
getdaten "Low",mylow
getdaten "close",myclose
getdaten "open",myopen
dim vsstd(1),SumVS,AvgVS,DiffVs,StdVS,DiffArr,VSLow,VSMid,VSHigh, sumarr
dim vs(20)
dim FName,TradeStr1
For i = 8 To letztedatenperiode(myclose)
for setarr=0 to 4
vs(setarr*4+0)=(myopen(i-setarr)-myclose(i-setarr-1))/myclose(i-setarr-1)
vs(setarr*4+1)=(myhigh(i-setarr)-myclose(i-setarr-1))/myclose(i-setarr-1)
vs(setarr*4+2)=(mylow(i-setarr)-myclose(i-setarr-1))/myclose(i-setarr-1)
vs(setarr*4+3)=(myclose(i-setarr)-myclose(i-setarr-1))/myclose(i-setarr-1)
next
For SumArr=0 to 19
if sumArr=0 then
SumVs=0
end if
SumVS=SumVS+VS(SumArr)
if SumArr=19 then
AvgVS=SumVs/20
end if
For DiffArr =0 to 19
if Diffarr=0 then
Diffvs=0
end if
Diffvs= diffvs + (vs(diffarr)-avgvs)*(vs(diffarr)-avgvs)
if diffarr = 19 then
stdvs= sqr(DiffVS/20)
end if
next
next
vshigh=(1+(avgvs+stdvs*1 ))
ergebnis(i)= vshigh*myclose(i)
next
2. Indikator - Meander VS_Mid
dim i
dim setarr
dim myhigh
dim mylow
dim myclose
dim myopen
getdaten "High",myhigh
getdaten "Low",mylow
getdaten "close",myclose
getdaten "open",myopen
dim vsstd(1),SumVS,AvgVS,DiffVs,StdVS,DiffArr,VSLow,VSMid,VSHigh(0), sumarr
dim vs(20)
dim FName,TradeStr1
For i = 8 To letztedatenperiode(myclose)
for setarr=0 to 4
vs(setarr*4+0)=(myopen(i-setarr)-myclose(i-setarr-1))/myclose(i-setarr-1)
vs(setarr*4+1)=(myhigh(i-setarr)-myclose(i-setarr-1))/myclose(i-setarr-1)
vs(setarr*4+2)=(mylow(i-setarr)-myclose(i-setarr-1))/myclose(i-setarr-1)
vs(setarr*4+3)=(myclose(i-setarr)-myclose(i-setarr-1))/myclose(i-setarr-1)
next
For SumArr=0 to 19
if sumArr=0 then
SumVs=0
end if
SumVS=SumVS+VS(SumArr)
if SumArr=19 then
AvgVS=SumVs/20
end if
For DiffArr =0 to 19
if Diffarr=0 then
Diffvs=0
end if
Diffvs= diffvs + (vs(diffarr)-avgvs)*(vs(diffarr)-avgvs)
if diffarr = 19 then
stdvs= sqr(DiffVS/20)
end if
next
next
vsmid=(1+AvgVS)
ergebnis(i)= vsmid*myclose(i)
next
3. Indikator - Meander VS_Low
dim i
dim setarr
dim myhigh
dim mylow
dim myclose
dim myopen
getdaten "High",myhigh
getdaten "Low",mylow
getdaten "close",myclose
getdaten "open",myopen
dim vsstd(1),SumVS,AvgVS,DiffVs,StdVS,DiffArr,VSLow,VSMid(0),VSHigh(0), sumarr
dim vs(20)
dim FName,TradeStr1
For i = 8 To letztedatenperiode(myclose)
for setarr=0 to 4
vs(setarr*4+0)=(myopen(i-setarr)-myclose(i-setarr-1))/myclose(i-setarr-1)
vs(setarr*4+1)=(myhigh(i-setarr)-myclose(i-setarr-1))/myclose(i-setarr-1)
vs(setarr*4+2)=(mylow(i-setarr)-myclose(i-setarr-1))/myclose(i-setarr-1)
vs(setarr*4+3)=(myclose(i-setarr)-myclose(i-setarr-1))/myclose(i-setarr-1)
next
For SumArr=0 to 19
if sumArr=0 then
SumVs=0
end if
SumVS=SumVS+VS(SumArr)
if SumArr=19 then
AvgVS=SumVs/20
end if
For DiffArr =0 to 19
if Diffarr=0 then
Diffvs=0
end if
Diffvs= diffvs + (vs(diffarr)-avgvs)*(vs(diffarr)-avgvs)
if diffarr = 19 then
stdvs= sqr(DiffVS/20)
end if
next
next
vslow=(1+(avgvs-stdvs*1 ))
ergebnis(i)= vslow*myclose(i)
next
Download Meander Indikatoren
|
|
|
| |
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
2. Parameter
| Name: |
Perioden |
| Typ: |
Wert |
| Standardwert: |
20 |
| Minimum: |
2 |
| Maximum: |
500 |
' VBS-Code
StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)
Dim A,hp,Cyclic_Comp,Dummy,Counter,Sum,SMA,B,sl,ssl,shp,Model_Market,ITrend,currentbar
ReDim hp(EndI),Cyclic_Comp(EndI),SMA(EndI),ssl(EndI),shp(EndI),sl(EndI),Model_Market(EndI),ITrend(EndI)
Function MAX(val1, val2)
If val1 > val2 Then
MAX = val1
Else
MAX = val2
End If
End Function
Const Pi = 3.14159265
For i = StartI + MAX(Perioden, 3) To EndI
Counter = 0
Sum = 0
Do While Counter < Perioden
Sum = Sum + Daten(i - Counter)
Counter = Counter + 1
Loop
SMA(i) = Sum / Perioden
B = Perioden - 1
sl(i) = Daten(i) - Daten(i - B)
ssl(i) = (sl(i) + 2 * sl(i - 1) + 2 * sl(i - 2) + sl(i - 3)) / 6
ITrend(i) = SMA(i) + 0.5 * ssl(i)
Dummy = (2 * Pi) / Perioden
A = (1 - Sin(Dummy)) / Cos(Dummy)
hp(i) = 0.5 * (1 + A) * (Daten(i) - Daten(i - 1)) + A * hp(i - 1)
Cyclic_Comp(i) = (hp(i) + (2 * (hp(i - 1)) + (2 * hp(i - 2)) + hp(i - 3))) / 6
currentbar = i - 1
If currentbar < 4 Then
Cyclic_Comp(i) = Daten(i) - Daten(i - 1)
End If
If currentbar = 1 Then
Cyclic_Comp(i) = 0
End If
Model_Market(i) = ITrend(i) + Cyclic_Comp(i)
Ergebnis(i) = Model_Market(i)
Next
Download Modeling the Market
|
|
|
| |
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
2. Parameter
| Name: |
Perioden |
| Typ: |
Wert |
| Standardwert: |
10 |
| Minimum: |
2 |
| Maximum: |
500 |
' VBS-Code
StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)
Dim Counter0001,Sum0001,SMA,Counter0002,Sum0002,Counter0003,Sum0003,Avg0002,A0_
,Devation0003,Stdabw,Oma ,Min0, Konsta
ReDim Avg0002(EndI),Devation0003(EndI),Stdabw(EndI),SMA(Endi)
For i = StartI + Perioden To EndI
'' ******SMA
Counter0001 = 0
Sum0001 = 0
Do While Counter0001 < Perioden
Sum0001 = Sum0001 + Daten(i - Counter0001)
Counter0001 = Counter0001 + 1
Loop
SMA(i) = Sum0001 / Perioden
''****Standardabweichung
Counter0002 = 0
Sum0002 = 0
Counter0003 = 0
Sum0003 = 0
Do While Counter0002 < Perioden
Sum0002 = Sum0002 + Daten(i - Counter0002)
Counter0002 = Counter0002 + 1
Loop
Avg0002(i) = Sum0002 / Perioden
Do While Counter0003 < Perioden
A0 = Daten(i - Counter0003) - Avg0002(i)
Sum0003 = Sum0003 + (A0 * A0)
Counter0003 = Counter0003 + 1
Loop
Devation0003(i) = Sqr(Sum0003 / Perioden)
If Devation0003(i) = 0 Then
Stdabw(i) = 0.00001
Else
Stdabw(i) = Devation0003(i) * Devation0003(i)
End If
Konsta = Stdabw(i) / (((Oma - SMA(i)) + 0.0001) * ((Oma - SMA(i)) + 0.0001))
If 1 < Konsta Then
Min0 = 1
Else
Min0 = Konsta
End If
If i <= Perioden Then
Oma = SMA(i)
Else
Oma = SMA(i) + Min0 * (Oma - SMA(i))
End If
'' ******ENDERGEBNIS
Ergebnis(i) = Oma
Next
Download OMA
 |
|
|
| |
1. Parameter
| Name: |
Perioden |
| Typ: |
Wert |
| Standardwert: |
14 |
| Minimum: |
2 |
| Maximum: |
500 |
' VBS-Code
dim i,closedaten, highdaten,lowdaten,opendaten
getdaten "Close",closedaten
getdaten "High",highdaten
getdaten "Low",lowdaten
getdaten "Open",opendaten
StartI = ErsteDatenPeriode(closeDaten)
EndI = LetzteDatenPeriode(closeDaten)
Dim Value1,Value2,Num,Denom,Counter
ReDim Value1(EndI),Value2(EndI)
For i = StartI + Perioden To EndI
Value1(i) = ((CloseDaten(i) - openDaten(i)) + 2 * (CloseDaten(i - 1) - openDaten(i - 1)) + 2 * (CloseDaten(i - 2) - openDaten(i - 2)) + (CloseDaten(i - 3) - openDaten(i - 3))) / 6
Value2(i) = ((HighDaten(i) - LowDaten(i)) + 2 * (HighDaten(i - 1) - LowDaten(i - 1)) + 2 * (HighDaten(i - 2) - LowDaten(i - 2)) + (HighDaten(i - 3) - LowDaten(i - 3))) / 6
Num = 0
Denom = 0
Counter = 0
Do While Counter < Perioden
Num = Num + Value1(i - Counter)
Denom = Denom + Value2(i - Counter)
Counter = Counter + 1
Loop
If Denom <> 0 Then
Ergebnis(i) = Num / Denom
Else
Ergebnis(i) = CloseDaten(i)
End If
Next
Download Relative Vigor Index
 |
|
|
| |
Relative Vigor Index Trigger
|
1. Parameter
| Name: |
Perioden |
| Typ: |
Wert |
| Standardwert: |
14 |
| Minimum: |
2 |
| Maximum: |
500 |
' VBS-Code
dim i,closedaten, highdaten,lowdaten,opendaten
getdaten "Close",closedaten
getdaten "High",highdaten
getdaten "Low",lowdaten
getdaten "Open",opendaten
StartI = ErsteDatenPeriode(closeDaten)
EndI = LetzteDatenPeriode(closeDaten)
Dim Value1,Value2,Num,Denom,Counter,RVI,RVITrigger
ReDim Value1(EndI),Value2(EndI),RVI(EndI),RVITrigger(EndI)
For i = StartI + Perioden + 1 To EndI
Value1(i) = ((CloseDaten(i) - openDaten(i)) + 2 * (CloseDaten(i - 1) - openDaten(i - 1)) + 2 * (CloseDaten(i - 2) - openDaten(i - 2)) + (CloseDaten(i - 3) - openDaten(i - 3))) / 6
Value2(i) = ((HighDaten(i) - LowDaten(i)) + 2 * (HighDaten(i - 1) - LowDaten(i - 1)) + 2 * (HighDaten(i - 2) - LowDaten(i - 2)) + (HighDaten(i - 3) - LowDaten(i - 3))) / 6
Num = 0
Denom = 0
Counter = 0
Do While Counter < Perioden
Num = Num + Value1(i - Counter)
Denom = Denom + Value2(i - Counter)
Counter = Counter + 1
Loop
If Denom <> 0 Then
RVI(i) = Num / Denom
Else
RVI(i) = CloseDaten(i)
End If
RVITrigger(i) = (RVI(i) + 2 * RVI(i - 1) + 2 * RVI(i - 2) + RVI(i - 3)) / 6
Ergebnis(i) = RVITrigger(i)
Next
Download Relative Vigor Index Trigger
 |
|
|
| |
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
2.Parameter
| Name: |
Perioden |
| Typ: |
Wert |
| Standardwert: |
14 |
| Minimum: |
2 |
| Maximum: |
500 |
3.Parameter
| Name: |
Stoch_Perioden |
| Typ: |
Wert |
| Standardwert: |
8 |
| Minimum: |
2 |
| Maximum: |
500 |
' VBS-Code
StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)
Dim alpha,Smooth,Cycle,Counter,Maxval,Counter1,MinVal,Value1,Value2
ReDim Smooth(EndI),Cycle(EndI), Value1(EndI),Value2(EndI)
For i = StartI + Perioden + 1 To EndI
alpha = 2 / (Perioden + 1)
Smooth(i) = (Daten(i) + 2 * Daten(i - 1) + 2 * Daten(i - 2) + Daten(i - 3)) / 6
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)
If i <= StartI + 7 Then
Cycle(i) = (Daten(i) - 2 * Daten(i - 1) + Daten(i - 2)) / 4
End If
Counter = 0
Maxval = -999
Do While Counter < Stoch_Perioden
If Maxval < Cycle(i - Counter) Then
Maxval = Cycle(i - Counter)
End If
Counter = Counter + 1
Loop
Counter1 = 0
MinVal = 999
Do While Counter1 < Stoch_Perioden
If MinVal > Cycle(i - Counter1) Then
MinVal = Cycle(i - Counter1)
End If
Counter1 = Counter1 + 1
Loop
If Maxval <> MinVal Then
Value1(i) = (Cycle(i) - MinVal) / (Maxval - MinVal)
Value2(i) = (4 * Value1(i) + 3 * Value1(i - 1) + 2 * Value1(i - 2) + Value1(i - 3)) / 10
Value2(i) = 2 * (Value2(i) - 0.5)
End If
Ergebnis(i) = Value2(i)
next
Download Stochastic Cyber Cycle
 |
|
|
| |
Stochastic Cyber Cycle Trigger
|
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
2.Parameter
| Name: |
Perioden |
| Typ: |
Wert |
| Standardwert: |
14 |
| Minimum: |
2 |
| Maximum: |
500 |
3.Parameter
| Name: |
Stoch_Perioden |
| Typ: |
Wert |
| Standardwert: |
8 |
| Minimum: |
2 |
| Maximum: |
500 |
' VBS-Code
StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)
Dim alpha,Smooth,Cycle,Counter,Maxval,Counter1,MinVal,Value1,Value2,Signal
ReDim Smooth(EndI),Cycle(EndI), Value1(EndI),Value2(EndI),Signal(EndI)
For i = StartI + Perioden + 1 To EndI
alpha = 2 / (Perioden + 1)
Smooth(i) = (Daten(i) + 2 * Daten(i - 1) + 2 * Daten(i - 2) + Daten(i - 3)) / 6
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)
If i <= StartI + 7 Then
Cycle(i) = (Daten(i) - 2 * Daten(i - 1) + Daten(i - 2)) / 4
End If
Counter = 0
Maxval = -999
Do While Counter < Stoch_Perioden
If Maxval < Cycle(i - Counter) Then
Maxval = Cycle(i - Counter)
End If
Counter = Counter + 1
Loop
Counter1 = 0
MinVal = 999
Do While Counter1 < Stoch_Perioden
If MinVal > Cycle(i - Counter1) Then
MinVal = Cycle(i - Counter1)
End If
Counter1 = Counter1 + 1
Loop
If Maxval <> MinVal Then
Value1(i) = (Cycle(i) - MinVal) / (Maxval - MinVal)
Value2(i) = (4 * Value1(i) + 3 * Value1(i - 1) + 2 * Value1(i - 2) + Value1(i - 3)) / 10
Value2(i) = 2 * (Value2(i) - 0.5)
Signal(i) = 0.96 * (Value2(i - 1) + 0.02)
End If
Ergebnis(i) = Signal(i)
next
Download Stochastic CC Trigger
 |
|
|
| |
Stochastic Center Center of Gravity
|
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
2.Parameter
| Name: |
Perioden |
| Typ: |
Wert |
| Standardwert: |
14 |
| Minimum: |
2 |
| Maximum: |
500 |
' VBS-Code
StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)
Dim alpha,Smooth,Cycle,Counter_max,Maxval,Counter_min,MinVal,Value1,Value2,Counter,Num,Denom
ReDim Smooth(EndI),Cycle(EndI),Value1(EndI),Value2(EndI)
For i = StartI + Perioden + 1 To EndI
Counter = 0
Num = 0
Denom = 0
Do While Counter < Perioden
Num = Num + (1 + Counter) * Daten(i - Counter)
Denom = Denom + Daten(i - Counter)
Counter = Counter + 1
Loop
If Denom <> 0 Then
Cycle(i) = -Num / Denom + (Perioden + 1) / 2
Else
Cycle(i) = Daten(i)
End If
Counter_max = 0
Maxval = -999
Do While Counter_max < Perioden
If Maxval < Cycle(i - Counter_max) Then
Maxval = Cycle(i - Counter_max)
End If
Counter_max = Counter_max + 1
Loop
Counter_min = 0
MinVal = 999
Do While Counter_min < Perioden
If MinVal > Cycle(i - Counter_min) Then
MinVal = Cycle(i - Counter_min)
End If
Counter_min = Counter_min + 1
Loop
If Maxval <> MinVal Then
Value1(i) = (Cycle(i) - MinVal) / (Maxval - MinVal)
Value2(i) = (4 * Value1(i) + 3 * Value1(i - 1) + 2 * Value1(i - 2) + Value1(i - 3)) / 10
Value2(i) = 2 * (Value2(i) - 0.5)
End If
Ergebnis(i) = Value2(i)
Next
Download Stochastic Center of Gravity
 |
|
|
| |
Stochastic Center of Gravity Trigger
|
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
2.Parameter
| Name: |
Perioden |
| Typ: |
Wert |
| Standardwert: |
14 |
| Minimum: |
2 |
| Maximum: |
500 |
' VBS-Code
StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)
Dim alpha,Smooth,Cycle,Counter_max,Maxval,Counter_min,MinVal,Value1,Value2,Counter,Num,Denom,Signal
ReDim Smooth(EndI),Cycle(EndI),Value1(EndI),Value2(EndI), Signal(EndI)
For i = StartI + Perioden + 1 To EndI
Counter = 0
Num = 0
Denom = 0
Do While Counter < Perioden
Num = Num + (1 + Counter) * Daten(i - Counter)
Denom = Denom + Daten(i - Counter)
Counter = Counter + 1
Loop
If Denom <> 0 Then
Cycle(i) = -Num / Denom + (Perioden + 1) / 2
Else
Cycle(i) = Daten(i)
End If
Counter_max = 0
Maxval = -999
Do While Counter_max < Perioden
If Maxval < Cycle(i - Counter_max) Then
Maxval = Cycle(i - Counter_max)
End If
Counter_max = Counter_max + 1
Loop
Counter_min = 0
MinVal = 999
Do While Counter_min < Perioden
If MinVal > Cycle(i - Counter_min) Then
MinVal = Cycle(i - Counter_min)
End If
Counter_min = Counter_min + 1
Loop
If Maxval <> MinVal Then
Value1(i) = (Cycle(i) - MinVal) / (Maxval - MinVal)
Value2(i) = (4 * Value1(i) + 3 * Value1(i - 1) + 2 * Value1(i - 2) + Value1(i - 3)) / 10
Value2(i) = 2 * (Value2(i) - 0.5)
Signal(i) = 0.96 * (Value2(i - 1) + 0.02)
End If
Ergebnis(i) = Signal(i)
Next
Download Stochastic CG Trigger
 |
|
|
| |
Stochastic Relative Vigor Index
|
1.Parameter
| Name: |
Perioden |
| Typ: |
Wert |
| Standardwert: |
14 |
| Minimum: |
2 |
| Maximum: |
500 |
' VBS-Code
dim i,closedaten, highdaten,lowdaten,opendaten
getdaten "Close",closedaten
getdaten "High",highdaten
getdaten "Low",lowdaten
getdaten "Open",opendaten
StartI = ErsteDatenPeriode(closeDaten)
EndI = LetzteDatenPeriode(closeDaten)
Dim Value1,Value2,Num,Denom,Counter,RVI,Counter_max,Maxval,Counter_min,MinVal,value3,Value4
ReDim Value1(EndI),Value2(EndI),RVI(EndI),value3(EndI),Value4(EndI)
For i = StartI + Perioden + 1 To EndI
Value1(i) = ((CloseDaten(i) - openDaten(i)) + 2 * (CloseDaten(i - 1) - openDaten(i - 1)) + 2 * (CloseDaten(i - 2) - openDaten(i - 2)) + (CloseDaten(i - 3) - openDaten(i - 3))) / 6
Value2(i) = ((HighDaten(i) - LowDaten(i)) + 2 * (HighDaten(i - 1) - LowDaten(i - 1)) + 2 * (HighDaten(i - 2) - LowDaten(i - 2)) + (HighDaten(i - 3) - LowDaten(i - 3))) / 6
Num = 0
Denom = 0
Counter = 0
Do While Counter < Perioden
Num = Num + Value1(i - Counter)
Denom = Denom + Value2(i - Counter)
Counter = Counter + 1
Loop
If Denom <> 0 Then
RVI(i) = Num / Denom
Else
RVI(i) = CloseDaten(i)
End If
Counter_max = 0
Maxval = -999
Do While Counter_max < Perioden
If Maxval < RVI(i - Counter_max) Then
Maxval = RVI(i - Counter_max)
End If
Counter_max = Counter_max + 1
Loop
Counter_min = 0
MinVal = 999
Do While Counter_min < Perioden
If MinVal > RVI(i - Counter_min) Then
MinVal = RVI(i - Counter_min)
End If
Counter_min = Counter_min + 1
Loop
If Maxval <> MinVal Then
value3(i) = (RVI(i) - MinVal) / (Maxval - MinVal)
Value4(i) = (4 * value3(i) + 3 * value3(i - 1) + 2 * value3(i - 2) + value3(i - 3)) / 10
Value4(i) = 2 * (Value4(i) - 0.5)
End If
Ergebnis(i) = Value4(i)
Next
Download Stochastic RVI
|
|
|
| |
Stochastic Relative Vigor Index Trigger
|
1.Parameter
| Name: |
Perioden |
| Typ: |
Wert |
| Standardwert: |
14 |
| Minimum: |
2 |
| Maximum: |
500 |
' VBS-Code
dim i,closedaten, highdaten,lowdaten,opendaten
getdaten "Close",closedaten
getdaten "High",highdaten
getdaten "Low",lowdaten
getdaten "Open",opendaten
StartI = ErsteDatenPeriode(closeDaten)
EndI = LetzteDatenPeriode(closeDaten)
Dim Value1,Value2,Num,Denom,Counter,RVI,Counter_max,Maxval,Counter_min,MinVal,value3,Value4,Signal
ReDim Value1(EndI),Value2(EndI),RVI(EndI),value3(EndI),Value4(EndI),Signal(EndI)
For i = StartI + Perioden + 1 To EndI
Value1(i) = ((CloseDaten(i) - openDaten(i)) + 2 * (CloseDaten(i - 1) - openDaten(i - 1)) + 2 * (CloseDaten(i - 2) - openDaten(i - 2)) + (CloseDaten(i - 3) - openDaten(i - 3))) / 6
Value2(i) = ((HighDaten(i) - LowDaten(i)) + 2 * (HighDaten(i - 1) - LowDaten(i - 1)) + 2 * (HighDaten(i - 2) - LowDaten(i - 2)) + (HighDaten(i - 3) - LowDaten(i - 3))) / 6
Num = 0
Denom = 0
Counter = 0
Do While Counter < Perioden
Num = Num + Value1(i - Counter)
Denom = Denom + Value2(i - Counter)
Counter = Counter + 1
Loop
If Denom <> 0 Then
RVI(i) = Num / Denom
Else
RVI(i) = CloseDaten(i)
End If
Counter_max = 0
Maxval = -999
Do While Counter_max < Perioden
If Maxval < RVI(i - Counter_max) Then
Maxval = RVI(i - Counter_max)
End If
Counter_max = Counter_max + 1
Loop
Counter_min = 0
MinVal = 999
Do While Counter_min < Perioden
If MinVal > RVI(i - Counter_min) Then
MinVal = RVI(i - Counter_min)
End If
Counter_min = Counter_min + 1
Loop
If Maxval <> MinVal Then
value3(i) = (RVI(i) - MinVal) / (Maxval - MinVal)
Value4(i) = (4 * value3(i) + 3 * value3(i - 1) + 2 * value3(i - 2) + value3(i - 3)) / 10
Value4(i) = 2 * (Value4(i) - 0.5)
Signal(i) = 0.96 * (Value4(i - 1) + 0.02)
End If
Ergebnis(i) = signal(i)
Next
Download Stochastic RVI-Trigger
|
|
|
| |
1. Parameter
| Name: |
Daten |
| Typ: |
Datenreihe |
| Standardwert: |
close |
2.Parameter
| Name: |
Perioden |
| Typ: |
Wert |
| Standardwert: |
14 |
| Minimum: |
2 |
| Maximum: |
500 |
' VBS-Code
StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)
Dim Counter,Sum,GD,wilders
ReDim GD(EndI)
For i = StartI + Perioden To EndI
Counter = 0
Sum = 0
Do While Counter < Perioden
Sum = Sum + Daten(i - Counter)
Counter = Counter + 1
Loop
GD(i) = Sum / Perioden
If i <= StartI + 2 * Perioden Then
wilders = GD(i)
Else
wilders = (Daten(i) / Perioden + (1 - 1 / Perioden) * wilders)
End If
'' ******ENDERGEBNIS
Ergebnis(i) = wilders
next
Download Wilders Smoothing
|
|
|
|
Das folgende Buch ist DER Top-Titel für eine systematische Einarbeitung in VBS. Es ist sehr verständlich geschrieben und vermittelt dennoch fundiertes Know-How. Auch Programmier-Anfänger können damit sehr schnell die ersten Scripte coden....
Kurzanleitung zum Import von Indikatoren in Investox
1. Entpacken Sie die Datei nach dem Download mit einem Packprogramm (z.B. Winzip)
2. Starten Sie Investox und öffen Sie ein vorhandenes Projekt oder legen Sie ein neues Projekt an.
3. Doppelklicken Sie in der Befehlszeile das Icon: "Neuronale Netze und Anwenderindikatoren anzeigen".
4. Klicken Sie auf "Importieren" und wählen Sie im folgenden Fenster den Ort der heruntergeladenen Datei aus.
5. Markieren Sie den zu importierenden Indikator und wählen Sie "Öffnen".
6. Im folgenden Fenster aktivieren Sie das Häkchen vor dem Indikatornamen und klicken dann 2x "Weiter " und einmal "Fertigstellen" an.
7. Der Indikator steht Ihnen jetzt für die Arbeit in Investox zur Verfügung.
|