王老师的高频策略,止损四种持仓情况,
1,三个空单持仓,2,一个多单两个空单,3,两个多单一个空单,4,三个多单。但是三个多单持仓的时候,会出现以下情况:
三个多单成交,挂止盈,并没有达到止损条件10个跳点,被系统立马撤单,然后止损掉。
实盘每次都这样,换了几个品种都是这样。
模拟账户,有时出现三个多单,出现止损条件也不撤单,一直拿着,有时会正常平仓,有时也会出现没有达到止损条件也会被撤单立马止损。看行情变化。
策略跟老师写的一样,检查了几遍,没有发现什么不同的地方,不知道怎么解决,还有什么思路可以实现:满足止损条件,撤止盈挂单,立马止损。
if( A_SellPosition>0 && GetGlobalVar(5)==0 && BarStatus==2 && A_GetOpenOrderCount()>0)
{
A_DeleteOrder();
SetGlobalVar(5,3);
}
if(GetGlobalVar(5)==3 && A_GetOpenOrderCount()==0)
{
A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,getglobalvar(2)+pll+offset*MinMove*PriceScale);
SetGlobalVar(4,0);
SetGlobalVar(5,4);
}
有没有其他的止损写法,这个写法有点高级,有点绕,有点头晕,根据报单索引撤单,计算均价,设置止损条件,怕报单索引保存或提取出现问题,导致计算出来的均价存在问题。
列举几种成交情形,根据真实成交来分别计算和处理,那样写出来,可能复杂一些,但是没这么绕,踏实些。
else if(real_price<avg_buyprice[0]-stoploss_tick*mindiff and real_price<>0 and linshiduo<3)
{
buy_stopt=buy_stopt+1;
if(linshikong>0)
{
for i=0 to GetArraySize(Array_temp_kong)-1
{
A_DeleteOrderEx(Array_temp_kong[i]);
}
}
if(linshiduo>0)
{
for i=0 to GetArraySize(Array_temp_duo)-1
{
A_DeleteOrderEx(Array_temp_duo[i]);
}
}
big_con=5;
交易助手没启用,也不是系统风控撤的,是公式所致。
锋芒同学的高频策略,我限制了三个多单持仓发送止损,发现还是会出现一次,然后后面的就不止损了。
我怀疑报单索引,可能存在记录问题,要么就是第一个买单报单索引是开系统的第一个,一直存在,没有撤掉。
即便如此,其实其他的止损跳点也不是10个跳点的设置值,有多有少,但是三个多单的持仓情况,发送止盈之后,立马会被撤单,然后止损,无法接受。
诊断日记,记录了一些轨迹,不知道哪里出错,水平有限,所以求助老师。
linshiduo=GetMapKeys(sell_exit,Array_temp_duo);
linshikong=GetMapKeys(buy_exit,Array_temp_kong);
/*if(linshiduo>=3 and real_price<avg_buyprice[0]-stoploss_tick*mindiff and real_price<>0)
{
buy_stopt=buy_stopt+1;
for i=0 to GetArraySize(Array_temp_duo)-1
{
A_DeleteOrderEx(Array_temp_duo[i]);
}
big_con=5;
}*/
限制了三个多单持仓情况,无论是否达到止损条件,都不发送止损,运行之后,还是出现了一单三个多单持仓立马止损的问题,后面就没有了。
第一,先确定撤单源,是公式撤的,还是系统风控撤的,还是交易助手撤的。
第二,写诊断日志,记录公式运行轨迹,看看到底什么地方出问题了。