更新於 2024/12/12閱讀時間約 2 分鐘

從零到有,將腦中策略落實到程式(2)-步驟細拆

哈囉~我是Richard

繼上次講完資料讀取,接著就是如何將策略落實到程式上。

通常會不知道怎麼落實,是因為不知道怎麼把技術線型闡述出來,而非基本面。

基本面:假設要求三率三升,月營收增加等,XQ都有提供欄位,較為直觀。
技術面:V轉,W底等等,XQ並沒有個欄位叫做V轉,而且V的底要多深,這個V字型要多大,都可以自己定義。

這部分先以簡單的V轉作為例子


第一步:步驟拆解

複雜的拼圖我們可能無法馬上就知道怎麼拼,但我們可以拆成邊框,顏色,慢慢組成

寫策略前,我們可以思考,這策略是怎麼達成的?

V轉,我們先看簡單的圖

我們一定需要

  1. 一個底(2)
  2. 左右各一個比底還要高的點(1,3)
  3. 這個V可能在近兩至三個禮拜產生

可能需要

  1. 1和2距離至少3天
  2. 2和3距離至少3天

明確知道條件後,就可以開始了


第二步:開始寫程式

在此先附上XQ官方提供的函數說明網站:函數說明網站

首先,先確定資料讀取範圍,既然是兩至三個禮拜(約10~15天)的V轉,那首先就是

settotalbar(15) //強制讀取15筆資料
input:loading(10);
var:Low_price_locate(0); // V底的位置​

設定資料讀取範圍,並宣告需要的變數

接著使用lowestBar,這個函數可以回傳一個區間最小值的位置

Low_price_locate = lowestBar(low,loading); //10天中每天都有當天K棒最低價,找到這10個最低價中最小值的位置

使用XQ內建函式:angle

可以計算任意二個日期的走勢角度,那這裡先以標準的-45度以及45度來寫

condition1 = angle(date[loading],date[Low_price_locate]) < -45 and angle(date[Low_price_locate],date) > 45 ; 

angle裡面放的是,兩個日期位置的角度,所以放的是V型左邊(1)到V底(2)的位置,至於為甚麼要用condition的方式,是個人習慣寫法,好維護。

乍看好像條件寫完了,但如果只寫到這裡,可能會篩出很神奇的股票,像是

請問V在哪裡?這是因為沒有定義出V型左邊至V底的距離,若只隔一天的距離,那跌一點點也會符合條件。

因此要加上

condition2 = loading - low_price_locate >= 3 and low_price_locate >= 3;

讓V型左邊和右邊離V底部至少都有3天的距離,看起來才會像個V型。

最後就是

if condition1 and condition2 then ret = 1;

這句寫完後編譯,就大功告成~

寫選股條件程式時本來就是這樣,慢慢優化,認為篩出來的股票圖形不如預期,也可以把變數print出來查看,再做微調。

大家不妨也可以試試看W底該如何撰寫,今天就分享到這裡~

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.