在下面公式中,想通过状态值与真实仓位来控制只开一次多单,(状态值与仓位开仓与根据金叉点开仓相比的好处在于可以随时检验是否有漏单并纠错)
但在实际测试时,在图表上每根K线上都显示开多信号,不知什么原因?
ma1:=ma(c,5);
ma2:=ma(c,10);
jczt:ma1>ma2;
//
aa:=tholding;
a:=holding;
//
if(aa=0 and a>0) then sell(1,0,market);//平仓后保证虚拟帐户资金可以开多单
if(aa=0 and a<0) then sellshort(1,0,market);//平仓后保证虚拟资金帐户可以开空单
if(jczt and aa=0) then buy(1,1,market);//满足条件且真实帐户上无仓位时开一次多单
问题在于
THOLDING是与你真实持仓一致的函数,但仅限在最后一根K线上----在历史K线上都是0
从你的代码推测你的意图:
1.会手工平仓,手工平仓之后希望虚拟帐户马上帮你也显现出来
2.开仓条件为:ma1>ma2
而非5日均线上穿10日均线
问题在于
THOLDING是与你真实持仓一致的函数,但仅限在最后一根K线上----在历史K线上都是0
从你的代码推测你的意图:
1.会手工平仓,手工平仓之后希望虚拟帐户马上帮你也显现出来
2.开仓条件为:ma1>ma2
而非5日均线上穿10日均线
是的,会手工平仓,手工平仓后希望下一次满足条件时虚拟帐户能自动开仓;
2也是对的,希望开仓条件是ma1>ma2的状态值,但配合仓位的检查,它只开一次仓
能否详细说说如何修改代码,做到这两点,谢谢