創富坊

教授pine script 時最多新手問的就是一些主要的技術指標如何去寫,當你最初練習pine script時就先用一些常用的技術指標來試試寫策略,到熟習後,即使一些未見過的技術指標,只要你在google找到指標的公式,也能自行寫出來。

 

例如,MACD是內置的指標,第一步是記得trading view的內置指標是要加上「ta.」的,寫法如下:

 

[macdLine,signalLine,_]=ta.macd(close,12,26,9)

 

再要把MACD的快線在圖表上顯示,就用plot這個功能,寫法如下:

 

plot(macdLine,title="MACDLINE",color=color.red,linewidth=1)

 

 

 

不過,有些指標可能並非內置的,又或即使是內置,但你習慣了自行寫出來,假設大家不懂得什麼是bollinger’s band,然後在網上找到它的公式就是通道的頂部是20日平均線加上兩個標準差,而底部是20日平均線減去兩個準差,那我們就可以自己寫出來。

 

例如平均線是SMA,要寫出來就要加上「ta.」,先想一個名稱給你每個要計算的答案,什麼名稱都可以,但名稱不可以用數字開頭。例如你想叫平均線的名稱做SMA20,就用以下的寫法:

 

sma20=ta.sma(close,20)

 

然後又給標準差一個名稱,假設你叫它為ST,那寫法如下:

 

st=ta.stdev(close,20)

 

然後再分別給多通道的頂部及底部名稱,假設叫做upper及lower

 

upper = sma20+ 2*st

 

lower = sma20 – 2*st

 

寫法就是這樣簡單,然後upper及lower就可以用作其他計算的部份,例如你的入市策略是最高價升穿bollinger’s band 達5%,那寫法如下:

 

先給你的入市條件一個名稱,假設名為buyCondition,也給upper高5%的情況一個名稱,假設是upperhigh

 

uppperhigh=upper*1.05

 

buyCondition=ta.crossover(high,upperhigh)

 

此外,其他我們常見的技術指標如RSI, ATR等也是內置的,寫法同樣是先給它們一個名稱,例如你想叫它們做rs及atrValue,寫法如下:

 

rs=ta.rsi(close,14)

 

atrValue=atr(14)

 

其他有些主要常用的技術指標也要自行計算的,如Stochastic,寫法如下:

 

//@version=5

 

indicator("stochastic")

 

stcLength=input(14)

 

periodK=input(3)

 

periodD=input(3)

 

fastSTC=ta.stoch(close,high,low,stcLength)

 

slowK=ta.sma(fastSTC,periodK)

 

slowD=ta.sma(slowK,periodD)

 

plot(slowK,title="slowK",color=color.red,linewidth=1)

 

plot(slowD,title="slowD",color=color.blue,linewidth=1)

 

 

 

 

我們再試試寫Rate of change這個指標,先在網上找到它的公式如下:

 

 

 

 

然後大家可自行先用Trading View 先試試寫出來才看答案,若沒有寫錯,那寫指標這部份的學習便沒有問題了。

 

Rate of change寫法答案:

 

length = input.int(9)

 

source = input(close)

 

roc_smooth = input(5)

 

roc = ta.sma((100 * (source - source[length])/source[length]),roc_smooth)

 

 

 

 

最後我們看看super Trend這個指標的寫法,有些時候我們希望指標的參數是可以寫好後直接在圖表上更改的,又或有幾個指標的參數也是一樣的,我們會重覆使用,那就先給參數一個名稱,例如叫做length,可以參考以下superTrend這個指標的寫法:

 

 

 

//@version=5

 

indicator("SuperTrend", overlay=true)

 

length = (10)

 

multiplier = (3)

 

atr = ta.atr(1)

 

basis = ta.highest(high, length) + ta.lowest(low, length)

 

basis := basis / 2

 

upperBand = basis + (multiplier * atr)

 

lowerBand = basis - (multiplier * atr)

 

trendUp = close > upperBand[1] ? true : close[1] > upperBand[1] ? true : false

 

trendDown = close < lowerBand[1] ? true : close[1] < lowerBand[1] ? true : false

 

plot(trendUp ? upperBand : lowerBand, color=color.blue, linewidth=2, title="SuperTrend")

 

這裏用了「? :」這種寫法,?前是條件,?後是若符合條件要怎樣,而:後則是若不符合條件要怎樣,若大家看其他Tradind View用家寫的策略,這是十分常見的寫法。

 

trendDown = close < lowerBand[1] ? true : close[1] < lowerBand[1] ? true : false

 

這個的意思就是trendDown是名稱,然後看看收市價是否小於上一支陰陽燭的supertrend的底部,若符合條件就是true,否則就再看看上一支陰陽燭的收市價是否低於上一支陰陽燭的supertrend的底部,若符合條件,也是true,但兩個條件也不符合就是false。

 

我們網頁: www.quants.hk

Youtube:  https://www.youtube.com/@markchunwai

Facebook專頁: https://www.facebook.com/quantshk/

Patreon: https://www.patreon.com/quantshk

富昌金融集團聯席董事麥振威

電郵: paul.mark881@gmail.com

 

[編輯聲明]

本篇文章為作者所擁有,經版權持有人授權CyberCTM.com發表。

麥振威

程式交易在美國及臺灣其實早已流行,在中國內地也有不少程式交易的專家,而近年程式交易在香港也逐漸興起,其實程式交易不是很多新手想像的那樣神秘,只要學懂基本的用法,遇上問題時有專人解答,再自己不斷嘗試,經過數月的時間,大部份人也會學懂如何將自己的交易策略轉化為程式語言,又或將來在發現一些市場的特性時,也懂得如何利用程式去自行做測試,優化個人的交易策略,無論是股票、期指等也能透過程式做分析,藉此提高交易的回報,本網誌便是希望介紹各種有關程式交易的知識,讓更多的投資者了解這個新趨勢。

聯絡: paul.mark881@gmail.com
網頁: www.quants.hk
 

熱門推介