老师好,不知道问什么没有信号平仓并做多了。已经有空单,设置了MarketPosition ==0还加了A_BuyPosition==0,但还是开了委托。不知道为什么?其它地方没有开仓的代码了,只有止损止盈,按道理应该进不去的。如果MarketPosition ==0在箭头的地方是会开多单,这个时候已经有空单了,就是不知道为什么平仓还开多了。
signalBuy = Close[1]<=MinClose && Close[1]<C-10*MinPoint && MaxClose-MinClose>ValueFluctuate*MinPoint && Close[1]<ValueEmaPeriod[1]-ValueDayFluctuate*MinPoint;
signalSellShort = Close[1]>=MaxClose && Close[1]>C+10*MinPoint && MaxClose-MinClose>ValueFluctuate*MinPoint && Close[1]>ValueEmaPeriod[1]+ValueDayFluctuate*MinPoint;
TrueBuyMarketPosition=MarketPosition<>0 And A_BuyPosition==0;
TrueSellMarketPosition=MarketPosition<>0 And A_SellPosition==0;
if(MarketPosition ==0 And A_BuyPosition==0)
{
IF(signalBuy)
{
BuyToCover(0, Open+2*EntryOffset*MinPoint);
Buy(1, Open+2*EntryOffset*MinPoint);
}
}
if(MarketPosition ==0 And A_SellPosition==0)
{
IF(signalSellShort)
{
Sell(1, Open-2*EntryOffset*MinPoint);
SellShort(1, Open-2*EntryOffset*MinPoint);
}
}
如果你这是了双向头寸,那么marketposition变成判断净头寸方向。
比如多2空1,净多1,那么marketposition就是1
比如多3空3,净持平,那么marketposition就是0
比如多1空2,净空1,那么marketposition就是-1
至于你说的,图上有信号,marketposition是0,除了像上面多空持平的情况,其他情况是不可能存在的。
当时就一手空单,实际情况就是这样,不然我就不会叨扰你们了。
如果没有设置成双向交易
出了多信号空单就被平了啊
前面已经给了解决方案
1、设置成双向交易
2、取多空各自持仓数量判断持仓状态
首先我就没搞明白为什么marketposition和a_sellposition可以同时出现
图表上有信号,但marketposition会一直为0,貌似确实是这里有问题
图上有信号marketposition不可能是0,10000%不可能是0
marketposition我基本不用
我没有测试过
这个函数应该是净头寸?
如果多空同时存在且相等
这个函数是否返回0?
因为有这个疑虑
所以我既没有使用也没有测试
不知道双向模式TBQ是有仓就返回还是我担心的那样
我习惯用取多空各自头寸的方式判断有无仓
还有
老刘说得你图表函数和账户交叉了也是问题
一般分开写逻辑
即使放一起也应该是or的关系
当时就一手空单,然后平空开的多。不过你说的取多空各自头寸去判断我赞同。
我当时是想投个机,我的MinClose会闪烁,我就想如果开仓的那根bar内又止损了但是又回到开仓条件,这个时候还是想要追进去,这个时候marketposition还是0(闪烁完之后开了仓但往止损方向走信号消失了,我还要判断是不是真止损了),所以才用的and。但是这里是我已经有仓位了,图表也是有信号,应该是进不去的。
可能就是图表函数和账户交叉了才出的问题,所以我现在只能分开用两个逻辑去实现了。但确实图表有信号,还是开了仓,我只有这里有开仓的代码,其他都是止盈止损平仓代码。管理员说的100%不会我也不反对,反正放一块就是实现不了,试了几回了,那都是真金白银。
你肯定要测试妥善了才能上实盘
从你的表述
一些理解是错的
如果一个bar会反复开平
那就要考虑载入更小的数据源切片尽量确保一个bar无论开平只交易一次
否则大概率衍生问题
你说的仓位标志状态
bar内是不会改变的
一些标志需要自己用全局变量记录状态
闪烁问题必须要解决
0容忍
谢谢你的耐心解答,用全局变量记录状态是个好办法。我不专业,但我觉得闪烁不一定是坏事,只是回测不准,衍生问题可以解决吗,程序毕竟是程序,最终还是实现人的想法。一个策略完全由历史的数据去判定未来的走向,要想实现稳定盈利其实是很难的,几分钟就可以导致损失惨重,我必须控制风险。而且很多时候回测也不准的啊,就像onbar的止损,如果在影线内就不行。
设置成双向交易?
是啊,还有一个止损代码,怕它会执行但是图表还会显示信号,我想保持信号和实际情况一致。但是不影响我这里出现的问题啊,还请赐教。