让我们通过分析前一个版本的缺点来开始新算法的开发。我强调了以下缺点:
-
打开序列的信号太少了,提高信号质量,大大减少了进场信号的数量和整体利润;
-
采用固定的采样窗口进行分析,虽然样本是按范围设置的,但分析一个固定大小的样本并不是一个非常有效的解决方案。市场不是正弦波,而“尾巴”会影响当前信号质量。样本边界应该是模糊的,它们应该影响最终的决策。粗略地说,前一个版本取了100个烛形,分析了看跌和看涨烛形的优势,如果超过阈值,则生成入场信号。样本应该是动态的,而不是固定的。必须了解分析窗口内外的情况;
-
固定分析窗口的问题并非所有已知方法都有;
-
对于每个样本,阈值百分比都有一个固定的值,而与其中的烛形数目无关。这种解决方案的效率是不高的,因为30个烛形和200个烛形的样本中75%的过量的概率相差甚远。随着样本中烛形数量的增加,其非线性减小;
-
每支烛形的开仓价格太高,会导致回撤增加。经常打开过多仓位,因此有必要减少序列中打开仓位的数量,提高了资金使用效率;
-
以每手固定利润平仓会降低稳定性或盈利能力,在一个不断变化的市场中,我们需要在稳定性和盈利能力之间找到一个折衷方案。在不调整参数的情况下,机器人很快就会因为错过位置序列的最佳平仓点而蒙受损失;
-
同时交易工具数量的严格限制降低了整个系统的盈利能力。不同工具上的系列打开信号彼此之间略有关联。因此,在一个工具上承受损失可能与在另个工具上承受的损失相关。有必要制定降低信号相关性的措施,以便在不大幅增加回撤价值的情况下大幅增加同时交易的工具数量。
简化工作算法
让我提醒你算法的第一个版本是如何工作的。在新版本中,工作保持不变,但每一步都有待修改和改进。
-
扫描一个由 N 根烛形组成的窗口;
-
检查哪些烛形占优势-看跌或看涨;
-
如果出现比率超过阈值,则启动一系列开启仓位的信号;
-
看跌烛形普遍 = 买入信号,看涨烛形普遍 = 卖出;
-
计算手数;
-
在随后的每个烛形上打开一个新仓位,直到触发序列关闭条件;
-
触发序列关闭条件;
-
平掉所有仓位;
-
搜索新的信号。
改进
这个机器人是在 2016 年为 MetaTrader 4 开发的。它的代码附在下面。
在开发过程中,我将消除所有已识别的缺点,因此我将把整个开发划分为不同的任务。
-
动态阈值序列开始百分比
随着分析窗口中烛形数量的增加,或者随着下跌或上涨烛形过多阈值百分比的增加,第一个版本的算法变得更加稳定。我不得不做出妥协,并设置一个更大的样本量进行分析或更大的烛形超额百分比。试验表明,在几乎任何数量的烛形中,最佳超额百分比都可以调整,但当烛形数量增加时,超额百分比应减小。
在固定阈值百分比的情况下,增加分析窗口中烛形的数量会降低这种组合的可能性。因此,我们可以在分析窗口中设置任何烛形的最大数量,因为这对结果几乎没有影响,因为遇到这种组合的概率正在迅速下降。为了增加序列启动信号的数量,我们需要降低阈值超额百分比,以便随着样本中烛形数量的增加,组合的概率保持大致相同。
我做了一个假设,在给定数量的烛形中,给定的超额百分比的概率可以用组合数学来计算。
编辑
添加图片注释,不超过 140 字(可选)
,
其中
-
С - 组合的数量
-
n - 样本中烛形的数量
-
k - 上涨烛形的数量
-
P - 事件的概率
-
P2 - 双重事件的概率
事件概率P应该乘以2,因为P是针对同一方向的烛形较多的情况计算的-看跌或看涨。不管方向如何,我们都对总概率感兴趣。只有当看跌烛形的数量=看涨烛形的数量时,才不需要将概率乘以2。
作为一个例子,让我们计算一个事件的概率,当30支蜡烛中有24支在一个方向,6支在另一个方向。为了实现这一点,我准备了下面图1所示的表格。
编辑
添加图片注释,不超过 140 字(可选)
图 1. 概率表格
30个烛形中有24个同一方向的烛形对应80%以上的烛形。这种组合的概率为0.11%。现在让我们参考下表,看看样本中100个烛形的必要超额百分比,这样它出现的概率是0.11%。我们可以看到,对于100个烛形,这样的组合概率是找不到的。概率是 0.172% 和 0.091%. 我会选择一个更稀有的选择。它对应的是一种烛形与另一种烛形的比率66/34,或一个方