何謂市場的「季節性特性」
台灣股市有所謂「五窮六絕七上吊」,此句話的意思是:一年十二月份中,資訊硬體的產製、代工訂單營收等方面,在五月、六月時會達最低迷,連帶影響股市跌多漲少。舉凡元月效應、聖誕節旺季、開紅盤行情、中秋節變盤等等,都是市場或商品的一種季節性分析與描述。利用季節性特性來設計濾網的原理即是:在偏漲的日子盡可能做多,在偏跌的日子則盡可能作空,在有波動的日子放大部位,在清淡的日子盡量做壁上觀。
2019年2月9日
2019年1月21日
MultiCharts警示Alert功能(音效、Gmail等)
MultiCharts的Alert語法可以指示程式在符合特定條件時,以聲音、訊息視窗或是email(以Gmail為範例)通知使用者。本文介紹如何操作設定。
當符合特定條件時需要系統發出提示聲響,主要有兩個作法,一個是在程式腳本下達「Alert」,MC圖表使用使再去開啟警示設定,此法只限定指標(Indicator);另一個方法是直接用「PlaySoung」語法,此法除了指標類外,訊號(Signal)也可採用,語法說明如下:
【方法一】在指標語法內寫「Alert」,再到MC圖表那邊進行指標警示設定:
我們直接以一個長短均線交叉為例,程式碼如下:
===============================================
Inputs:Len1(5),Len2(20);
Vars:MA1(0),MA2(0);
MA1=XAverage(close,Len1);
MA2=XAverage(close,Len2);
plot1(MA1);
plot2(MA2);
if MA1 cross over MA2 then Alert;
===============================================
設定產生「Alert」的條件,接著把上面指標放到MultiCharts圖表上,設定該指標「警示」功能,如下圖所示,至於音效檔為WAV格式,有需要其他不同音效也可以自行上網搜尋下載:
【方法二】使用PlaySound語法:
承上例,我們把alert改成PlaySound:
if MA1 cross over MA2 then PlaySound("C:\ding.wav");
"C:\ding.wav"為音訊檔存放位置,這個寫法適用指標類及訊號類,也不用另外去設定警示功能。
延續上例,我們希望當均線交叉時發Mail通知,程式語法同上,我們希望通知內容可以完整詳細一點,可以在Alert後面使用Text函式補充,例如:
if MA1 cross over MA2 then Alert(Text("Cross over", GetSymbolname);
其中Text函式可以放補充資訊,會在通知郵件中顯示。
完成程式碼後,把指標放到圖表中,一樣到設定指標去設定警示(Alert),如下圖所示:
成功設定後,收到的email通知樣式如下:
凱衛資訊有提供MultiCharts券商版用戶手機APP(Multicharts+)可即時接收委託、成交回報,但訊息有限,透過email雖然比較笨拙點,但也不失為一個監控Multicharts的解決方案。當然如果是專業版的MultiCharts則可以外掛DLL另外連結其他通訊軟體來做即時通知功能。
一、播放音效
當符合特定條件時需要系統發出提示聲響,主要有兩個作法,一個是在程式腳本下達「Alert」,MC圖表使用使再去開啟警示設定,此法只限定指標(Indicator);另一個方法是直接用「PlaySoung」語法,此法除了指標類外,訊號(Signal)也可採用,語法說明如下:
【方法一】在指標語法內寫「Alert」,再到MC圖表那邊進行指標警示設定:
我們直接以一個長短均線交叉為例,程式碼如下:
===============================================
Inputs:Len1(5),Len2(20);
Vars:MA1(0),MA2(0);
MA1=XAverage(close,Len1);
MA2=XAverage(close,Len2);
plot1(MA1);
plot2(MA2);
if MA1 cross over MA2 then Alert;
===============================================
設定產生「Alert」的條件,接著把上面指標放到MultiCharts圖表上,設定該指標「警示」功能,如下圖所示,至於音效檔為WAV格式,有需要其他不同音效也可以自行上網搜尋下載:
【方法二】使用PlaySound語法:
承上例,我們把alert改成PlaySound:
if MA1 cross over MA2 then PlaySound("C:\ding.wav");
"C:\ding.wav"為音訊檔存放位置,這個寫法適用指標類及訊號類,也不用另外去設定警示功能。
二、Gmail警示通知
延續上例,我們希望當均線交叉時發Mail通知,程式語法同上,我們希望通知內容可以完整詳細一點,可以在Alert後面使用Text函式補充,例如:
if MA1 cross over MA2 then Alert(Text("Cross over", GetSymbolname);
其中Text函式可以放補充資訊,會在通知郵件中顯示。
完成程式碼後,把指標放到圖表中,一樣到設定指標去設定警示(Alert),如下圖所示:
設定完成後可以透過設定區左下方的測試鈕進行測試。通常會寄送失敗多是Gmail安全性設定問題所致,可在登入Gmail狀態下進入下面網址進行開啟「允許低安全性應用程式」設定,如下圖:
凱衛資訊有提供MultiCharts券商版用戶手機APP(Multicharts+)可即時接收委託、成交回報,但訊息有限,透過email雖然比較笨拙點,但也不失為一個監控Multicharts的解決方案。當然如果是專業版的MultiCharts則可以外掛DLL另外連結其他通訊軟體來做即時通知功能。
2019年1月8日
如何推估收復資金回撤(DrawDown)的交易次數或時間
連續虧損或稱資金回撤(DrawDown)是程式交易者不可避免的狀況,策略如何在最短的時間內收復失土稱為策略的「復原能力」,但所謂的復原能力其實是假議題,能不能復原?多快復原?主要仍取決於行情而非操之在己,我們的注意力還是應該放在如何控制虧損以及當虧損發生後能有合理的預期及因應措施。本文教大家如何推估收復資金回徹的交次數及時間。
2018年12月20日
2018年9月16日
2018年8月25日
【MultiCharts】移動停利語法怎麼寫
移動停利(也可稱「移動停損」)運作機制是把隨者行情往有利方向發展同時,停損單也亦步亦趨移動,做多時停損賣單不斷上移,做空時停損買單不斷下移,當行情回檔幅度達設定條件才出場,目的在於保護帳上獲利同時又保有繼續參與後續行情的權利,以下提供幾個移動停利的語法範例:
2018年8月22日
【MultiCharts】新手如何寫多指標條件進場訊號(以KD、RSI、MA為例)
以技術指標來寫進出場策略是最基本好上手的寫法(最基本並不代表水平低無法獲利),一開始先用一個指標,接著可以嘗試用多個指標來搭配,本文示範初學者如何把自己習慣看的指標組成一個交易策略(以KD、RSI、MA指標為例)。
2018年8月7日
讀書心得:交易聖經
圖片來源:博客來
短評:
書原名是:「The Universal Principles of Successful Trading: Essential Knowledge for All Traders in All Market」,寫作精神如其名,是一本設計給有心從事交易事業的教科書,從交易系統設計、交易實務、資金管理到交易心理的議題都有觸及,但講通則為主,新手適合。
2018年7月10日
隨機進場的策略怎麼寫:Random()函式的運用
Random(N)函式會隨機回傳0~N間任一值,如果有天異想天開想寫一個隨機進場的策略,可以派上用場,簡單舉例如下:
=========================================
Inputs: Bias(0.5);
Var:Trigger(0),Signal(0);
trigger =random(1);
if trigger < bias then signal=-1;
if trigger >1 - bias then signal=1;
{ Random Entry}
If signal =1 then Buy next bar at open;
If signal =-1 then Sellshort next bar at open;
=========================================
Random(1)會隨機回傳0~1間任一值,我們用messagelog看看實際回傳的亂數值會呈現如下:
0.74
0.14
0.35
0.66
0.82
0.73
0.28
0.94
0.05
0.78
0.95
0.37
0.82
0.15
0.09
0.22
0.39
接著在程式碼中我們設定一個參數Bias並預設為0.5,當回傳值>0.5就做多,反之做空,換言之就是多或空是很公平(各50%)的隨機決定出,如果你認為行情比較偏多,Bias可以設為0.3,等同於隨機前提下做多機率70%來決定多空。
如果是想取得0~100任一隨機整數,則可以加上Round()函式,如下:
Round(Random(100),0)
當然Random函式還有很多用法,特別是想驗證一些想法或是a跑模擬統計(例如蒙地卡羅模擬)時都可以派上用場。
=========================================
Inputs: Bias(0.5);
Var:Trigger(0),Signal(0);
trigger =random(1);
if trigger < bias then signal=-1;
if trigger >1 - bias then signal=1;
{ Random Entry}
If signal =1 then Buy next bar at open;
If signal =-1 then Sellshort next bar at open;
=========================================
Random(1)會隨機回傳0~1間任一值,我們用messagelog看看實際回傳的亂數值會呈現如下:
0.74
0.14
0.35
0.66
0.82
0.73
0.28
0.94
0.05
0.78
0.95
0.37
0.82
0.15
0.09
0.22
0.39
接著在程式碼中我們設定一個參數Bias並預設為0.5,當回傳值>0.5就做多,反之做空,換言之就是多或空是很公平(各50%)的隨機決定出,如果你認為行情比較偏多,Bias可以設為0.3,等同於隨機前提下做多機率70%來決定多空。
如果是想取得0~100任一隨機整數,則可以加上Round()函式,如下:
Round(Random(100),0)
當然Random函式還有很多用法,特別是想驗證一些想法或是a跑模擬統計(例如蒙地卡羅模擬)時都可以派上用場。
訂閱:
文章 (Atom)






