計算前五期內 每天的DMI 中 +DI 與-DI 的差值都小於10 ,當-DI 差值超過10 時會被抓到

  •   106 
  • 最後發表   ATYM  2024 五月 27
ATYM 發文於   2024/05/27

 

附上腳本

// DMI 

// Return: pdi_value(+di), ndi_value(-di), adx_value(adx)

input: LengthDMI(14,"期數");

variable: pdi_value(0), ndi_value(0), adx_value(0);

DirectionMovement(LengthDMI, pdi_value, ndi_value, adx_value);

 

 

variable: i(0);

for i = 1 to 4 begin

    if absValue(pdi_value[i] - ndi_value[i]) >10

and absValue(pdi_value[i] - adx_value[i]) > 10

and absValue(ndi_value[i] - adx_value[i]) > 10

then

      Ret=1  ;

    end;

選股條件是這樣,我想要找DMI +DI,-DI, ADX 在最少前五期內是糾結的狀態,當遇到-DI 與ADX 或是+DI 的差值大於10 時,ret =1 ,請問我現在選出來的都不太一樣,請問我要怎麼修改呢?

另外有什麼比較簡單的語法可以描述糾結狀態嗎? (用比例或差值都可以套用的),可以使用在 DMI KDJ 這類型的指標,感謝

虎科大許教授 發文於   2024/05/27

可用三者最高與最低的數值差距判斷是否糾結。你的問題不需要跑迴圈。

setTotalBar(300);

input: LengthDMI(14,"期數");

variable: pdi_value(0), ndi_value(0), adx_value(0);

DirectionMovement(LengthDMI, pdi_value, ndi_value, adx_value);

value1=maxlist(pdi_value, ndi_value, adx_value);

value2=minlist(pdi_value, ndi_value, adx_value);

condition1=trueAll(value1[1]-value2[1]<10,5);

condition2=value1-value2>10;

if isLastBar then

if condition1 and condition2 then ret=1;

 

發表回覆
Close