图表信号已经出现了卖出信号,并且真实地执行了SellShort命令。但工作区的仓位数量仍为空,没有更新。
以上为图表信号
以上为交易记录
以上为工作区的信号,并没有更新仓位
我的代码用了双图层,在data1中发出SellShort信号,逻辑使用在OnBarClose中触发,是因为这个原因没有同步更新吗?我已反复学习官方提供的信号闪烁教程,但一直没发现问题出在哪。该怎么设置,请各位老师指导。
主要的核心代码如下:
//每根BAR开始的时候设置触发时间点
OnBarOpen(ArrayRef<Integer> indexes)
{
Range[0:DataCount-1]
{
Numeric advancesec(5); //提前多少秒
Array<Numeric> timePoint;
Numeric ret = DateTimeAdd(RealEndDateTime, -1*advancesec);
ret = StringToTime(TimeToString(ret));
Print("endtime="+text(RealEndDateTime)+" SetTriggerBarClose:" + Text(ret));
ArrayPushBack(timePoint, ret);
SetTriggerBarClose(timePoint);
}
}
OnBarClose(ArrayRef<Integer> indexs)
{
Range[1:1]
{
If(MarketPosition == 0 and close <= downBand and close[1]>downband[1] and data0.c[1]<data0.MA5[1])
{
SellShort(lots,Close);
}
}
}
第一,确认你的k线图和策略单元是否同步运行?如果持续执行自动交易的是策略单元,k线图只是临时打开用来检查信号的,那信号不一致是有可能的,原因是模型存在信号消失。因为打开k线并不是打开策略单元的内容记录,而是用策略单元的配置重新运行策略公式。如果你的策略逻辑没有处理好实盘运行轨迹和历史运行轨迹的一致性,那么策略单元里是实盘运行轨迹,而k线图显示的是历史运行轨迹,那就会出问题。简单来说就是信号闪烁了。
第二,如果是多图层,没有展开的情况,策略单元只显示data0的持仓。试试点策略单元前面的小箭头展开策略单元,看看能不能看到持仓。
老师好,我先回答第二个问题吧,截图就是把data0和data1的图层都打开了,显示为0。
您说的第一个问题,是否确认K线图和策略单元是否同步运行,我不太理解是什么意思。要怎么看是否同步运行?
想要看一个策略单元的运行轨迹的正确办法是打开这个策略单元的测试报告,在图表成交记录里查看历史发生的信号,而不能通过打开k线,看图上的信号