下单组件 开多,自动减仓后,不停的循环平仓0手,哪里有问题呢 [文华财经]
- 咨询内容:
//1、当策略发BK信号,买多3手;如果实时涨3点,止盈平多单2手;如果实时跌5点,全部止损平仓。
//2、当策略发出SP信号,全部平仓。
//3、当策略发SK信号,买空3手;如果实时跌3点,止盈平空单2手;如果实时涨5点,全部止损平仓。
//4、当策略发出BP信号,全部平仓。
//5、如果委托20秒不成交,全部撤单重新委托。
//当信号为BPK或SPK时可能不会被执行VAR LastWithDrawFinsh;
VAR B,S,F;
VAR K,Y,N;VOID MAIN()//主函数
{ K=50;//止损参数(*0.2)
Y=15;//止盈参数(*0.2)
N=5;//开仓手数LastWithDrawFinsh=ReadGlobal("LASTWITHDRAW");
IF(T_IsNoOrder()!=1 ) //有挂单的情况
{
IF(CurrentTime()-LastOrderTime()>10 && LastWithDrawFinsh==1)//如果10秒有委托未成交,全撤,下次进入会重新下委托
{
T_DeleteOrderAll();//撤掉所有未成交委托。
LastWithDrawFinsh=0;
}
WriteGlobal("LASTWITHDRAW", LastWithDrawFinsh);
RETURN;
}
LastWithDrawFinsh=1;
F=F_FreshSig(); //取一个新信号
IF (T_BuyPosition(F_DealCode())>0)//如果多头持仓大于0
{
IF(F==0) //如果没有信号
{
B=ReadGlobal("BKPRICE");//读取注册表中上一次记录的开多仓价格。
IF(Price(F_DealCode())>=T_BuyAvgPrice(F_DealCode())+Y*MinPrice(F_DealCode()) )//如果盈利3个点()
{
T_ReduceBuyOpiTo(F_DealCode(),Price(F_DealCode()),3);//减仓至3手
}
IF(Price(F_DealCode())<=B-K*MinPrice(F_DealCode()))//如果亏5点
{
T_Deal(F_DealCode(),1,1,F_BuyPosition(),0);//市价全平多
}
}
ELSE IF(F==1) //如果有信号
{
IF(F_Sig()==SP&& F_SigValid()==1)//当前信号为SP
{
T_Deal(F_DealCode(),1,1,F_BuyPosition(),0); //全平
}
}
RETURN;
}IF (T_SellPosition(F_DealCode())>0) //如果空头持仓大于0
{
IF(F==0)
{
S=ReadGlobal("SKPRICE");//读取注册表中上一次记录的开空仓价格。
IF(Price(F_DealCode())<=T_SellAvgPrice(F_DealCode())-Y*MinPrice(F_DealCode()) )
{
T_ReduceSellOpiTo(F_DealCode(),Price(F_DealCode()),3);
}
IF(Price(F_DealCode())>=S+K*MinPrice(F_DealCode()))
{
T_Deal(F_DealCode(),0,1,F_SellPosition(),0);
}
}
ELSE IF(F==1)
{
IF(F_Sig()==BP&& F_SigValid()==1)//当前信号为BP信号。
{
T_Deal(F_DealCode(),0,1,F_SellPosition(),0);
}
}
RETURN;
}
IF (T_BuyPosition(F_DealCode())==0 && T_SellPosition(F_DealCode())==0)//如果空仓
{
IF(F==1)
{
IF(F_Sig()==BK&& F_SigValid()==1)//当前信号为开多仓信号。
{
T_Deal(F_DealCode(),0,0,N,Price(F_DealCode())+MinPrice(F_DealCode()));//开多N手,价格+1
B=F_SigPrice();
WriteGlobal("BKPRICE",B);
}IF(F_Sig()==SK&& F_SigValid()==1)//当前信号为开空仓信号。
{
T_Deal(F_DealCode(),1,0,N,Price(F_DealCode())-MinPrice(F_DealCode()));
S=F_SigPrice();
WriteGlobal("SKPRICE",S);
}
}
}
} - 文华技术人员:
T_ReduceBuyOpiTo(F_DealCode(),Price(F_DealCode()),3);//减仓至3手
会不会是上面这句有问题,因为自动减仓至3手后,程序就不停的发出减仓0手的指令。
- 文华客服:
因为您的手数已经是3手了,没有用别的条件限制,所以软件在运行REDUCE时会发出委托0手的指令
- 网友回复:
在这个组件里,
"LASTWITHDRAW"是一个什么参数?
"BKPRICE"是注册表里的数值吗?在函数表里怎么没有这样的参数?还有哪些类似这种类型的参数呢?
- 网友回复: 工作时间咨询相关同事后回复您
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 262069696 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容