MultiCharts初體驗-函式撰寫

更新於 發佈於 閱讀時間約 4 分鐘
投資理財內容聲明

廣告常說:「男人過了四十歲,只剩一張嘴。」,連續二天的話當年後,當然不能只剩一張嘴話當年,本文要開始進入程式交易的主題,雖然前文描述是使用TradeStation為開發平台,但後來TS已轉為美國國內券商使用,在台灣MultiCharts(以下簡稱MC)已成為主流的平台,雖然在使用上還是有許多雷區要避開,但平心而論,這平台算是程式初學者很好上手的平台之一。

MC的程式類型主要分為三大類:

  • 函式
    是一組預定義的、可重複使用的程式碼。在程式中,函數用於執行特定的任務或操作,它可以接受參數(輸入)並返回一個值(輸出)。函數的主要目的是為了模組化程式,使得程式更易於維護和理解。
  • 指標
    是一種用於圖表上的視覺化工具,通常是以圖形或數值的形式表示的技術分析工具。指標通常基於歷史價格資料進行計算,用於説明交易者分析市場趨勢、波動性和交易信號。
  • 訊號
    是指基於特定條件和邏輯判斷而產生的交易指令。這些條件可以是價格穿越特定水準、指標的交叉、趨勢線的突破等。信號通常用於確定何時買入、賣出、開倉或平倉。

這樣的分類方式,很適合非資訊出身的初學者使用,筆者的開發習慣是會將計算的邏輯寫成函式,再利用指標將函式的值畫在行情圖上,以利觀察,觀察出進出場邏輯後,再將進出場邏輯寫成訊號,讓MC可以依這些訊號進行自動交易。

這樣的寫法最大的好處是提高程式的維護性及重用度,很多人貪圖方便,直接把計算邏輯或寫在指標上去觀察,等到要寫成訊號時,再把這段邏輯複製到訊號的程式碼中使用,這樣做雖然很直覺,但萬一修改指標的邏輯時,就必須記得更新訊號的程式,不然會造成二邊不一致的現象出現。

以下就以MC的PowerLanguage Editor手把手地來寫一個簡單的函式讓指標來使用。

計算邏輯如下:

「計算K棒是否連續N根創新高或連續N根創新低」。

首先在PowerLanguage新增一個函式,命名為:_ContinueBreakOut(筆者習慣在程式的命名以底線開頭,這樣的好處是在列表中很容易找到自行開發程式)。

點選左上角紅色框的地方,即可新增程式(函式、指標或訊號)

點選左上角紅色框的地方,即可新增程式(函式、指標或訊號)

此函式判斷是否連續創高或創低,因此回傳的種類選擇布林值(TrueFalse)

輸入程式的名稱,選擇回傳TrueFalse

輸入程式的名稱,選擇回傳TrueFalse

點選確認後,會出現空白的程式編輯區,我們可以在這個空白區域撰寫程式。

空白的程式編輯區

空白的程式編輯區

接下來要思考我們傳入那些參數來讓程式判斷:

  • 連續N根
    需要一個輸入參數來表示根數,命名為BarCount,簡單數字型態即可。
  • 創新高或創新低
    需要一個輸入參數來判斷要計算創新高或創新低,命名為Direction,簡單數字型態即可。
Inputs:BarCount(NumericSimple), Direction(NumericSimple);
傳入的參數名稱及型別

傳入的參數名稱及型別

接下來,我們來思考程式的邏輯

  • 由目前的K棒往前判斷,直到指定的K棒數為止,因此我們需要一個Counter的變數來進行迴圈判斷。
  • 在判斷過程中,若判斷到一組不符合要求(未創新高或未創新低),則可以結束迴圈,以減少計算資源,因此再增加一個Result來存放回傳值。
Varibles:Counter(0), Result(True);
程式計算使用的變數

程式計算使用的變數

在這裹使用一個小技巧,我們把回傳結果先設為True(即假設為真),在判斷過程中,若有相鄰的兩根K棒不符合條件時,將此結果設為False(即未創高或低)後,中斷迴圈,然後回傳結果值,這種方式可以節省計算時間,不用完全判斷完所有的迴圈數。

Result = True;

If Direction = 0 Then
Begin
Result = False;
End​
Else
Begin
For Counter = 0 To BarCount - 1
Begin
If (Direction > 0) And (High[Counter] <= High[Counter + 1]) Then
Begin
Result = False;
Break;
End
Else If (Direction < 0) And (Low[Counter] >= Low[Counter + 1]) Then
Begin
Result = False;
Break;
End;
End;
End;

_ContinueBreakOut = Result;
判斷是否連續創新高或創新低

判斷是否連續創新高或創新低

程式最後以函式的名稱來回傳結果,當Result為True時,代表連續創新高或創新低。

讀者可以自行多加練習,增加自己可用的函式庫,方便日後指標及訊號的開發速度。











留言
avatar-img
留言分享你的想法!
股市觀察家-avatar-img
發文者
2023/11/08
三個臭皮匠勝過一個諸葛亮提及了這篇文章,趕快過去看看吧!
avatar-img
股市觀察家的沙龍
28會員
55內容數
金融市場入門新手所必知的基本知識
2023/11/30
今日的標題出自於邱吉爾,一個合格的策略上線並非程式交易的終點,而回測不出合格的策略,也非末日,在程式交易這條路上,繼續前行的勇氣是絕不可缺少的,在策略開發上,能成功上線的機率可能不到1%,其餘的99% 就當成打怪練等,累積經驗,當有足夠的經驗後,任何簡易的指標,都可稍加變化後,成為一支合格的策略。
Thumbnail
2023/11/30
今日的標題出自於邱吉爾,一個合格的策略上線並非程式交易的終點,而回測不出合格的策略,也非末日,在程式交易這條路上,繼續前行的勇氣是絕不可缺少的,在策略開發上,能成功上線的機率可能不到1%,其餘的99% 就當成打怪練等,累積經驗,當有足夠的經驗後,任何簡易的指標,都可稍加變化後,成為一支合格的策略。
Thumbnail
2023/11/29
一般的投資人進入程式交易領域大都是由一些公開課程學得,然後就拿授課老師給的程式來開始回測,找出一個較佳的績效後,就開始上線交易,剛開始時,可能績效還不錯,但久了,會發現某幾次的交易好像被針對了,常常一進場後,很快就剛好打到停損後,行情就又往程式的方向走。 除了回測參數外,還有人會開始改變K線的週期
Thumbnail
2023/11/29
一般的投資人進入程式交易領域大都是由一些公開課程學得,然後就拿授課老師給的程式來開始回測,找出一個較佳的績效後,就開始上線交易,剛開始時,可能績效還不錯,但久了,會發現某幾次的交易好像被針對了,常常一進場後,很快就剛好打到停損後,行情就又往程式的方向走。 除了回測參數外,還有人會開始改變K線的週期
Thumbnail
2023/11/28
開盤跳空(不管往上或往下),當日行情大都有一個大波段的走勢,但跳空之後,是持續往跳空方向走,或是反方向回補跳空缺口,將成為當日開盤後的判斷重點,只要掌握到對的方向,當日將有非常大的獲利。 在此介紹「市場輪廓圖(Market Profile)」的觀念,市場輪廓圖將成交價位與成交量加以堆疊,成為類似分
Thumbnail
2023/11/28
開盤跳空(不管往上或往下),當日行情大都有一個大波段的走勢,但跳空之後,是持續往跳空方向走,或是反方向回補跳空缺口,將成為當日開盤後的判斷重點,只要掌握到對的方向,當日將有非常大的獲利。 在此介紹「市場輪廓圖(Market Profile)」的觀念,市場輪廓圖將成交價位與成交量加以堆疊,成為類似分
Thumbnail
看更多
你可能也想看
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
這篇來淺談Multicharts和XQ的基本差異 基本知識 在講差異前,先讓大家知道,程式交易或是量化分析的軟體,其實是有很多選擇的。 當然,每種選擇會有不同的上手難度,以及費用。 通常越底層的語言,上手難度會越難,相對的,靈活性也會比較高。 反之,越高階的語言,上手難度越低,但靈活度
Thumbnail
這篇來淺談Multicharts和XQ的基本差異 基本知識 在講差異前,先讓大家知道,程式交易或是量化分析的軟體,其實是有很多選擇的。 當然,每種選擇會有不同的上手難度,以及費用。 通常越底層的語言,上手難度會越難,相對的,靈活性也會比較高。 反之,越高階的語言,上手難度越低,但靈活度
Thumbnail
在大數據時代,資料為王已介紹如何改寫函式,該函式可以抓取到預設數列以外的數列資料,本篇將利用這個改寫後的函式,進行訊號改寫,讓訊號可以依據長、短週期的數列,進行行情判斷,並依些產生進場訊號。 在策略中,新增二個輸入參數(輸入參數可進行最佳化),以下簡單介紹這二個參數: LongBarCount:
Thumbnail
在大數據時代,資料為王已介紹如何改寫函式,該函式可以抓取到預設數列以外的數列資料,本篇將利用這個改寫後的函式,進行訊號改寫,讓訊號可以依據長、短週期的數列,進行行情判斷,並依些產生進場訊號。 在策略中,新增二個輸入參數(輸入參數可進行最佳化),以下簡單介紹這二個參數: LongBarCount:
Thumbnail
在交易千萬別見樹不見林 中示範如何在同一張圖表上加入不同週期的行情走勢,本篇將對MultiCharts初體驗-函式撰寫、MultiCharts初體驗-訊號撰寫 的程式進行改寫,讓程式可以讀取到多週期的K線資料。 在MC中可以用Data1、Data2、⋯⋯、Data99的指定方式,來存取圖表中的數列
Thumbnail
在交易千萬別見樹不見林 中示範如何在同一張圖表上加入不同週期的行情走勢,本篇將對MultiCharts初體驗-函式撰寫、MultiCharts初體驗-訊號撰寫 的程式進行改寫,讓程式可以讀取到多週期的K線資料。 在MC中可以用Data1、Data2、⋯⋯、Data99的指定方式,來存取圖表中的數列
Thumbnail
在軟體工程中強調架構的延展性、維護性及重用性,將運算邏輯先寫成函式就是為了提高重用及維護,軟體界在這樣的發展下,開發出許多通用的套件,使得許多程式開發者可以利用套件來提升開發速度及穩定度,就如同現在的微波食品,想要煮一桌菜,不用自己從買食材開始、處理食材、料理食物、擺盤上桌⋯⋯等步驟,只需將買來的調
Thumbnail
在軟體工程中強調架構的延展性、維護性及重用性,將運算邏輯先寫成函式就是為了提高重用及維護,軟體界在這樣的發展下,開發出許多通用的套件,使得許多程式開發者可以利用套件來提升開發速度及穩定度,就如同現在的微波食品,想要煮一桌菜,不用自己從買食材開始、處理食材、料理食物、擺盤上桌⋯⋯等步驟,只需將買來的調
Thumbnail
廣告常說:「男人過了四十歲,只剩一張嘴。」,連續二天的話當年後,要開始進入程式交易的主題,雖然前文描述是使用TradeStation為開發平台,但後來TS已轉為美國國內券商使用,在台灣MultiChart(以下簡稱MC)已成為主流的平台,雖然在使用上還是有許多雷區要避開,但平心而論,這平台算是程式初
Thumbnail
廣告常說:「男人過了四十歲,只剩一張嘴。」,連續二天的話當年後,要開始進入程式交易的主題,雖然前文描述是使用TradeStation為開發平台,但後來TS已轉為美國國內券商使用,在台灣MultiChart(以下簡稱MC)已成為主流的平台,雖然在使用上還是有許多雷區要避開,但平心而論,這平台算是程式初
Thumbnail
安裝好券商版的MultiCharts(以下簡稱MC)後,可在桌面上看到四個ICON,在筆者依初學者使用的頻率,由左至右排列,分別是MC主程式(MultiCharts 64)、MC程式編輯器(MultiCharts64 PowerLanguage Editor)、MC最佳化結果檢視器(Mult
Thumbnail
安裝好券商版的MultiCharts(以下簡稱MC)後,可在桌面上看到四個ICON,在筆者依初學者使用的頻率,由左至右排列,分別是MC主程式(MultiCharts 64)、MC程式編輯器(MultiCharts64 PowerLanguage Editor)、MC最佳化結果檢視器(Mult
Thumbnail
今天要介紹的策略非常簡單,用到兩個免費的Tradingview指標,結合ICT的交易概念:結構轉換(Change Of Character)及折溢價區(Discount Zone & Premium Zone),廢話不多說,直接進入正題! 在Tradingview技術指標搜尋Smart Money
Thumbnail
今天要介紹的策略非常簡單,用到兩個免費的Tradingview指標,結合ICT的交易概念:結構轉換(Change Of Character)及折溢價區(Discount Zone & Premium Zone),廢話不多說,直接進入正題! 在Tradingview技術指標搜尋Smart Money
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News