: | : | :期货程序化 | :期货程序化研究 | :期货量化学习 | :期货量化 |
返回列表 发帖

做最壞的打算--評估績效再創新高所需時間

做最壞的打算--評估績效再創新高所需時間

務實的程式交易者都知道,策略的好壞不在於它多能賺錢,而是它在如何挺過艱困時期,另外還有一個現實問題,就是當策略開始實單交易,先遇到賺錢行情還是虧錢行情差很大—即使最終總損益是一樣。


下圖是一個策略的損益曲線,綠色的點是大家的最愛,代表淨值(獲利)創新高,在兩個綠點間的日子就是策略吃DD、掙扎或者是理解成沒有盈利的期間,這個期間越短越好,代表策略以越快的速度再度產出。因此我們檢視策略的優劣,績效再創新高所需時間也是值得研究的項目。
multicharts淨值創新高所需時間_2019081501.jpg

把下面這段程式碼直接複製到策略程式碼下方,即可在輸出區輸出相關數據(專業版MC可直接輸出到檔案):
=============================================

  1. vars:MaxCapital(100000),totaltr(0),BarNumofMaxP(0),BarCount(0),count(0),SumBarNumofMaxP(0),MaxBarCount(0);

  2. totaltr=totaltrades;

  3. if totaltr>totaltr[1] then begin
  4. MaxCapital=maxlist(netprofit+1000000,MaxCapital);
  5. if MaxCapital>MaxCapital[1] then begin
  6.   BarNumofMaxP=barnumber;
  7.   BarCount=BarNumofMaxP-BarNumofMaxP[1];
  8.   count=count+1;
  9.   SumBarNumofMaxP=BarCount+SumBarNumofMaxP;
  10.   MaxBarCount=maxlist(MaxBarCount,BarCount);
  11.   
  12.   messagelog(NumToStr(date+19000000,0),",",NumToStr(time,0),",",NumToStr(MaxCapital,0),",",
  13.   NumToStr(totaltr,0),",",NumToStr(BarNumofMaxP,0),",",NumToStr(BarCount,0));
  14. end;
  15. end;


  16. if LastBarOnChart then begin
  17. BarNumofMaxP=barnumber;
  18. BarCount=BarNumofMaxP-BarNumofMaxP[1];
  19. count=count+1;
  20. SumBarNumofMaxP=BarCount+SumBarNumofMaxP;
  21. MaxBarCount=maxlist(MaxBarCount,BarCount);
  22. messagelog(NumToStr(date+19000000,0),",",NumToStr(time,0),",",NumToStr(MaxCapital,0),",",
  23. NumToStr(totaltr,0),",",NumToStr(BarNumofMaxP,0),",",NumToStr(BarCount,0));
  24. messagelog("The average struggle time(numbar of bars) is ",NumToStr(SumBarNumofMaxP/count,0));
  25. messagelog("The worst struggle time(numbar of bars) is ",NumToStr(MaxBarCount,0));
  26. end;
复制代码


=============================================

輸出統計資料在輸出區,如下圖所示:

multicharts淨值創新高所需時間_2019081502.jpg

簡單解說一下程式碼與用法:

1.MaxCapital(100000):預設值為100000元,是因為MC計算績效,預設資本為100000元,如果你改過預設值就要同步調整,連下面這行程式碼也要改:MaxCapital=maxlist(netprofit+1000000,MaxCapital);

2.最後這段LastBarOnChart程式碼是要把尚未創新高的現在進行式也計入,這樣統計才會正確。以上面這個例子來講,策略目前正經歷最長的吃DD期間。

3.最後也把平均創新高所需期間以及最大創新高所需期間算出來並輸出,以K棒數表示,本例來講分別是351根K棒以及4383根K棒,可再自行換算成時間,例如台指全天盤,19根60分K為一個交易日,則本利平均再創新高所需期間為18.5個交易日。

4.程式也輸出每一個淨值創新高(綠點)的相關資料,可匯入EXCEL(教學)進行進一步統計分析,例如計算中位數可能比平均值有意義。

快速結論:

程式是無血無淚的,但交易人要承受虧損之痛、資金壓力,最難的是還不知道要熬多久。評估淨值創新高的期間,跟評估MDD一樣,都是做最壞的打算,交易人可提前評估當遇到艱困期時能否挺得過來,盡可能做好準備!不然,一進場就吃DD,信心快速崩盤…很多程式交易都是沒能度過漫漫長夜迎來黎明,從而妄斷此法行不通,這個我稱之為”不倖存者偏誤”。

论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
 
期货论坛 - 版权/免责声明   1.本站发布源码(包括函数、指标、策略等)均属开放源码,用意在于让使用者学习程序化语法撰写,使用者可以任意修改语法內容并调整参数。仅限用于个人学习使用,请勿转载、滥用,严禁私自连接实盘账户交易
  2.本站发布资讯(包括文章、视频、历史记录、教材、评论、资讯、交易方案等)均系转载自网络主流媒体,内容仅为作者当日个人观点,本网转载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网不对该类信息或数据做任何保证。不对您构成任何投资建议,不能依靠信息而取代自身独立判断,不对因使用本篇文章所诉信息或观点等导致的损失承担任何责任。
  3.本站发布资源(包括书籍、杂志、文档、软件等)均从互联网搜索而来,仅供个人免费交流学习,不可用作商业用途,本站不对显示的内容承担任何责任。请在下载后24小时内删除。如果喜欢,请购买正版,谢谢合作!
  4.龙听期货论坛原创文章属本网版权作品,转载须注明来源“龙听期货论坛”,违者本网将保留追究其相关法律责任的权力。本论坛除发布原创文章外,亦致力于优秀财经文章的交流分享,部分文章推送时若未能及时与原作者取得联系并涉及版权问题时,请及时联系删除。联系方式:http://www.qhlt.cn/thread-262-1-1.html
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

返回列表