如何撰寫ADXR 的選股腳本

  •   2K 
  • 最後發表   XQ小幫手  2017 七月 18
XQ小幫手 發文於   2017/04/25

有user在討論區詢問如何撰寫ADXR >40 的選股腳本

小幫手寫了一個範例供大家參考

其實內建已經有DMI 的函數 DirectionMovement - (系統函數) 可以計算出ADX

再把ADXR的公式:( ADX+ADX[n] ) / 2 做計算即可

以下為XS範例:

settotalbar(200);
input: Length(14),conNum(40);
variable: pdi_value(0), ndi_value(0), adx_value(0),adxr_value(0);

SetInputName(1, "天數");

DirectionMovement(Length, pdi_value, ndi_value, adx_value);


adxr_value = (adx_value + adxr_value[Length])/2;

if adxr_value > conNum then ret=1;

outputfield(1,adxr_value,"ADXR");

 

以上說明。

排序方式: 標準 | 最新
csming2 發文於   2017/07/16

您好:

我想在DMI指標內,同時顯示ADX及ADXR,我將您寫的範例貼入XS編輯器內且另存指標名稱代用,在編譯時出現失敗訊息"在「指標」腳本中無法使用「ret」",請問要修改何處?。謝謝。

 

csming2 發文於   2017/07/16

修改成以下就有了,請審查對嗎?謝謝!

settotalbar(400);

input: Length(14),conNum(40);

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

value1 = DirectionMovement(14,value2,value3,value4);//計算14期的DMI指標

plot1(value2, "+DI");

plot2(value3, "-DI");

plot3(value4, "ADX");

 

SetInputName(1, "天數");

DirectionMovement(Length, pdi_value, ndi_value, adx_value);

adxr_value = (adx_value + adxr_value[Length])/2;

plot4(adxr_value, "ADXR");

csming2 發文於   2017/07/16

您好:

按照上面寫法,會出現400個前k線無法出現,所以把內建dmi寫法複製再加入adxr參數修正後,已可使用。

但請問無法由貴公司完成官方寫法並列入內建指標嗎?即dmi可以選擇要出現adx或adxr與否,這樣比較放心啦,謝謝!

XQ小幫手 發文於   2017/07/18

你好:

Q1:指標腳本不能寫"ret = 1" 喔,小幫手寫的是選股腳本,有設定觸發條件,才會用到"ret = 1"

Q2:

(1)指標部分如果想要全部K棒都計算的話,把settotalbar拿掉即可,預設是計算所有K棒。

(2)ADXR 用到的也是DMI的函數,所以"DirectionMovement" 不需要寫兩次。

所以小編稍微改寫了一下腳本,範例如下:

input: Length(14),conNum(40);

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



DirectionMovement(Length, pdi_value, ndi_value, adx_value);

adxr_value = (adx_value + adxr_value[Length])/2;

plot1(pdi_value,"+DI");
plot2(ndi_value,"-DI");
plot3(adx_value,"ADX");
plot4(adxr_value, "ADXR");

 

 

發表回覆
Close