|
本帖最後由 gash29261821 於 21-7-11 13:34 編輯
小弟剛剛接觸milticharts
對於編寫完全是一知半解
但之前的看盤策略比較依賴DDI
所以想寫出DDI的指標
參考了函數的dirmovement ,ADX
還有上網查到的DDI公式
1、TR=(最高价-昨日最高价)的绝对值与(最低价-昨日最低价)的绝对值两者之间较大者。
2、如果(最高价+最低价)<=(昨日最高价+昨日最低价),DMZ=0,
如果(最高价+最低价)>(昨日最高价+昨日最低价),DMZ=(最高价-昨日最低价)的绝对值与(最低价-昨日最低价)的绝对值中较大值。
3、如果(最高价+最低价)>=(昨日最高价+昨日最低价),DMF=0,
如果(最高价+最低价)<(昨日最高价+昨日最低价),DMF=(最高价-昨日最低价)的绝对值与(最低价-昨日最低价)的绝对值中较大值。
4、DIZ=N个周期DMZ的和/(N个周期DMZ的和+N个周期DMF的和)
5、DIF=N个周期DMF的和/(N个周期DMF的和+N个周期DMZ的和)
6、DDI=DIZ-DIF
7、ADDI=DDI在一定周期内的加权平均
8、AD=ADDI在一定周期内的简单移动平均
理出來
var0(最高价+最低价)
var1(昨日最高价+昨日最低价)
var2(最高价-昨日最低价)
var3(最低价-昨日最低价)
再套進去變成
var0<=var1 DMZvar4=0
var0>var1 DMZvar4=ABS(var2,var3) 最大
var0>=var1 DMFvar5=0
var0<var1 DMFvar5=ABS(var2,var3) 最大
最後寫出來這樣的公式函數
大家可能會有點眼花
但是已經是我研究好幾天的結果了.....
現在是卡再浮點運算操作不正確
但我完全不知道要怎麼解決這個問題........
希望有大神可以幫幫我
讓我可以把DDI寫出來 感恩
Directionstandarddeviationindex
inputs:
PriceValueH( numericseries ),
PriceValueL( numericseries ),
PriceValueC( numericseries ),
Len( numericsimple ),
DMZ( numericref ),
DMF( numericref ),
DIZ( numericref ),
DIF( numericref ),
DDI( numericref );
variables:
var0( 0 ),
var1( 0 ),
var2( 0 ),
var3( 0 ),
var4( 0 ),
var5( 0 ),
var6( 0 ),
var7( 0 ),
var8( 0 ) ;
if CurrentBar = 1 then
begin
var0 = PriceValueH[Value1] + PriceValueL[ Value1] ;
var1 = PriceValueH[ Value1 + 1 ] + PriceValueL[Value1 + 1 ] ;
var2 = PriceValueH[Value1] - PriceValueL[ Value1 + 1 ] ;
var3 = PriceValueL[Value1] - PriceValueL[ Value1 + 1 ] ;
condition1 = var0 > var1 ;
if condition1 then
var4 = MaxList(AbsValue(var2),AbsValue(var3)) ; //DMZ
DMF = 0 ;//DMF
DMZ = var4 ;
end
else
begin
condition1 = var0 < var1 ;
if condition1 then
var5 = MaxList(AbsValue(var2),AbsValue(var3)) ; //DMF
DMZ = 0 ;// DMZ
DMF = var5;
end ;
var6 = DMZ/(DMZ+DMF);
var7 = DMF/(DMZ+DMF);
var8 = var6 - var7;
DDI = var8
然後再寫一個函數把DDI單獨標出來
DDI
inputs:
Len( numericsimple ) ;
variables:
var0( 0 ),
var1( 0 ),
var2( 0 ),
var3( 0 ),
var4( 0 );
Value1 = Directionstandarddeviationindex( H, L, C, Len, var0, var1, var2, var3, var4 ) ;
DDI = var4 ;
再到指標照ADX的方式寫出指標
DDI
inputs:
histogram( 200 ) ;
variables:
var0( 0 );
var0 = DDI( histogram ) ;
Plot1( var0, "DDI" ) ;
condition1 = var0 > var0[1] and var0[1] <= var0[2] ;
if condition1 then
Alert( "Indicator turning up" )
else
begin
condition1 = var0 < var0[1] and var0[1] >= var0[2] ;
if condition1
then
Alert( "Indicator turning down" ) ;
end
|
|