在MT5下利用python作策略统计分析-阴阳K线比
对于作数组统计分析或开发机器学习交易策略,有相当的优势。
mt5 的官方 python 库内部也是调用 numpy 来转换取得的 K 线数组,数组的格式是 K 线的 open time, open price, high price, low price, close price, tick_volume, spread, real_volume。既然 mt5 返回的是 numpy array,后续的数据分析沿用 numpy 丰富的数组处理函数来操作是更加便利。
先写一个简单 python 程序从 mt5 下载个别商品不同周期的 K 线数组,分别以每个月的 csv 档格式先保持于本地便于后续作数据分析。
再写一个简单的 python 统计分析程序,分析从 2017-2020 年过去4年 GBPUSD 1: K 的阴阳线比例:
阳线和阴线的百分比分别是 51.06% 和 48.94%,相当接近的比例,所以不管行情如何变化,这个比例如此接近还是有些意外。
再多用 EURUSD 和 USDJPY 再跑一次得到的结果也是非常类似
回到 GBPUSD 如果把 K 线实体小于 5pips 的 K 线过滤掉再作一次统计:
阳线和阴线的百分比降到 29.09% 和 28.57% 不过比例还是相当接近。
因为 mt5+python 来设计 ea,最大的缺点是无法使用 mt5 强大的 backtest 环境,只能依赖 python 第三方的 backtest 库,所以从 python 的统计结果来写 ea 最好的方式还是回到 mt5 ea 的编程环境。
把上面的统计结果转换成一个交易思维,如果 GPBUSD 1: K 线实体大于 5pips 当过去 200 根 K 线的阳线比大于 33% (参考上面统计结果 29.09% 再多一些比例),下空单,期望后续阴阳线比例回归,多单信号则是反向判断。实际编程 mt5 ea 还多加了一些逆势加仓和平仓的技巧,复盘 2020 年得到的复盘结果是:
初始资金 10000 美元,复盘结束增长到 21769,净值增长 117%。结果看起来理想,打开复盘图表,开单的位置其实是不太理想的,能得到这样的结果完全是靠优异的逆势加仓和平仓处理。
虽然预期阴阳线比会回归到历史平均值,这个交易策略最大的问题是,回归前的多空K线大小没有考虑在这个策略统计里。不过透过统计分析来生成策略,还是可以先得到一个较完整的思考模式。
个人提供 MT4/MT5 EA 或 指标定制编程代写服务,有兴趣可扫描下方晓辉编程二维码添加为好友,进一步沟通。