哈囉~我是Richard
是否有時遇到一種情況,發現一種似乎有一定勝率的交易技術線型,
想回測時,若軟體沒有提供相關線型回測,就必須自己寫程式來呈現線型,進而回測
然而卻不知道如何用程式的方式將他呈現出來。
今天用XQ來做個簡單分享:
在懂得基本變數的情況下,最重要的是懂得程式是怎麼運作的,
無論是回測,選股,程式都需要先知道先前K棒的資料,歷史資料數據是甚麼,因此「資料讀取」是非常重要的。
然而XQ中的資料讀取,也常常被剛接觸XQ的人所忽略(包括我自己),以前我很單純的認為,資料讀得越多越好,出bug或數據不對就無腦讓他讀更多資料XD,結果就是無的放矢,事倍功半。
這裡附上XQ官方的教學:XQ教學
看完了,然後呢?怎麼用?
我們用選股做例子
這是XQ教學中的圖
從這張圖可以看出,資料讀取是從左至右讀取,至於要從多早開始讀,取決於使用者輸入的資料讀取範圍。
那甚麼情況下會需要顧慮到資料讀取範圍呢?以下舉幾個常見例子
策略有使用均線
若策略有使用均線,卻輸入錯誤的資料讀取範圍,會導致以下情況
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出來的記事本,內容卻是
由上至下資料為:60WMA均線數值,240WMA均線數值,日期
好奇怪,怎麼數字都長一樣?
因為你只讓他讀20跟K棒而已,那XQ內建是如果讀不到資料,資料就會等於收盤價
這一開始困擾我蠻久的,畢竟程式本身並沒有bug,也不知道該怎麼除錯,後來才發現是邏輯問題XD
策略中和「最高(低)點」有關
這個就比較好理解了,請看下圖
如果今天只讓資料讀取到紅色框框範圍,那今天呼叫範圍中最高點K棒時,獲取資料會是紅色箭頭位置,反之若讓資料讀取到藍色框框範圍,那獲取資料就會是藍色箭頭位置
並不是說讓資料讀取範圍越多越好,凡事適量即可,看自己的需求是甚麼?而且資料讀取範圍越多,也代表電腦要幫你撈更多資料,一檔股票撈資料的時間或許使用者沒有感覺。
但今天如果是回測,回測目前所有1700多檔股票,所需的時間就會差很多,今天先分享到這裡。下一篇再抽空撰寫,謝謝大家~