從零到有,將腦中策略落實到程式(1)-資料讀取

2023/12/05閱讀時間約 2 分鐘
  • 文內如有投資理財相關經驗、知識、資訊等內容,皆為創作者個人分享行為。
  • 有價證券、指數與衍生性商品之數據資料,僅供輔助說明之用,不代表創作者投資決策之推介及建議。
  • 閱讀同時,請審慎思考自身條件及自我決策,並應有為決策負責之事前認知。
  • 方格子希望您能從這些分享內容汲取投資養份,養成獨立思考的能力、判斷、行動,成就最適合您的投資理財模式。

哈囉~我是Richard

是否有時遇到一種情況,發現一種似乎有一定勝率的交易技術線型,

想回測時,若軟體沒有提供相關線型回測,就必須自己寫程式來呈現線型,進而回測
然而卻不知道如何用程式的方式將他呈現出來。

今天用XQ來做個簡單分享:


弄清楚運作模式

在懂得基本變數的情況下,最重要的是懂得程式是怎麼運作的,

無論是回測,選股,程式都需要先知道先前K棒的資料,歷史資料數據是甚麼,因此「資料讀取」是非常重要的。

然而XQ中的資料讀取,也常常被剛接觸XQ的人所忽略(包括我自己),以前我很單純的認為,資料讀得越多越好,出bug或數據不對就無腦讓他讀更多資料XD,結果就是無的放矢,事倍功半。


XQ資料讀取

這裡附上XQ官方的教學:XQ教學

看完了,然後呢?怎麼用?
我們用選股做例子

這是XQ教學中的圖

raw-image

從這張圖可以看出,資料讀取是從左至右讀取,至於要從多早開始讀,取決於使用者輸入的資料讀取範圍。

那甚麼情況下會需要顧慮到資料讀取範圍呢?以下舉幾個常見例子

  1. 策略有使用到均線
  2. 策略中和「最高(低)點」有關
  3. 策略中包含了一定時間的型態:例如需要2個月的盤整


策略有使用均線

若策略有使用均線,卻輸入錯誤的資料讀取範圍,會導致以下情況

EX:

value1 = WMA(close,60);
value2 = WMA(close,240);

if value1 cross Over value2 then
ret = 1;

print("===up===");
print(value1);
print(value2);
print(date);
print("===down===");

這是非常簡單的60WMA均線和240WMA均線黃金交叉的條件,資料讀取=20。

乍看之下沒問題,然而我們查看print出來的記事本,內容卻是

raw-image

由上至下資料為:60WMA均線數值,240WMA均線數值,日期

好奇怪,怎麼數字都長一樣?

因為你只讓他讀20跟K棒而已,那XQ內建是如果讀不到資料,資料就會等於收盤價

這一開始困擾我蠻久的,畢竟程式本身並沒有bug,也不知道該怎麼除錯,後來才發現是邏輯問題XD


策略中和「最高(低)點」有關

這個就比較好理解了,請看下圖

raw-image

如果今天只讓資料讀取到紅色框框範圍,那今天呼叫範圍中最高點K棒時,獲取資料會是紅色箭頭位置,反之若讓資料讀取到藍色框框範圍,那獲取資料就會是藍色箭頭位置

總結

並不是說讓資料讀取範圍越多越好,凡事適量即可,看自己的需求是甚麼?而且資料讀取範圍越多,也代表電腦要幫你撈更多資料,一檔股票撈資料的時間或許使用者沒有感覺。

但今天如果是回測,回測目前所有1700多檔股票,所需的時間就會差很多,今天先分享到這裡。下一篇再抽空撰寫,謝謝大家~

這裡會放上我的交易日常,研究~歡迎交流 動動手指追蹤是我產文的動力~ 粉專:https://www.facebook.com/richardchien66 IG搜尋:richard_invest_life 請多指教
留言0
查看全部
發表第一個留言支持創作者!