創富坊
【如何用Trading View 運用不同技術指標寫交易策略】
教授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