我的实盘策略是多空分离的,做空策略的开仓条件只有一个。
If(MarketPosition <> -1 and c[1] < LowerBand[1])
{
Sellshort(1, Open);
}
就是上个收盘价在布林线下轨下,就开空单。
苯乙烯连续90分钟周期。4月10日上午10:30-11:30的K线显示跟踪止损。这根K线的收盘价是10251,下轨的价格是10441。按照策略公式,下根K线肯定会再开空仓。
13:30,新的K线开始了,果然显示一单做空,于是我手动开了空单。
可是时间来到14:08:54,系统突然说信号闪烁了,开空仓的标志闪了几下消失了。
我百思不得其解,究竟是怎么回事?以前没遇到过这种情况。
老师可以通过远程控制,查看我的代码、图表和信息。
最近策略代写任务太多了,实在是没时间分析这个问题
建议投稿,看直播的时候有没有时间分析下
闪烁的根本原因就是IF条件有变化
代码中
只有LowerBand存在风险
策略单元和图表不要同时开
否则应该是执行了两次
MarketPosition按理说没问题
如果你排除了其他问题
那只能检查LowerBand相关的一切
晚上九点开盘又出现了两个空单。为什么前一根K线的信号会闪烁呢?
下单映射到主力合约了吗?
代码上看不出问题
要检查LowerBand类型、计算
但是能画线输出也没问题
我又刷新了一下,信号又回复到原来的位置了。实在找不到问题在哪里?请老师加我Q76878814, 或者微信18734933865,请用向日葵远程帮我看看是什么问题?
映射到主力合约了,lowband用得是前根K线的收盘价,应该没问题。
以我的水平看不出什么问题
但是,老师之前调试过一个类似的案例
用了SetBasePeriod函数
你可以先参考看看自己能不能通过打断点输出的方式找到问题
案例视频: https://video.tbquant.net/video?id=20250310103731783228
他这个是marketposition的位置问题,marketposition是序列变量
咱先捋一捋
既然多空策略分开
1设置成双向交易
做多和做空互不相干
2在1的基础上
不要用MarketPosition了
有图标函数取多头、空头持仓量
符合条件后
多单量为0开多
空单量为0开空
3你代码明显写的开仓量为1
你的图表为啥有2得情况?
多空策略分开后
是不是重复挂了
4如果你代码并不复杂
贴一下
很快就能解决问题
AveMa = Average(Close, Length);
StdValue = StandardDev(Close, Length, 2);
UpperBand = Avema + beishu * StdValue;
LowerBand = Avema - beishu * StdValue;
lowband应该也没有问题,就是布林线的下轨。
我贴的代码,在开仓数量并不是1,而一个变量,这个变量与长短期ATR的比率相关。我怀疑是变量与收盘价相关,导致开仓bar期间,开仓数量发生变动。但是转念一想,即使开仓量由1变成2,也不会造成信号消失哪。
总而言之,非常感谢wgy_king您的耐心回答。如果方便可以加我。如果不方便也没有关系,我再仔细检查下开仓量是不是会随时变化。此次信号闪烁是第一次出现,如果再发生,我就把代码贴出来,请您帮我找找原因。
用close会闪烁
实盘状态
close会变化
布林带也会变化
所以IF条件会变化
就会引起闪烁
而且那个数字就是仓位
你是不是既打开了策略运行
又打开了图表
并发交易了
不对
我看错了
晚点我再想想
76878814 我的Q