关于基于随机指标缓冲区的EA多空开仓信号逻辑的问询
随机指标EA交易逻辑验证与修正
需求明确
要实现的EA交易逻辑:
- 随机指标上穿20阈值时,触发开多单
- 随机指标下穿80阈值时,触发开空单
多单条件分析与修正
用户原代码:
if(cntBuy==0 && bufferMain[0]<=(100-InpUpperLevel) && bufferMain[1]>(100-InpUpperLevel))
问题点
原逻辑是前一根K线指标值高于阈值,当前K线指标值低于/等于阈值,属于指标下穿阈值的判断,和“上穿20开多”的需求完全相反。若要对应阈值20,需满足100-InpUpperLevel=20(即InpUpperLevel=80)。
修正后的多单条件
如果要贴合“上穿20(比如从20涨到21)”的逻辑,代码可调整为两种形式:
// 直接硬编码阈值版本 if(cntBuy==0 && bufferMain[1]<20 && bufferMain[0]>=20) // 保留参数配置版本(InpUpperLevel设为80时,100-InpUpperLevel=20) if(cntBuy==0 && bufferMain[1]<(100-InpUpperLevel) && bufferMain[0]>=(100-InpUpperLevel))
该逻辑为:前一根K线指标值低于20,当前K线指标值高于/等于20,即完成上穿动作。
空单条件分析与修正
用户原代码:
if(cntSell==0 && bufferMain[0]>=InpUpperLevel && bufferMain[1]<InpUpperLevel)
问题点
原逻辑是前一根K线指标值低于阈值,当前K线指标值高于/等于阈值,属于指标上穿阈值的判断,和“下穿80开空”的需求相反。
修正后的空单条件
如果要贴合“下穿80(比如从80跌到79)”的逻辑,代码可调整为两种形式:
// 直接硬编码阈值版本 if(cntSell==0 && bufferMain[1]>80 && bufferMain[0]<=80) // 保留参数配置版本(InpUpperLevel设为80) if(cntSell==0 && bufferMain[1]>InpUpperLevel && bufferMain[0]<=InpUpperLevel)
该逻辑为:前一根K线指标值高于80,当前K线指标值低于/等于80,即完成下穿动作。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

