交易策略程式碼教學 – KDJ 隨即指標

Yaonology Algorithmic Trading
分享在 facebook
分享在 twitter
分享在 linkedin
分享在 email
分享在 reddit

交易策略程式碼教學 - KDJ 隨即指標

演算法交易策略並不像大家想像中那麼困難, 文章中會以四個步驟來教大家如何使用演算法交易策略來寫程式碼。 所有的程式碼使用 pine script 頁面在the Tradingview 平台裡.

文章中會先顯示每步驟完整版的策略內容,在部分拆解解釋。

黑色部分為固定的程式碼部分,而黃色的部分可以根據個人的需求來做變化!

接下來,文章中將會介紹每一格代表的意思。

// KDJ Indicators
//@version = 4
strategy("Yaonology KDJ Indicators Tutorial", overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.USD, initial_capital = 10000, commission_type =
strategy.commission.percent, commission_value = 0)

prd = input(9, title="period")
sgnl = input(3, title="signal")

v(s,l,m) =>
v = 0.0
v := (m*s+(l-m)*nz(v[1]))/l

c = close
h = highest(high, prd)
l = lowest(low,prd)
RSV = 100*((c-l)/(h-l)

K = v(RSV, sgnl, 1)

D = v(K, sgnl, 1)
J = 3 * K-2 * D

plot(K, color = color.green)
plot(D, color = color.red)
plot(J, color = color.black)

if (K < 20 and D < 20 and J < 20 and K > D and K[1] < D[1]) or (J > 0 and J[1] < 0)
strategy.entry(id = "kd", long = true)
if (K > 80 and D > 80 and J > 80 and K < D and K[1] > D[1]) or (J < 100 and J[1] > 100)
strategy.close(id = "kd")

四步驟教學

步驟一: 初始設定

strategy(“Yaonology KDJ Indicators Tutorial“, overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.USD, initial_capital = 10000, commission_type = strategy.commission.percent, commission_value = 0)

strategy : 策略名稱 (在此Yaonology 制定為Yaonology KDJ Indicators Tutorial)

overlay:不重疊 – False

default_qty_type :此為設定量的多寡 (此我們設定為 100)

default_qty_value : 設定量的多寡 – 100

currency: 幣值 (此設為USD)

initial_capital : 最初交易的價格 (設定10000)

commission_type : 佣金的計算方式 (建議選擇使用百分比 percent)

commission_value : 佣金的價值 (此沒有佣金,因此 設定 0)

步驟二:參數設定

prd = input(9, title=”period”)

sgnl = input(3, title=”signal”)

設定參數週期為9天,比重為3 (如下圖)

交易策略程式碼教學 - KDJ 隨即指標
Source: Yaonology

公式設定

v(s,l,m) => s,l,m 為自行建立的代數,以方便之後公式帶入

v = 0.0 => (表示V的附值為0)

v := (m*s+(l-m)*nz(v[1]))/l => 此式子為之後計算K和D值的公式

(:= 表示強制寫入,v[1]表示前一天V值,nz表示當v沒有前一天值時就以0代替)

c = close – 收盤價

h = highest(high, prd) – 此為九日最高價

l = lowest(low,prd) – 此為九日最低價

RSV = 100*((c-l)/(h-l)) – 此為計算RSV的公式

K = v(RSV, sgnl, 1) – 此為計算K值的公式

Ex: //v = (1*RSV + (3 – 1)*v[1])/3
= ⅓*RSV + ⅔*v[1]

D = v(K, sgnl, 1) – 此為計算D值的公式

J = 3 * K-2 * D – 此為計算J值的公式

步驟三:繪圖

plot(K, color = color.green) – 表示K值圖形設定為綠色

plot(D, color = color.red) – 表示D值圖形設定為紅色

plot(J, color = color.black) – 表示J值圖形設定為黑色

步驟四:買賣條件

  • 方法一

if (K < 20 and D < 20 and J < 20 and K > D and K[1] < D[1])

strategy.entry(id = “kd“, long = true)

=> [1] 表示前一天

當K、D和J值都小於20,並且K大於D以及K前一天值比D前一天值小,此時為黃金交叉,為買入時機

Strategy.entry : 表示指令打開

id: 表示此單的名稱設定 在此我們將名稱設定為 kd

long: 表示看多市場趨勢,此時為進場狀態,因此設定為true

if (K > 80 and D > 80 and J > 80 and K < D and K[1] > D[1])

strategy.close(id = “kd“)

=> 當K、D和J值都大於80,並且K小於D以及K前一天值比D前一天值大,此時為死亡交叉,為賣出時機

strategy.close: 指令為出場模式

而id 為和進場同一張單的指令,因此名字需設為同一個。

  • 方法二 (多J 值判斷標準更具參考價值)

*因為少了J值樣本數不足,參考依據不夠準確,超過30才具參考價值,如下圖紅色框框處 加入J值可以得到足夠的樣本數並且計算出更準確的結果, 此外,樣本處超過30才具參考價值,如下圖紅色框框處 如下圖紅色框框處(第一張圖是沒有J的結果,第二圖是含有J的結果)

交易策略程式碼教學 - KDJ 隨即指標
結果沒有J值
交易策略程式碼教學 - KDJ 隨即指標
結果含J值

if (K < 20 and D < 20 and J < 20 and K > D and K[1] < D[1]) or (J > 0 and J[1] < 0)

strategy.entry(id = “kd“, long = true)

=> 當K、D和J值都小於20,並且K大於D以及K前一天值比D前一天值小,加上J值大於0且J前的一天值小於0,此時為金叉,為買入時機

if (K > 80 and D > 80 and J > 80 and K < D and K[1] > D[1]) or (J < 100 and J[1] > 100)

strategy.close(id = “kd“)

=>當K、D和J值都大於80,並且K小於D以及K前一天值比D前一天值大,加上J值小於100且J前的一天值大於100,此時為死叉,為賣出時機

完成後圖形

交易策略程式碼教學 - KDJ 隨即指標
Source: Yaonology

Yaonology

#Yaonology #algorithmictrading #coding #SP500 #KDJ

This website uses cookies to ensure you get the best experience on our website.

Read Privacy Policy