gash29261821 發表於 21-7-11 13:30

請問DDI指標

本帖最後由 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) 最大

最後寫出來這樣的公式函數

大家可能會有點眼花{:4_120:}
但是已經是我研究好幾天的結果了.....
現在是卡再浮點運算操作不正確
但我完全不知道要怎麼解決這個問題........
希望有大神可以幫幫我
讓我可以把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 + PriceValueL[ Value1] ;
                var1 = PriceValueH[ Value1 + 1 ] + PriceValueL ;
                var2 = PriceValueH - PriceValueL[ Value1 + 1 ] ;
                var3 = PriceValueL - 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 and var0 <= var0 ;
if condition1 then
        Alert( "Indicator turning up" )
       
else
begin
condition1 = var0 < var0 and var0 >= var0 ;
if condition1
then
        Alert( "Indicator turning down" ) ;


        end







joelei123 發表於 21-7-12 19:34

(DMZ+DMF)<>0 加上去試試看
應該就可以了吧~

gash29261821 發表於 21-7-13 15:00

joelei123 發表於 21-7-12 19:34
(DMZ+DMF)0 加上去試試看
應該就可以了吧~

不行 我打上去之後 會顯示這樣syntax error, unexpected '<'
line 46, column 22

joelei123 發表於 21-7-14 10:39

         if (DMZ+DMF)<>0 then
         var6 = DMZ/(DMZ+DMF);
         var7 = DMF/(DMZ+DMF);
         var8 = var6 - var7;
         DDI = var8
這樣呢?
頁: [1]
查看完整版本: 請問DDI指標