算法,求改正 (文华财经WH8赢智V8.2)

投资者咨询:算法,求改正 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-4-3 21:49
您好,这个模型模拟运行时出现图片的这个情况,不停的出求止盈数量,改正!谢谢 


图片点击可在新窗口打开查看


VAR_TICKDATA data;
VAR N,CurTime,pcyk,cjzt;
VAR dtcc,ktcc,wcjdk,wcjkk,wcjdp,wcjkp,wtcd;
VAR ma7,ma7_3,ma7_1,hsjd1,hsjd6,hsjd1o,hsjd6o,hsjd61;
VAR bmtj,bstj,smtj,sstj;
GLOBAL_VAR New,CONQC,dtkc,dtcd,dtzy,dtzs,ktkc,ktcd,ktzy,ktzs,pmqc,zypd,zspd,dtcj,ktcj;
GLOBAL_VAR BKID,BPID,BZID,SKID,SPID,SZID,BKPRICE,SKPRICE;
GLOBAL_VAR dtimer,ktimer,dzsl,kzsl,zysl,dzpd,kzpd;
VAR CodeName;
VOID MAIN()
{  
   CodeName = "rb1805";  //交易品种
   New = Price(CodeName, "New");   //交易品种的当前价格
   CurTime = CurrentServerTime(CodeName);   //交易品种的交易所时间
   CONQC = (Hour( CurTime ) == 14 && Minute( CurTime ) == 59) || ( Hour( CurTime ) == 11 && Minute( CurTime ) == 29 )||( Hour( CurTime ) == 22 && Minute( CurTime ) == 59 )  && Second( CurTime ) >= 30 ;  //交易所停盘时间
   dtcc = AL_BuyPosition(CodeName);
   ktcc = AL_SellPosition(CodeName);
   wcjdk = T_OpenOrder(CodeName,1);
   wcjdp = T_OpenOrder(CodeName,2);
   wcjkk = T_OpenOrder(CodeName,3);
   wcjdp = T_OpenOrder(CodeName,4);
   pcyk = AL_OffSetProfit(); 
   N = 1;
   /*N = CEILING(0.1*T_Equity(0)/(New * Unit(CodeName) * T_MarginRatio(CodeName,0)));  //单笔成交量=总资金量可开仓10%*/
//调用技术指标参数:
ma7 = #Get("螺纹1805_5秒_ZIJIMAZHOU(2)","MA7",0);
ma7_3= #Get("螺纹1805_5秒_ZIJIMAZHOU(2)","MA7D",0);
    ma7_1= #Get("螺纹1805_5秒_ZIJIMAZHOU(2)","MA7K",0);
hsjd1 = #Get("螺纹1805_5秒_ZIJIMAZHOU(2)","DIFF",0);
hsjd6 = #Get("螺纹1805_5秒_ZIJIMAZHOU(2)","DEA",0);
hsjd1o = #Get("螺纹1805_5秒_ZIJIMAZHOU(2)","DIFFD",0);
hsjd6o = #Get("螺纹1805_5秒_ZIJIMAZHOU(2)","DIFFK",0);
    hsjd61 = #Get("螺纹1805_5秒_ZIJIMAZHOU(2)","ZHONGHE",0);
//多头开仓:
  bmtj = (ma7>New) &&ma7_3;  //5分钟买入条件
  bstj = hsjd1<hsjd6 && hsjd1o&&hsjd61;  //15秒买入条件
  IF( bmtj == 1 && bstj == 1&&  dtcc  == 0 && wcjdk == 0 && CONQC != 1 )
  {
   IF(dtkc == 0)
   {
    MessageOut("多头开仓条件满足");
    BKID = T_Deal(CodeName,0,0,N,Offers(CodeName,"bid1"));
    dtkc = 1;
    dtcd = 1;
    dtcj = 1;
    pmqc = 1;
   }
  }
//*多头开仓委托超时撤单:
 IF( Timer(BKID)>=45 &&  (wcjdk != 0))
  {
   IF(dtcd == 1)
   {
    MessageOut("多头开仓委托超时");
    T_DeleteOrderByCode( CodeName, 1);
    dtcd = 0;
    dtkc = 0;
   }
  }
//多头开仓成交判断
  IF(dtcj==1 && dtcc!=0)
  {
   IF(T_OrderState(BKID)==1||T_OrderState(BKID)==3)
   {
    MessageOut("多头开仓成交状态="+T_OrderState(BKID));
    BKPRICE = T_OrderMatchAvPrice(BKID);
    MessageOut("多头开仓均价="+BKPRICE);
    T_DeleteOrderByCode( CodeName, 1); 
   }
  dtcj = 0;
  dtzy = 1;
  dzpd = 1;
  }
//多头止盈:
  IF( wcjdk==0 && AL_BuyRemainPosition(CodeName) != 0)
  {
   IF(dtzy ==1 )
   {
   MessageOut("多头开仓成交,委托平仓");
   BPID = T_Deal(CodeName,1,2, AL_BuyRemainPosition(CodeName), BKPRICE+2);
   dtzy = 0;
    }
   dtkc = 0;   
   zypd = 1;
  }
  IF(zypd==1 && (T_OrderState(BPID) == 1||T_OrderState(BPID) == 3))
  {
   zysl = zysl + T_OrderMatchVol( BPID );
   MessageOut("止盈数量 = " + zysl);
   MessageOut("----------平仓盈亏="+pcyk+"----------");
   zypd = 0;
  }
//多头止损:
  IF(dzpd == 1 && (BKPRICE - New)>=5 && dtcc !=0)
  {  
   MessageOut("多头止损");
   wtcd = T_DeleteOrderByCode(CodeName,2);
   dzpd = 0;
   dtzs = 1;
  }
  IF(dtzs==1 && T_BuyRemainPosition(CodeName)>=dtcc && wtcd == 0)
  {
   BZID = T_Deal(CodeName,1,2,T_BuyRemainPosition(CodeName), Offers(CodeName,"bid1"));
   dtzs = 0;
   dtkc = 0;
   zspd = 1;
  }
   IF (zspd==1 && T_OrderState( BZID )==1)
   { 
    dzsl = dzsl+ T_OrderMatchVol( BZID );
    MessageOut("多头止损数量 ="+ dzsl);
    MessageOut("----------平仓盈亏="+pcyk+"----------");
    zspd =0; 
    }
//空头开仓:
  smtj = (ma7<New) &&ma7_1;  //5分钟卖出条件
  sstj = hsjd1<hsjd6 && hsjd6o&&hsjd61;  //15秒卖出条件
  IF( smtj == 1 && sstj == 1 && ktcc == 0 && wcjkk == 0 && CONQC != 1 )
  {
   IF(ktkc == 0)
   {
    MessageOut("空头开仓条件满足");
    SKID = T_Deal(CodeName,1,0,N,Offers(CodeName,"ask1"));
    ktkc = 1;
    ktcd = 1;
    ktcj = 1;
    pmqc = 1;
   }
  }
//空头开仓委托超时撤单:
IF(ktcd==1 && Timer(SKID) >=45 && wcjkk != 0 )
  {
   MessageOut("空头开仓委托超时");
   T_DeleteOrderByCode( CodeName, 3);
   ktcd = 0;
   ktkc = 0;
  }
//空头开仓成交判断
  IF(ktcj==1 && ktcc!=0)
  {
   IF(T_OrderState(SKID)==1||T_OrderState(SKID)==3)
   {
    MessageOut("空头开仓成交状态="+T_OrderState(SKID));
    SKPRICE = T_OrderMatchAvPrice(SKID);
    MessageOut("空头开仓均价="+SKPRICE);
    T_DeleteOrderByCode( CodeName, 3); 
   }
    ktcj = 0;
    ktzy = 1;
    kzpd = 1;
  }
//空头止盈:
  IF( ktzy == 1 && wcjkk == 0 && AL_SellRemainPosition(CodeName) != 0)
  {
   MessageOut("空头开仓成交,委托平仓");
   SPID = T_Deal(CodeName,0,2, AL_SellRemainPosition(CodeName), SKPRICE - 2);
   ktzy = 0;
   ktkc = 0;
   zypd =1;
  }  
  IF(zypd == 1 && (T_OrderState( SPID ) == 1||T_OrderState(SPID) == 3))
  {
   zysl = zysl + T_OrderMatchVol( SPID );
   MessageOut("止盈数量 = " + zysl);
   MessageOut("----------平仓盈亏="+pcyk+"----------");
   zypd =0;
  }    
//空头止损:
  IF(kzpd == 1 && (New - SKPRICE)>=5 && ktcc !=0)
  {
   MessageOut("空头止损");
   wtcd = T_DeleteOrderByCode(CodeName,4);
   kzpd = 0;
   ktzs = 1; 
  }
  IF(ktzs==1 && T_SellRemainPosition(CodeName)>=ktcc && wtcd == 0)
  {
   SZID = T_Deal(CodeName,0,2,T_SellRemainPosition(CodeName), Offers(CodeName,"ask1"));
   ktzs = 0;
   ktkc = 0;
   zspd = 1;
  }  
  IF( zspd==1 && T_OrderState( SZID )==1)
  { 
   kzsl =  kzsl+T_OrderMatchVol( SZID );
   MessageOut("空头止损数量 ="+ kzsl);
   MessageOut("----------平仓盈亏="+pcyk+"----------");
   zspd =0;
  }
//盘末清仓:
IF(pmqc == 1 && CONQC == 1)
  {  
   MessageOut("30秒后停盘");
   IF(dtcc!= 0 ||ktcc!=0)
   {
    MessageOut("盘末清仓");
    wtcd = T_DeleteOrderByCode(CodeName,0);
   }
   pmqc =0;
   dtkc = 0; 

图片点击可在新窗口打开查看
   ktkc = 0;  
   IF(dtcc!=0 && T_BuyRemainPosition(CodeName)>=dtcc && wtcd ==0 )
   {
   T_Deal(CodeName,1,2,T_BuyRemainPosition(CodeName), Offers(CodeName,"bid1"));
   }
   IF(ktcc!=0 && T_SellRemainPosition(CodeName)>=ktcc && wtcd ==0) 
   {
   T_Deal(CodeName,0,2,T_SellRemainPosition(CodeName),Offers(CodeName,"ask1"));
   }
   }
  }
投资者咨询:算法,求改正 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-4-3 21:49
 好滴,谢谢
投资者咨询:算法,求改正 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-4-3 21:49
 还出现个问题,不是一平一开!!

图片点击可在新窗口打开查看
投资者咨询:算法,求改正 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-4-3 21:49
 还有个问题,止损时平仓盈亏是减钱,止盈时平仓盈亏也是减钱
技术人员回复
日期:2018-4-4 13:04
 
您源码想要实现的思路是什么?

要求一开一平,之后不持续止盈吗?

您认为源码哪里不符合您的需求,您详细描述下,以便我们根据您的思路帮您修改
投资者咨询:算法,求改正 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-4-3 21:49
1,止损时平仓盈亏是减钱,止盈时平仓盈亏也是减钱。
2,出现图上的这些,就再也不开仓了。
3,一平一开我解决了


图片点击可在新窗口打开查看
技术人员回复
日期:2018-4-4 15:26
您的源码较多,我们安排专业的同事帮您核对下编写

算法模型修改需要排队的,预计需要2-3周左右的时间,请耐心等待下


此外,您也可以详细描述下思路,以及需要补充的思路,我们统一帮您修改完成
投资者咨询:算法,求改正 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-4-3 21:49
 好,谢谢
投资者咨询:算法,求改正 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-4-3 21:49
 怎么样了?
技术人员回复
日期:2018-5-14 22:02
目前客户需求较多,您的模型还在排队编写,请耐心等待

有结果我们会跟帖给您回复的


另外,如果您需求比较急的话,可以开通VIP客户,实盘客户是优先于模拟的

授权购买请拨打 400-811-3366进行详细的咨询