創富坊

學了pine script的基本格式後,大家便可以試試寫一些簡單的策略做backtest。例如以下的例子:

 

//@version=5

 

strategy("MACD Strategy", overlay=true)

 

fastLength = input(12)

 

slowlength = input(26)

 

MACDLength = input(9)

 

MACD = ta.ema(close, fastLength) - ta.ema(close, slowlength)

 

aMACD = ta.ema(MACD, MACDLength)

 

delta = MACD - aMACD

 

if (ta.crossover(delta, 0))

 

strategy.entry("MacdLE", strategy.long, comment="MacdLE")

 

if (ta.crossunder(delta, 0))

 

strategy.entry("MacdSE", strategy.short, comment="MacdSE")

 

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)

 

 

 

15

 

 

大部份的策略都涉及使用技術指標,那就要每個指標的參數都設定一個變數,例如macd的參數是12, 26,9,那三個數字都要設定為變數,這樣做是為了日後使用可以隨時更改。

 

在Trading View中寫很多的指標都是以ta. 為開始的,例如你要寫普通的平均線就是ta.sma( ) ,若要寫EMA 指數平滑移動平均線就要寫ta.ema( )

 

而( ) 內需要有兩個數值,第一個是用什麼來計算,例如你想用收市價、最高價、最低價,還是成交量等等。而另一個數值就是長度。假設你要計算一條用成交量來計算的10日平均線,那寫法就是ta.sma(成交量, 10)。甚至你要計10日內的RSI平均值也可以,寫法就是ta.sma(rsi數值, 10)。

 

以上的策略可以看到,原創者所謂的MACD、aMACD及Delta是他自行去設定計算方式的。

 

首先他計MACD的方法是MACD = ta.ema(close, fastLength) - ta.ema(close, slowlength)

 

fastLength在最初已設定為12,那ta.ema(close,fastLength)就是計算以收市價計,12日的EMA。而slowlength最初也設定為26,那就是計算以收市價計,16日的EMA,然後前者減去後者就是原創者所指的MACD。

 

而aMACD = ta.ema(MACD, MACDLength)代表了,首先我們計算出MACD的答案,再用這個答案來計算平均數,而MACDLength最初已設定為9,那就是代表了aMACD是以MACD的值來計算9日的EMA。

 

這樣就有了MACD及aMACD的數值,將MACD – aMACD就會得到delta的答案。

 

即使是完全新手應該也覺得十分容易吧? 再來我們要學一些基本的,在Trading View中我們要寫「升穿」或「跌穿」就是ta.crossover ( ) 以及ta.crossunder( )。

 

而( ) 之內在ta.crossover代表前面的值升穿後面的值,若在ta.crossunder則代表前面的值跌穿後面的值。例如ta.crossover( A, B) 就代表A升穿B,若是ta.crossunder(A,B)就代表A跌穿B。

 

然後我們再看以下幾句:

 

if (ta.crossover(delta, 0))

 

strategy.entry("MacdLE", strategy.long, comment="MacdLE")

 

if (ta.crossunder(delta, 0))

 

strategy.entry("MacdSE", strategy.short, comment="MacdSE")

 

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)

 

在Trading View中寫交易策略,請記得是必需要有strategy.entry( ) ,這代表要告訴Trading View要入市的時刻。而( ) 內要寫的就一般有三個部份,第一個部份是名稱,要寫成"MacdLE",這個名稱很重要,若你的策略有分注平倉,要讓Trading View知道你要將那一個已入市的倉位平倉,寫平倉時要列明這個名稱的。

 

寫了名稱後就是要告訴Trading View你是造好還是造淡,造好的寫法是strategy.long,造淡的寫法是strategy.short,其實有了名稱及已表明是造好還是造淡後已足夠,但有些用家想在圖表上標示一些註解,那就用comment=,以上的策略就是想在圖表上看到MacdLE及MacdSE,他才會加上comment。

 

而最基本寫策略就是 if ………………. 然後strategy.entry( ………)

 

以上的策略就是Delta由零以下升至零以上就買入,Delta由零以上跌至零以下就造淡。

 

這樣整個簡單的策略便寫完,但若你想在圖表上畫上一些線標示買入及賣出的訊號。那便加上plot (……………………)

 

Plot的最基本用法是( ) 內加上: 要畫那一個數值, 名稱, 顏色, 線的寬度, 線的形狀。

 

以上的策略就是要畫strategy.equity代表資金的變化,然後給予名稱時要用title= “ “ ,之後是顏色,寫法是color=color.什麼顏色,例如color=color.blue,之後是線的寬度及形狀。plot.style_area代表將線條繪製成區域圖形,這個功能在version 4或以上版本才有的。

 

另大家要留意在pine script 中加上// 大多是註解,加了//後即使你寫一些中文也不會有影響的,不會令策略有變化。原創者在寫plot 時加了// 代表這句只是給大家參考,若把// 冊除才會有plot的功能出現。

 

即使大家是Trading View的全新手也會覺得十分簡單吧! 筆者會定期將一些在社群中看到的例子解釋給大家看,透過這個過程去學習,即使是全新手應也不會覺得太困難。

 

我們網頁: 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
 

熱門推介




URCHIN DANCE CREW
半島師奶 和家人平凡地過日子,紀錄在半島生活的點滴和趣事。
綠星人 // 離子 皓愛結合環保與創意,融合生活與大自然,凝造綠色生活,同時反省自己多年來破壞地球的罪行。
. 小城閒人 . 愛放假愛旅行愛睡覺 懶洋洋細胞突變一族 . 堅持工作是為了旅行 不工作也得去更多旅行
李小時 自稱愛情專欄作家,文字工作者,是個愛胡思亂想的水瓶座;寫過散文,亦作過小說;深信世界上最浪漫的,就是文字。