肿瘤康复网,内容丰富有趣,生活中的好帮手!
肿瘤康复网 > 量化交易软件:10 种横盘交易策略的比较分析

量化交易软件:10 种横盘交易策略的比较分析

时间:2019-06-04 21:47:55

相关推荐

综述

趋势跟踪策略非常受欢迎且易于运用,尤其适合初学者。 然而,当前行情变得更加动荡,而趋势走势则不那么明显 (在范围和持续时间这两项上)。 如果不利用横盘或窄幅振荡行情进行交易的可能性,赫兹量化交易软件就会失去潜在的盈利。 遵循交易规则的趋势很简单: 识别趋势的迹象并尝试利用它。 横盘时交易与此则有很大不同。 在窄幅振荡走势期间,价格处于很小的范围内,并且可能在相当长的时间内保持不变。 行情没有方向性走势,流动性低。

在创建横盘交易策略时定义任务

我定义了三个任务,这些任务是创建趋势跟踪策略所必需的。 创建横盘交易策略所需的任务极其相似。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

图例 1. 窄幅/横盘走势的示例。

任务 1. 辨别横盘的存在

横盘没有一般性和详尽的定义 (实际上也没有对趋势概念的正确论述)。 然而,有一些迹象可以表明行情目前处于横盘状态。 这种走势也被称为窄幅振荡走势,因为没有明显的上行和下行的纵向走势。 价格在一个范围内运动,接近波浪的下边界和上边界。 横盘的另一个迹象就是行情交易量很低,或行情参与者的士气低落。 从弱势价格的变化,以及小额分笔交易量的变化可以看出这一点。

任务 2. 一笔持仓的目标。

横盘交易技术通常运用通道交易。 这是在窄幅振荡走势中赢利的主要运用方法。 依据一些虚拟边界可以判断横盘通道。 进而,交易策略是基于价格和通道边界之间的关系来构建的。 大多数情况下,策略意味着当价格从通道边界反弹时买入或卖出 (图例 2)。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

图例 2. 当价格从通道边界反弹时进行交易。

当于通道的上半部分进行卖出时,赫兹量化交易软件假设价格将向下边界移动。 其位置将作为止盈价位。 止损可以设置某个点数值,或根据通道边界而定。 买入操作使用逆向策略: 在较低的通道边界买入,并在上边界附近设置止盈价位。

横盘交易策略

我在选择横盘交易策略时运用了上述原则。

交易将在通道内进行。 因此,赫兹量化交易软件需要选择能够帮助我们构建通道,并确定横盘区域虚拟边界的工具。

除了定义通道之外,赫兹量化交易软件还需要至少一个额外的工具来确认价格在从通道边界反弹后将朝着正确的方向发展。 这种滤波器的目的就是避免入场假信号。

策略 #1,附带基于 MFI 滤波器的轨道线指标

通道边界基于轨道线指标判断。 MFI 指标还用于过滤信号。

图例. 3 根据策略 #1 示意入场条件。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

图例 3. 交易策略 #1 的入场条件。

此策略的智能交易系统代码如下所示:

void OnTick() { //--- 检查以前由该 EA 开立的订单 if(!Trade.IsOpenedByMagic(Inp_MagicNum)) { //--- 获取数据进行计算 if(!GetIndValue()) return; //--- 如果有买入信号,则开单 if(BuySignal()) Trade.BuyPositionOpen(Symbol(),Inp_Lot,close[0]-Inp_StopLoss*_Point,tp,Inp_MagicNum,Inp_EaComment); //--- 如果有卖出信号,则开单 if(SellSignal()) Trade.SellPositionOpen(Symbol(),Inp_Lot,close[0]+Inp_StopLoss*_Point,tp,Inp_MagicNum,Inp_EaComment); } } //+------------------------------------------------------------------+ //| 买入条件 | //+------------------------------------------------------------------+ bool BuySignal() { if(mfi[0]<20 && env_low[0]>close[0]) { tp=env_high[0]; return true; } else return false; } //+------------------------------------------------------------------+ //| 卖出条件 | //+------------------------------------------------------------------+ bool SellSignal() { if(mfi[0]>80 && env_high[0]<close[0]) { tp=env_low[0]; return true; } else return false; } //+------------------------------------------------------------------+ //| 获取指标的当前值 | //+------------------------------------------------------------------+ bool GetIndValue() { return(CopyBuffer(InpInd_Handle1,0,0,2,mfi)<=0 || CopyBuffer(InpInd_Handle2,1,0,2,env_low)<=0 || CopyBuffer(InpInd_Handle2,0,0,2,env_high)<=0 || CopyClose(Symbol(),PERIOD_CURRENT,0,2,close)<=0 )?false:true; } //+------------------------------------------------------------------+

止盈根据设定条件自动设置,而止损则根据时间帧手工设定。

策略 #2,布林带加两条移动均线

使用 布林带确定通道边界,并根据慢速和快速均线的相对位置过滤信号。

图例 4 示意入场条件。 两条 SMA 的默认周期均很小: 4 和 8。 周期值和平滑方法是可调的,因此您可以更改布林带信号的滤波灵敏度。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

图例 4. 交易策略 #2 的入场条件。

除入场条件外,策略 #2 与策略 #1 非常相似。

void OnTick() { //--- 检查以前由该 EA 开立的订单 if(!Trade.IsOpenedByMagic(Inp_MagicNum)) { //--- 获取数据进行计算 if(!GetIndValue()) return; //--- 如果有买入信号,则开单 if(BuySignal()) Trade.BuyPositionOpen(Symbol(),Inp_Lot,close[0]-Inp_StopLoss*_Point,tp,Inp_MagicNum,Inp_EaComment); //--- 如果有卖出信号,则开单 if(SellSignal()) Trade.SellPositionOpen(Symbol(),Inp_Lot,close[0]+Inp_StopLoss*_Point,tp,Inp_MagicNum,Inp_EaComment); } } //+------------------------------------------------------------------+ //| 买入条件 | //+------------------------------------------------------------------+ bool BuySignal() { if(ma_slow[0]>ma_fast[0] && bb_low[0]>close[0]) { tp=bb_up[0]; return true; } else return false; } //+------------------------------------------------------------------+ //| 卖出条件 | //+------------------------------------------------------------------+ bool SellSignal() { if(ma_slow[0]<ma_fast[0] && bb_up[0]<close[0]) { tp=bb_low[0]; return true; } else return false; } //+------------------------------------------------------------------+ //| 获取指标的当前值 | //+------------------------------------------------------------------+ bool GetIndValue() { return(CopyBuffer(InpInd_Handle1,1,0,2,bb_up)<=0 || CopyBuffer(InpInd_Handle1,2,0,2,bb_low)<=0 || CopyBuffer(InpInd_Handle2,0,0,2,ma_slow)<=0 || CopyBuffer(InpInd_Handle3,0,0,2,ma_fast)<=0 || CopyClose(Symbol(),PERIOD_CURRENT,0,2,close)<=0 )?false:true; } //+------------------------------------------------------------------+

如果觉得《量化交易软件:10 种横盘交易策略的比较分析》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。