- 登入
- 註冊
這篇文我們就用前面教過的程式碼來組出一條下單指令,先介紹「下單指令」是什麼,下單指令也就是常聽到的交易指令。如果用傳統交易方式來說明,就像是打電話給營業員,告訴他今天我們要用什麼價格、買什麼商品,用什麼方式買。
一個完整的程式交易下單指令通常會由以下幾個要素構成:
MultiCharts的買賣指令共四種:Buy、Sell、SellShort、 BuyToCover,分別為多單的買賣和空單的買賣。PowerLanguage 的語法基本上都可以一看就明白。
多單使用的是 Buy 和 Sell ,Buy 是「買入多單」,Sell 是「平倉多單」。以 Buy 來舉例,下面程式碼的意思就是「用市價買入一口多單」,其中 Buy_MA 為這筆交易的名稱,後面會說明。
buy (“Buy_MA”) next bar at market ;
空單的買賣指令是 SellShort 和 BuyToCover。 Short 在股票期貨市場是做空的意思,所以 Sellshort 就是「賣出空單」,BuyToCover 直白翻譯是買回來補掉,就是「買回空單」。 用 Sellshort 來舉例,下面程式碼的意思是「 用市價做一口空單」。
Sellshort (“Buy_MA”) next bar at market;
買賣指令 | 說明 |
Buy | 多單進場,買一口多單 |
Sell | 多單出場,多單平倉 |
SellShort | 空單進場,買一口空單 |
BuyToCover | 空單出場,空單平倉 |
如果在同一個策略中,同時有好幾個進出場邏輯一起運行,在圖表與交易明細上很難去區分這筆交易是由甚麼條件觸發。
這時就可以將不同邏輯的進出場方式個別命名,命名不是強制選項。若省略沒填,會直接使用 MultiCharts 內預設的名稱 Buy 與 Short。
一個策略有多個進出場方式,建議把它命名為不同的名稱,在識別上會比較容易。後續調整策略時,也可以很明確的知道是哪一個進出場的績效表現好,哪個績效不好,對於整個策略開發流程有很大的幫助。
在命名進出場名稱的時候要注意,如果同一個交易策略中,有相同的名稱,在 PLE 編譯的時候會跳出失敗指令 ,所以要避免有相同的進出場名稱。
buy (“Buy_MA”) next bar at market ;
Buy_MA 為這筆交易的名稱。在程式碼中需要以(“”)夾住進出場名稱,如(“我是進場名稱”)。
實務上都是只用 next bar,主因是 MultiCharts 的機制為「該根K棒收盤」才運算策略。因此要做交易只能在下一根 K棒才能動作,用 this bar 成交到的價格是過去的價格,實務上不會成交到,回測上會有不準確的風險存在。
進出場時間 | 說明 |
next bar | 下一根K棒,實務上使用 |
this bar | 這一根K棒,不建議使用 |
進出場價格可以說是整個策略最重要的部分,主要分為市價和指定價格,市價是直接成交,指定價格要搭配 stop、limit 使用,後面會一起說明。
進出場價格 | 說明 |
market | 市價, 馬上成交不指定價格,以市場上最新的價格做交易 |
指定價格 | 以指定價格委託,可以填數值或是運算值。如10,000、「今天最高價」HighD(0) 或 「一根K棒的最高價」H。 |
market 為市價單,也是剛剛委託價格中的市價。 market單跟 stop單、limit單最大的不同是不用指定價格,因為它本身就是用當下的市場價格。能夠以最快的速度成交,但也因為不指定價格,通常會成交在比較差的點位。
🔶 一般用於需要搶速度的策略,market單能用最有效率的方式成交。
Buy (“Buy_MA”) next bar at market;
limit 為限價單,下方的程式碼意思為,「在價格 9400 掛一口多單的限價委託單」。當市場價格來到9400以下時,則買進一口多單。
🔶 一般用於拉回買進或是逢高賣出,可以成交在比市價更好的價格。
Buy (“Buy_MA”) next bar at 9400 limit;
limit單的特性是可以指定委託價格,而實際成交價一定會等於或優於限制的價位。所以如果是委託買進的價格,比現在的市場價格還高, limit單會直接成交。但在實務使用上,比較常使用的是 stop停損單和 market 市價單, limit限價單要搭配下單機使用,所以比較不會使用到。
stop 為停損單,即主觀交易中俗稱的觸價單。下方程式碼意指,「 當未來價格來到9500以上,買進一口多單 」。
🔶 一般用於突破型策略,當突破某個價格當下要立刻買進,用 stop單是很好的選擇。
Buy (“Buy_MA”) next bar at 9500 stop;
stop 單是掛單在那邊等,等價格到就買進,換句話說如果委託買進的價格比現在市場價還低,就會直接成交。
買賣指令 | 說明 |
market | 市價單,速度優先。 以當下的市場價格立刻成交。 一般用於需要搶速度的策略,market 單能用最有效率的方式成交。 |
limit | 限價單,價格優先。當價格優於委託價時成交。 一般用於拉回買進或是逢高賣出,可以成交在比市價更好的價格。 |
stop | 停損單、觸價單,趨勢優先。當價格突破委託價時成交。 一般用於突破型策略,當突破某個價格當下要立刻買進,則 stop 單是很好的選擇。 |
本篇取自「MultiCharts 程式交易|從零到一快速上手」試閱內容,
更多課程內容:https://quantpass.org/mc_onlineclass-2/