創富坊

有關Trading View的pine script ,其實Multicharts 的power language有點相似,若你是完全新手,可能早兩天的例子仍有些不明白,那今天筆者告訴大家一個寫策略的最基本「格式」,最初便跟著這個格式去寫,到習慣了就會很容易上手。看完這篇應該大家都理解pine script的基本寫法吧!

 

 

//@version=5

 

strategy("My strategy", overlay=true, margin_long=100, margin_short=100)

 

第一步驟:

 

設定變數

 

設定變數

 

例如: rsi_Length=input(9)

 

第二步驟:

 

計算過程(包括技術指標的計算)

 

例如: rs=ta.rsi(close,rsi_Length)

 

第三步驟:

 

設定入市條件

 

例如:

 

LongCondition= rs<=30 and rs>10

 

ShortCondition=rs>=70 and rs<90

 

第四步驟

 

設定入市及離場準則

 

 

可以想像成你想寫英文書信一樣,也會有一定的「格式」要求,要這樣寫Trading View才會明白你想表達什麼。

 

//@version=5

 

strategy("My strategy", overlay=true, margin_long=100, margin_short=100)

 

而以上兩句是一定要有的,version5代表了要告訴Trading View你用的pine script版本,若沒有寫策略就會不能compile,用不到的。

 

 

 

至於strategy 就是告訴Trading View你要寫的是交易策略,Trading View常用的有兩種格式,一種是寫交易策略就是要寫明是strategy,另一種是寫指標,就是沒有入市訊號,只是想自己設計一個技術指標在圖表上觀看,那便要用上indicatior的字眼。

 

如以下的寫法便是寫指標的最開頭部份:

 

//@version=5

 

indicator("My script")

 

另外,寫strategy時大家見到overlay=true, margin_long=100, margin_short=100,因為大家寫好策略後,策略中可能包括了把某些指標顯示在圖表上的,overlay=true就代表你想這些指標顯示在「主圖」上,若想在走勢圖之下顯示,那就寫成overlay=false。

 

而margin_long=100, margin_short=100 是設定長、短倉的入市比例,有時候大家也會看到有些炒家會在這部份加上以下部份,是因為要為backtest做一些設定。在amibroker或multicharts我們會有另外一個頁面做設定的,但Trading View就直接在這裏寫出來便可以。

 

commission_type=strategy.commission.percent, 這代表用百份比來計算佣金

 

commission_value=0.2, 佣金百份比是0.2%

 

initial_capital=10000 最初的本金為10000元

 

slippage= 1, 滑格設定為1個最小價格變動

 

currency=currency.USD  設定用美元來做backstest的單位

 

 

 

例如你想寫以下的策略:

 

 

 

 

RSI(9)跌至30以下但高於10便造好

 

RSI(9)跌至10或升至高於50便平好倉

 

RSI(9)升至70以上但低於90便造淡

 

RSI(9)升至90或跌至低於50便不淡倉

 

這個策略十分簡單,第一個步驟是要看看有那些是有「數字」的,這些數字由於我們想將來可以更容易更改,所以要先將其設定為變數。其實所有技術指標的參數都會是變數,而這個策略中,RSI便需要先設定一個變數。

 

大家在網上找例子會看到很多設定變數的寫法,如看到

 

var int , var float 等,這些筆者之後再講解,最先大家可以先記著這個準則,你先給變數一個名字,然後寫 = input(數字)。

 

以上的例子筆者給RSI的變數名字為rsi_Length,那寫法就是:

 

rsi_Length=input(9)

 

然後第二個步驟是計算過程,某些指標如Zero Lag MACD並沒有內置function的,那就要自己「加減乘除」去計,有些指標是有內置function的,例如RSI便可直接寫。

 

所有寫技術指標的方法都要先加「ta.」在開頭,例如RSI,便是

ta.rsi(列明用那一種數據去計算, 計算的長度)

 

如ta.rsi(close, rsi_Length)

 

就是用收市價去計算,計算日子長度是9日,因為我們在設定參數,已將rsi_Length設定為9。另外你也可以試試用最高價、最低價,成交量,甚至其他技術指標的數值去計算,在Trading View的社群便有些炒家愛計算MACD快線的RSI,寫法就是先計算MACD快線的值,再用以下寫法:

 

ta.rsi(MACD快線值, rsi_Length)

 

最後我們給這個rsi一個名稱,方便寫策略之後的部份可以使用,例如筆者給它名稱為rs

 

寫法就是:

 

rs=ta.rsi(close,rsi_Length)

 

然後第三個步驟就是設定入市條件,最初大家可以用以下的寫法會較簡單:

 

先給四個名稱,包括longCondition , shortCondition, longCloseCondition, shortCloseCondition

 

我們的入市條件是這樣:

 

RSI(9)跌至30以下但高於10便造好

 

RSI(9)跌至10或升至高於50便平好倉

 

RSI(9)升至70以上但低於90便造淡

 

RSI(9)升至90或跌至低於50便不淡倉

 

LongCondition= rs<=30 and rs>10

 

ShortCondition=rs>=70 and rs<90

 

LongCloseCondition=rs<=10 or rs>50

 

ShortCloseCondition=rs>=90 or rs<50

 

 

 

這些過程中會經常用了 「> 」、「<」、「>= 」、「<=」這些符號,代表了大於、小於、大於或等於、小於或等於。也會用很多and 及or 把策略組織起來。另「!=」代表不等如

 

最後是第四個步驟:

 

第四個步驟你需要用上「if….」、strategy.entry 及strategy.close

 

strategy.entry的寫法,造好及造淡是不同的,

 

造好: strategy.entry(“名稱”, strategy.long)

造淡: strategy.entry(“名稱”, strategy.short)

 

而strategy.close 在之後的括弧( ) 內要加上好倉或淡倉的名稱,這才能對應到是要平好倉還是要平淡倉。

 

寫法如下:

 

if LongCondition

 

strategy.entry(“BUY”,strategy.long)

 

if LongCloseCondition

 

strategy.close(“BUY”)

 

這例子中”BUY”是我給好倉的名稱,在strategy.entry中給予名稱,並要用上” “ 這個符號,然後在strategy.close也把名稱再寫一次。

 

再寫平淡倉的部份如下:

 

if ShortCondition

 

strategy.entry(“SHORT”,strategy.long)

 

if ShortCloseCondition

 

strategy.close(“SHORT”)

 

另大家看其他炒家寫的例子,平倉還可以用strategy.exit、strategy.close_all() 等等的,這些之後筆者再逐一講解。

 

以下是整個策略完整的寫法:

 

//@version=5

 

strategy("My strategy", overlay=true, margin_long=100, margin_short=100)

 

rsi_Length=input(9)

 

rs=ta.rsi(close,rsi_Length)

 

LongCondition= rs<=30 and rs>10

 

ShortCondition=rs>=70 and rs<90

 

LongCloseCondition=rs<=10 or rs>50

 

ShortCloseCondition=rs>=90 or rs<50

 

if LongCondition

 

strategy.entry(“BUY”,strategy.long)

 

if LongCloseCondition

 

strategy.close(“BUY”)

 

if ShortCondition

 

strategy.entry(“SHORT”,strategy.long)

 

if ShortCloseCondition

 

strategy.close(“SHORT”)

 

 

 

不過,大家若將文章中的寫法直接copy到Trading View的pine editor中又會看到顯示有錯誤的,當大家在pine editor寫策略時,看到有「紅色」的部份就是有錯了。

 

一般來說會有幾點是常會出錯的:

 

 

 

 

 

1) “ “ 的格式與Trading View的要求不對,把它再打一次便可以

 

2) if , strategy 等要全部細楷的,有時在文章中若寫了If也就會有不同

 

3) if 之後再寫下一句要在第五個字完開始,把句子移右一點便會變成正確,一般在寫完if的句子後按「enter」,trading view會自動告訴你下一句應該在那個位置開始寫的。

 

4) 自已給的名稱有大細楷分的,例如ShortCloseCondition,當中S, C, 都是大楷,當再寫時大細楷要完全一樣的。

 

這些都是最初常會遇到的問題,改正後便可以。若是完全新手,先記好這個「格式」,在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
 

熱門推介




4DX  28年後
英語版  馴龍記
4DX    馴龍記
4DX  英語版  馴龍記
榴心風暴
IMAX with Laser 罪人們
野黨
器子
劇場版 我與機器子
大風殺
那些年的我們
超異能特攻
英語版  史迪仔
私家偵探
IMAX with Laser 馴龍記 英語版
拼命三郎
殺神John Wick之芭蕾殺姬
不赦之罪
MX4D 職業特工隊:最終清算
年少心事 3rd MIQFF
史迪仔 英語版
殺神JOHN WICK外傳:芭蕾殺姬
罪人們
28 年後
獵狐行動
關於我和鬼變成家人的那封利是
職業特工隊:最終清算
馴龍記
28年後
史迪仔
死神來了:血脈
獵金•遊戲
4DX  28年後