COCO研究院

 找回密碼
 註冊
搜索
查看: 2678|回復: 3

[教學] 請問DDI指標

[複製鏈接]
發表於 21-7-11 13:30 | 顯示全部樓層 |閱讀模式
本帖最後由 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







發表於 21-7-12 19:34 | 顯示全部樓層
(DMZ+DMF)<>0 加上去試試看
應該就可以了吧~
 樓主| 發表於 21-7-13 15:00 | 顯示全部樓層
joelei123 發表於 21-7-12 19:34
(DMZ+DMF)0 加上去試試看
應該就可以了吧~

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

發表於 21-7-14 10:39 | 顯示全部樓層
           if (DMZ+DMF)<>0 then
           var6 = DMZ/(DMZ+DMF);
           var7 = DMF/(DMZ+DMF);
           var8 = var6 - var7;
           DDI = var8
這樣呢?
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-12-28 15:01

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 |