大家好,今天我们来聊聊在MetaTrader 4上使用的Doji猎手指标。这是一款非常实用的工具,能够帮助我们识别市场中的Doji形态,进而做出更明智的交易决策。
新增的RangeOfBars变量
首先,我添加了一个RangeOfBars变量,允许你指定从当前K线向回查看多少根K线来寻找Doji。这一功能让我们可以更好地识别双Doji。如果你将RangeOfBars设置为2或3,那么就可以在第一、第二或第三根K线的位置查找潜在的双Doji。
Doji的检测方法
实际上,你可以通过观察第一根K线的位置来创建一个IsDoji的方法,随后再创建第二个方法来检测第一根和第二根K线的组合,从而识别双Doji。这样一来,你就可以在代码中写入:如果是Doji,不进行交易;如果是双Doji,则在价格延伸时交易,等等。
优化的代码结构
之前的Doji Reader 2在处理5位小数的情况下表现不佳,真是抱歉。不过在这儿你会看到一个更高效的写法。虽然我的版本也许不是最完美的,但至少更进一步了。
简化的显示设置
我保留了ShowCandleBox,觉得在图表上放置一个指示器非常不错,并且在测试中表现良好。虽然额外的指示器挺好,但我还是希望保持简单。额外的文本对用户理解Doji的形成过程也有所帮助,但简洁明了才是王道。
重要的配置更改
一个重大的变化是将配置值改为双精度而非整数。通过使用双精度,我们可以充分利用5位小数的精度,得到更紧凑的Doji形态。注意:使用基于双精度的指标时,切忌用整数,除非是用于计数。
计数重置功能
我还添加了计数器重置功能,以避免计数过程中的框持续增加。每次指标处理时,计数器会不断循环增加。通过加入重置功能,我们依然能得到准确的计数,同时在每个处理周期开始时进行重置。
缓冲区设置
我设置了一个缓冲区及缓冲区清理过程,这样你可以默认传递0,如果找到Doji则传递1。通过保持范围小,我们可以避免在处理不感兴趣的旧数据时消耗过多的CPU资源。
代码示例
以下是将其引入代码的示例声明:
extern string __DOJI_HUNTER_SETTINGS = "-----"; int RangeOfBars = 3; bool ShowCandleBox=true; //false以隐藏K线框 extern color BoxColor=MistyRose; //自定义你喜欢的颜色
接下来是获取Doji数据的调用示例。注意,请把这段调用放在新K线事件部分,放在Tick事件中会导致问题:
Doji1 = iCustom(NULL,0,"Doji_Hunter", RangeOfBars, ShowCandleBox, BoxColor, FindRegularDoji, MinLengthOfUpTail, MinLengthOfLoTail, MaxLengthOfBody, FindDragonflyDoji, MaxLengthOfUpTail1, MinLengthOfLoTail1, MaxLengthOfBody1, FindGravestoneDoji, MinLengthOfUpTail2, MaxLengthOfLoTail2, MaxLengthOfBody2, 0, 0);
以上代码片段将获取到首根K线的位置值,返回0或1,1表示找到Doji。
希望这篇文章能帮助到你们更好地利用Doji猎手指标!如果你有任何问题或想法,欢迎在评论区交流!