算法模型问题 (文华财经WH8赢智V8.2)

投资者咨询:算法模型问题 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-7-19 1:07
 您好,能帮我改成一开一平吗?谢谢
VAR Modname;
VAR Code1;//定义合约名称
VAR Price1;//定义最新价
VAR SellPosition,BuyPosition;//定义模组空头持仓、多头持仓
GLOBAL_VAR LastWithDrawFinsh; //这个变量的作用是避免撤单的过程中反复的进行撤单

VOID MAIN() 
{
    Modname="沪银1812_30秒_细分(5)";
Code1=Modname.F_DealCode();
    Price1=Price(Code1,"New");//定义最新价为当前模型所加载合约的最新价
    SellPosition=AL_SellRemainPosition(Code1);
    BuyPosition=AL_BuyRemainPosition(Code1);
    IF(CurrentTime()-LastOrderTime()<2 && LastOrderTime()!=0)
// RETURN; //控制组件的执行频率 两秒执行一次
//icount=Modname.F_SigCount();
IF(T_IsNoOrder()!=1 ) //有挂单的情况
{
//查询挂单然后进行撤单重下?还是直接撤单?
//need added code
IF(CurrentTime()-LastOrderTime()>60 && LastWithDrawFinsh == 1) //如果20秒有委托未成交,全撤,下次进入会重新下委托
{
T_DeleteOrderAll();
LastWithDrawFinsh=0;
}
RETURN;
}
LastWithDrawFinsh=1;
Modname.F_FreshSig(); //取得一个还未处理的新信号
IF(Modname.F_Sig() == BK && Modname.F_SigValid() == 1) //如果取出的信号为BPK 且信号不是消失状态
{
IF(SellPosition!=0)
{
MessageOut("信号BPK生效,平掉所有卖仓");
T_ReduceSellOpiTo(Code1, Price1,0); //平掉所有空头持仓
}
IF(BuyPosition == 0)
{
MessageOut("信号BPK生效,开仓");
T_AddBuyOpiTo(Code1, Price1,Modname.F_SigVol()); //补充持仓
}
}
ELSE IF(Modname.F_Sig() == SK && Modname.F_SigValid() == 1) //如果取出的信号为SPK 且信号不是消失状态 
{
IF(BuyPosition!=0)
{
MessageOut("信号SPK生效,平掉所有卖仓");
T_ReduceBuyOpiTo(Code1, Price1,0); //平掉所有多头持仓
}
IF(SellPosition == 0) //如果买仓为0,不存在止赢止损问题,直接开仓
{
MessageOut("信号SPK生效,开仓");
T_AddSellOpiTo(Code1, Price1,Modname.F_SigVol()); //补充空头持仓
}
}
IF(Modname.F_Sig() == BK && Modname.F_SigValid() == 0) //BPK 条件不满足(似可认为BPK信号处在消失状态)
{
IF(BuyPosition!=0)
{
MessageOut("信号BPK失效,平掉所有买仓");
T_ReduceBuyOpiTo(Code1, Price1,0); //平掉所有多头持仓
}
}
ELSE IF(Modname.F_Sig() == SK && Modname.F_SigValid() == 0) //SPK 条件不满足(似可认为SPK信号处在消失状态)
{
IF(SellPosition!=0)
{
MessageOut("信号SPK失效,平掉所有卖仓");
T_ReduceSellOpiTo(Code1, Price1,0); //平掉所有空头持仓
}
}
 
技术人员回复
日期:2018-7-19 8:38

 您一楼提供的是算法模型需要结合模组来使用的

 

分析您一楼源码正常是不会存在锁仓情况的

 

核实一下您具体是哪里有疑问呢?

投资者咨询:算法模型问题 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-7-19 1:07
 不停地开仓,触发就开仓,我想要一开一平,平完再开新仓
技术人员回复
日期:2018-7-19 11:03
 算法模型改写较复杂,分析后预计下午17前给您回复
技术人员回复
日期:2018-7-19 17:02

 参考:

 

VAR Modname;
VAR Code1;//定义合约名称
VAR Price1;//定义最新价
VAR SellPosition,BuyPosition;//定义模组空头持仓、多头持仓
GLOBAL_VAR LastWithDrawFinsh,B,S;    //这个变量的作用是避免撤单的过程中反复的进行撤单


VOID MAIN()
{
    Modname="沪银1812_30秒_细分(5)";
Code1=Modname.F_DealCode();
    Price1=Price(Code1,"New");//定义最新价为当前模型所加载合约的最新价
    SellPosition=AL_SellRemainPosition(Code1);
    BuyPosition=AL_BuyRemainPosition(Code1);
    IF(CurrentTime()-LastOrderTime()<2 && LastOrderTime()!=0)    
//    RETURN;    //控制组件的执行频率 两秒执行一次
//icount=Modname.F_SigCount();
IF(T_IsNoOrder()!=1 )    //有挂单的情况
{
//查询挂单然后进行撤单重下?还是直接撤单?
//need added code
IF(CurrentTime()-LastOrderTime()>60 && LastWithDrawFinsh == 1)    //如果20秒有委托未成交,全撤,下次进入会重新下委托
{
T_DeleteOrderAll();
LastWithDrawFinsh=0;
S=0;
B=0;
}
RETURN;
}
LastWithDrawFinsh=1;    
Modname.F_FreshSig();    //取得一个还未处理的新信号
IF(Modname.F_Sig() == BK && Modname.F_SigValid() == 1)    //如果取出的信号为BPK 且信号不是消失状态
{
IF(SellPosition!=0)
{
MessageOut("信号BPK生效,平掉所有卖仓");
T_ReduceSellOpiTo(Code1, Price1,0); //平掉所有空头持仓
}
IF(BuyPosition == 0&&B==0)
{
MessageOut("信号BPK生效,开仓");
T_AddBuyOpiTo(Code1, Price1,Modname.F_SigVol()); //补充持仓
B=1;
S=0;
}
}
ELSE IF(Modname.F_Sig() == SK && Modname.F_SigValid() == 1)    //如果取出的信号为SPK 且信号不是消失状态
{
IF(BuyPosition!=0)
{
MessageOut("信号SPK生效,平掉所有卖仓");
T_ReduceBuyOpiTo(Code1, Price1,0); //平掉所有多头持仓
}
IF(SellPosition == 0&&S==0)    //如果买仓为0,不存在止赢止损问题,直接开仓
{
MessageOut("信号SPK生效,开仓");
T_AddSellOpiTo(Code1, Price1,Modname.F_SigVol()); //补充空头持仓
S=1;
B=0;
}
}
IF(Modname.F_Sig() == BK && Modname.F_SigValid() == 0)    //BPK 条件不满足(似可认为BPK信号处在消失状态)
{
IF(BuyPosition!=0)
{
MessageOut("信号BPK失效,平掉所有买仓");
T_ReduceBuyOpiTo(Code1, Price1,0); //平掉所有多头持仓
B=0;
}
}
ELSE IF(Modname.F_Sig() == SK && Modname.F_SigValid() == 0) //SPK 条件不满足(似可认为SPK信号处在消失状态)
{
IF(SellPosition!=0)
{
MessageOut("信号SPK失效,平掉所有卖仓");
T_ReduceSellOpiTo(Code1, Price1,0); //平掉所有空头持仓
S=0;
}
}
}