邏輯判斷的問題 &其它問題

  •   148 
  • 最後發表   小韭菜  2021 八月 13
小韭菜 發文於   2021/08/11

hi 小幫手, 有一些問題想請你幫忙。

1)我寫了一個程式 結果跟預期的不符合 看了很久都找不到原因,請幫忙check一下,謝謝。

結果: 從print的訊息來看,20210806 1512.TW 4.49 4.50 4.50 B ,8/6應該是C不是B,

但我如果將sa,ma,la直接assign 4.49 4.50 4.50 ,則結果就是正確的了(會印出C)。

2)另外,我主要是想在盤中(頻率:1分k)知道個股的60日WMA( WMA(close,60))

如果要正確取到值的話,settotalbar 應該要設 270min *60日嗎? 因為設這麼大可能效能會比較差,那有沒有其他的方法可以做到呢?

3)GetField("股本(億)","D")這個在雷達回測時的單位(億)跟非回測時的單位(千)不一樣,也請順便check一下,謝謝。

4)在選股時要如何避掉像"東研信超 6840"這種還沒開始交易or被停牌的股票呢?

我的程式

input: Shortlength(10,"短期均線期數");

input: Midlength(20,"中期均線期數");

input: Longlength(60,"長期均線期數");

 

var: sa(0); 

var: ma(0); 

var: la(0); 

var: tst("C");

 

settotalbar(maxlist(shortlength,midlength,Longlength));

 

sa=WMA(close,Shortlength); 

ma=WMA(close,Midlength);

la=WMA(close,Longlength);

 

{

sa=4.49;

ma=4.50;

la=4.50;

}

if sa>ma and ma>la then tst="A"

else if sa<ma and ma<la then tst="B"

else tst="C";

Print (file("c:\abc\abc.log"),NumToStr(Date, 0), Symbol,NumToStr(sa, 2), NumToStr(ma, 2),NumToStr(la, 2),tst); 

XQ小幫手 發文於   2021/08/13

Hello 小韭菜,

 

1.

因為您將他縮小到小數點第二位,所以看起來應該要是C。

實際上運算出來的值應該為:

20210806.000000 0.000000 4.492364 4.500524 4.502678 B 

符合您的腳本邏輯。

 

2.

如果要跨頻率取值的話,可以使用GetField函數。

如果您需要這麼長的資料,那麼就需要在腳本裡用 settotalbar 來作設定,且會影響到效能。

但是未來的版本預計新增功能 SetBackBar指定頻率設定資料筆數

您可以參考連結說明。

 

3.

小幫手這邊作測試,GetField("股本(億)","D") 雷達即時和回測出來的數字都相同。

需要麻煩您更詳細解釋哪個商品,什麼時候print出來的資訊有誤。

可以的話麻煩您提供 策略雷達匯出檔勾選(包含)腳本 以及 XQ Log 來檢驗。

Log資料夾(預設路徑:C:\SysJust\XQLite\LOG)直接壓縮後提供即可。

您可以直接將檔案上傳,如果檔案過大的話也可以Mail至客服信箱 XQservice@XQ.com.tw且附上 討論文章連結網址(小幫手才能盡早處理)。

感謝。

 

4.

選股中心會自動把這種商品排除。

您可以用ret = 1;來作測試。

發表回覆
Close