請選擇 進入手機版 | 繼續訪問電腦版

COCO研究院

 找回密碼
 註冊
搜索
查看: 15718|回復: 13

[範例程式碼] 均線策略 --- Hull Moving Average(HMA) (附程式)

[複製鏈接]
發表於 21-11-11 15:42 | 顯示全部樓層 |閱讀模式
本帖最後由 liawfujin 於 21-11-11 15:57 編輯

現在這個園地很冷清,   提供一個簡單的策略,   給大家提供靈感,  花一些腦力,   看能不能把策略改善得更好!

此一平均線在統一期貨台南分公司莊經理的網站裡有詳細介紹:
HMA 與簡單平均線 SMA 畫在同一  k 線上, 觀察可發現, HMA SMA敏感, 當股價站上 HMA 之上, 似乎是買進訊號, 而股價跌破HMA則是賣出訊號!
Hull k 線-1.jpg
//-------------------------------------------------------------------------
inputs: HullLen(x), wb(y), ws(z) ;
vars:MA(0),HMA(0), mp(0), IsBalanceDay(False);
mp = MarketPosition ;
if DAYofMonth(Date) > 14 and DAYofMonth(Date) < 22 and DAYofWeek(Date)= 3 then isBalanceDay = True else isBalanceDay =False ;

MA=2*WAverage(close,IntPortion(HullLen*0.5))-WAverage(close,HullLen);
HMA=WAverage(MA,IntPortion(SquareRoot(HullLen)));

if mp = 0 then buy next bar at HMA+wb stop;

if mp < 0 then buy next bar at HMA+wb stop;
if mp > 0 then sellshort next bar at HMA-ws stop;

if IsBalanceDay then setExitonClose;   
最後一行為每月結算命令, 加減一小差值 wb, ws 當緩衝, 以減少買賣雜訊, 4分鐘 K , 跑日夜盤的翻單波段策略, 以 2017.05月(有盤後交易)後樣本內資料及全樣本資料做優化, 尋找一適當參數, 一口小台, 不設停損, 每月結算, 結算零部位後只做多, 因為市場上做多比較容易賺錢! 起始資金10, 單邊費用設120,
詳細權益曲線(原始).png 多單權益曲線(原始).png 空單權益曲線(原始).png
由上面三圖, 總權益曲線前三分之二還可以, 但後三分之一就很震盪! 多單權益很不錯, 空單 2020.05 月後就很糟了! 由此, 讓我們想到減少空單, 效果應該會有所改善, 如 sellshort 改成 sell,
多單權益曲線(只有多單).png
只做多的總獲利與前面相似, 但分佈較均勻, 似乎穩定向上(近兩個月較震盪)!

抱怨: 這個編輯器很難用!


評分

參與人數 1金錢 +2 收起 理由
bob + 2 感謝分享

查看全部評分

發表於 21-11-13 11:00 | 顯示全部樓層
多單權益很不錯, 空單 2020.05 月後就很糟了! 由此, 讓我們想到減少空單, 效果應該會有所改善, 如 sellshort 改成 sell

2020年05月後大多頭,做空本來就會比較不利,如下圖紅色框框所示
但因此就減少策略的空單,似乎有點curve fitting的味道
curve fitting不只是在最佳化時才會出現
其實開發策略時的每一次嘗試,每一次修改都可能會邁向Curve Fitting
所以要小心

2021-11-13 上午 09-42-11.png

這讓我想起2008年的時候,我朋友說他的策略比較適合做空
因為做空大部分都賺錢,做多大部分都賠錢
但其實只是因為那時大盤整個走空的關係,並非因為他的策略比較適合做空

下圖為2007年8月到2008年10月的走勢,整個偏空,最後整個走空

2021-11-13 上午 10-30-48.png

在此區間我的策略的多單與空單的績效如下面兩張圖的紅色小框框所示

2021-11-13 上午 10-23-51.png

2021-11-13 上午 10-24-01.png

如果我看到紅色框框就把策略調整成偏空操作的話,其實就只是在Curve Fit那段空頭走勢

2007年到2021的整體績效如下圖所示
可以看到多空都做的績效會勝過只做多或只做空的績效
註:其實期貨市場上,做空的利潤是相對比較大的

2021-11-13 上午 10-01-50.png



回復 支持 1 反對 0

使用道具 舉報

發表於 21-11-12 10:43 | 顯示全部樓層
感謝你的,熱心分享。
回復 支持 1 反對 0

使用道具 舉報

 樓主| 發表於 21-11-15 16:34 | 顯示全部樓層
本帖最後由 liawfujin 於 21-11-15 16:36 編輯

可以看到多空都做的績效會勝過只做多或只做空的績效
註:其實期貨市場上,做空的利潤是相對比較大的
-------------------------------------
是沒錯, 多空都做的績效會比較好, 大宗商品我是沒參與過, 但是若是以股票指數來說, 長期是偏多的, 不信你去看加權指數, 已不可能回到20年前3000 5000點的情況, 在通膨及上市規模變大下, 加權指數將來會越來越高! 所以我的程式是以偏多操作來設計!

至於你說的CurveFitting 優化的問體, 我是覺得沒必要避之唯恐不及! 看過有人說超過3個參數的程式他不敢用, 我是覺得矯枉過正了!

我的經驗, 對某一指標來說, 是存在一個較優選的參數, 需要花時間去尋找和測試, 不只有優選的參數, 甚至連時間框架都有優選!

曾測過2分鐘, 3分鐘, 4分鐘, 5分鐘, 10分鐘, 30分鐘的 k , 發現 4, 5分鐘的績效通常會較好, 時間框架太大, k棒變長, 而我們常下next bar 的指令, 這樣買賣點會變差; 而過於小的時間框架, 資料多, 測試花時間, 效果也不會比較好, 所以我的程式通常都是4,5分鐘的時間框架!

現在市場參與者很多, 有人看多, 有人看空, 每個人都各顯神通想要從市場撈錢, 以致現在市場波動性變得很大, 漲上去就有人想獲利了結, 跌下來就有人想抄底, 每天都會上下大震盪, 大戶在裡面上下其手做差價, 殺進殺出不亦樂乎!

現在市場變得跟泥鰍一樣滑溜難抓, 以我經驗, 單一指標很難cover市場, 必須多管齊下, 用多個指標才能稍稍抓住一些行情! 但是, 我們知道程式是牽一髮而動全身的, 如何拿捏, 就是個人功夫了!

像是這個HMA均線策略, 我有上線交易, 多空都做, 但我用濾網減少空單, 有設停損(反向做單), 漲多停利反向, 及多空大乖離反向(後兩者是逆向操作的設計)! 這樣的費工設計, 得到還不錯的回測績效!

當然, 回測績效是回測績效! 能不能跑, 自己心裡有數! 能不能跑下去, 就看對自己的程式策略有沒有信心了!(即使跑的不如意, 其實也沒關係, 停下來檢討原因, 加以修正, 無法修正, 另想其他策略)
空單權益曲線(上線).png 多單權益曲線(上線).png 詳細權益曲線(上線).png

發表於 21-11-15 22:03 | 顯示全部樓層
但是若是以股票指數來說, 長期是偏多的, 不信你去看加權指數, 已不可能回到20年前3000點 5000點的情況, 在通膨及上市規模變大下, 加權指數將來會越來越高! 所以我的程式是以偏多操作來設計!

做空利潤相對比較大,並不是因為長期下來指數會往下走
而是因為空頭與多頭的走法會有些微差異,這些差異才是造成做空利潤相對比較大的原因

2021-11-13 上午 10-01-51.png

上圖這個績效是由2007年到2021的資料測試出來的
而如你所說,指數長期看漲,確實由2007年的7800點漲到2021的17500點(如下圖月線所示)
但測試的結果,卻是相反,空單的績效卻比多單來得好

2021-11-15 下午 08-39-03.png

如果你能改用10幾年的資料進行測試(比較長的資料長度,比較容易看到市場多空的全貌)
結果測出多單比空單好賺的話,也很好,畢竟大家的策略也都不一樣

至於Curve Fitting的問題,就不多討論了(雖然這確實是能否真的賺錢的關鍵)
不過如果你交易的順的話,也很不錯



發表於 21-11-16 10:57 | 顯示全部樓層
本帖最後由 萬年船 於 21-11-16 11:48 編輯

換位思考比較有利溝通,我也來實驗一下
換我用你的方式來測試,我把我的策略資料的測試時間改為2017年5月到2021年(4年半)
測試結果如下圖所示

2021-11-16 上午 09-30-05.png

我大概看到你看到的東西了,這段時間確實是做多比做空來的好做,毫無疑問
但我若把資料的測試時間拉長到2007到2021(15年)
同樣一套策略邏輯、同一套參數跑的結果如下圖所示

2021-11-13 上午 10-01-50.png

這回變成作空比較好做了,也是毫無疑問
再把資料的測試時間拉長到2000到2021(22年)
同樣一套策略邏輯、同一套參數跑的結果如下圖所示

2021-11-16 上午 10-18-41.png

這回也是作空比較好做,毫無疑問


一樣的策略程式,一樣的參數,跑出來的結果卻不一樣,差別在資料長短
接著我們再來看一下資料本身,如下圖所示
最小的綠框是2017年5月到2021年(4年半)
中間的紅框是2007到2021(15年)
全部的視窗是2000到2021(22年)
由小框看到最外面的大框
一開始好像看到一條繩子,看到最後才發現原來是一頭大象
看到全圖才知道之前以為的繩子原來是大象的尾巴

2021-11-16 上午 09-50-09.png

並不是說你的偏多操作邏輯100%一定有問題,也有可能你的策略真的是做多比較好做的
但跟可以跟看大象一樣,用比較長的資料來驗證你調整後的偏多操作邏輯在長期的資料也適合運作
如果可以,可能真的你的策略是做多比較好做的
如果不行,可能你的偏多操作邏輯就真的是Curve Fit在那個比較小的資料範圍內了
(測試驗證不用花錢,上線交易卻是真金白銀)

可以看到我上面三個資料框多空都做的Annualized Sharpe Ratio分別為1.36、0.95、1.04
雖然有變化,但變化的幅度只在30%的範圍內




發表於 21-11-16 15:24 | 顯示全部樓層
我的經驗, 對某一指標來說, 是存在一個較優選的參數, 需要花時間去尋找和測試, 不只有優選的參數, 甚至連時間框架都有優選!


(廖大,只是搞笑輕鬆一下,沒別的意思)

降龍十八掌【降龍有悔】沒圖也沒文字,怎麼練?


2021-11-16 下午 03-16-21.png

2021-11-16 下午 03-16-51.png

2021-11-16 下午 03-17-19.png

https://www.youtube.com/watch?v=zX7ibMyoahM


 樓主| 發表於 21-11-17 23:53 | 顯示全部樓層
我想2017.05有夜盤後, 台指期的交易環境跟往昔大不同, 是一個重大分水嶺! 交易時間長太多了, k 棒資料也增加非常多, 所以實行夜盤前的策略, 即使在2017.05後仍有效, 但程式裡的參數(如本均線策略的HullLen 參數)一定大不同!

若以2017.05以前的資料尋找優選參數, 來跑2017.05 後的行情, 一定是大走鐘, 而若以2017.05後的資料得的優選參數回測2017.05前的行情,來跟現在的行情做比較, 其實也沒甚麼意義!

即使用日線來設計程式, 看起來k棒數沒增加, 但實際上當天的日k棒的行情已在昨晚跑一大半了, 2017.05前的日k程式, 還能使用嗎?

我是認為2017.05前的行情, 往者已矣, 忘了它吧! 我的策略和程式, 都沒有回測2017.05前的資料, 而把注意力集中到2017.05後的行情及資料, 好好分析, 幫自己的策略程式找到好的優選參數, 不要在意現在的程式跑2017.05前的行情跑得一大糊塗! 只要現在用樣本內的優選參數來跑後面的行情, 得的結果不錯, 再跟全樣本優化的績效比相差不大, 那程式及參數可用信任度就大增了, 可以試跑一陣子, 或是邊跑邊觀察, 是否還有修改的空間? 然後逐步完善策略和程式!

有不少人忌諱優化程式! 其實大可不必矯枉過正. 我說過對一個程式來說, 較好的優選參數是存在的! 我們用4, 5分鐘的k線, 資料很多, 行情來來回回, 指標來回震盪, 有一定的規律! 像之前我提過的動量指標及Macd指標的策略, 迄今仍還在上線使用, 而且兩個程式的主參數一兩年來並沒改過, 只是加一些輔助指標及參數, 逐步修改, 現在這兩個程式的效果更佳!

評分

參與人數 1金錢 +2 收起 理由
萬年船 + 2 祝你交易順利

查看全部評分

發表於 21-11-18 10:57 | 顯示全部樓層


(廖大,太嚴肅了,再搞笑輕鬆一下,沒別的意思)

【一切皆】,對不對?

2021-11-18 上午 10-47-01.png

2021-11-18 上午 10-47-24.png

2021-11-18 上午 10-47-41.png

2021-11-18 上午 10-47-59.png

2021-11-18 上午 10-48-38.png

2021-11-18 上午 10-48-53.png

2021-11-18 上午 10-49-09.png

2021-11-18 上午 10-49-23.png


發表於 21-11-18 11:56 | 顯示全部樓層
我想2017.05有夜盤後, 台指期的交易環境跟往昔大不同, 是一個重大分水嶺! 交易時間長太多了, k 棒資料也增加非常多, 所以實行夜盤前的策略, 即使在2017.05後仍有效, 但程式裡的參數(如本均線策略的HullLen 參數)一定大不同!

盤後時段(T+1盤)調整是常有的事,今年美國、日本都調整過,前幾年香港、新加坡、德國也都調整過
(但盤中時段(T盤)不太會變)
如果盤後時段一調整,就要大動干戈,就真的太累了
MC有一個交易時段設定,不管盤後時段怎麼變,自己要交易的時段可以永遠不變
所以只要指定自己固定的交易時段,就不用管參數需不需要變的問題


若以2017.05以前的資料尋找優選參數, 來跑2017.05 後的行情, 一定是大走鐘, 而若以2017.05後的資料得的優選參數回測2017.05前的行情,來跟現在的行情做比較, 其實也沒甚麼意義!

同樣的道理,提供一個可能可以測試的方式給你
首先先把你2017.05後的資料改成08:45-13:45,看是否策略還能獲利
如果不能獲利的話,這個測試方式就不適合你,無法進一步比較了
但如果還能獲利的話,就以套在08:45-13:45時段的2017.05後的資料產出的績效做基準
與之前的資料進行比較(時段相同就可以比較了)

2021-11-18 上午 11-15-47.png

2021-11-18 上午 11-47-48.png


 樓主| 發表於 21-11-18 22:48 | 顯示全部樓層
萬年船 發表於 21-11-18 11:56
盤後時段(T+1盤)調整是常有的事,今年美國、日本都調整過,前幾年香港、新加坡、德國也都調整過
(但盤中 ...

程式交易的優勢是 "自動交易" ! 不用花時間盯盤, 省力省時, 所以為甚麼不全程參與 " T+1 " 盤的交易? 全程參與, 行情才能完整, 否則只交易 " T " 盤, 我想大概只能做當日沖了, 因為夜盤的變數無法控制, 而我覺得當沖的程式很難寫, 我目前還沒有寫出當沖的程式呢!

只交易 T 盤, 我想 k 線上應該有不少 " 跳空 ", 因為夜盤已走了大段行情了, 所以若不交易夜盤, 而把昨日的部位留倉, 就必須冒 " 跳空 " 的風險, 當然跳空方向對就大賺, 但錯了呢? 我是覺得, 跳空越多越不好!

不程式自動交易, 而要全程參與 " T+1 " 盤的交易, 那幾乎是不可能的事!

發表於 21-11-19 08:36 | 顯示全部樓層
本帖最後由 萬年船 於 21-11-19 08:48 編輯
liawfujin 發表於 21-11-18 22:48
程式交易的優勢是 "自動交易" ! 不用花時間盯盤, 省力省時, 所以為甚麼不全程參與 " T+1 " 盤的交易? 全 ...

沒錯,我前面的測試的策略是當沖策略,所以2017年前後段資料測試起來相對容易

但我提供給你這個可能的測試方式並非要你把你的真正交易時段變成08:45-13:45
只是測試過程的一個手段而已,因為你前後段資料的測試需要有相同時段的緣故
你的真正交易時段依舊是T盤加上T+1盤,沒變
不這麼做的話,你能測試的資料就真的只能有2017年後的4年半而已,太短了
這四年只經歷急漲大多頭,還沒經歷急跌大空頭,所以市場的全貌涵蓋的還不完整
可能因為這個緣故,你測出來感覺偏多操作必較容易

但凡在急漲大多頭時,做多極為容易,做空極為不容易(股市說的,股票隨便買都賺)
反過來,在急跌大空頭時,做空極為容易,做多極為不容易
我用以管窺天的方式思考,你偏多操作,遇到急跌大空頭時,可能會是一個大罩門

2021-11-16 上午 09-50-09.png

發表於 23-12-22 12:32 | 顯示全部樓層
感謝版大分享文章觀念,也謝謝萬年船大分享,讓我受教了,感恩
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-3-29 06:47

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 | AI繪圖AI超擬真美女AI beauty AI Stable DiffusionAI正妹AI Lookbook