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

投资者咨询:算法模型问题 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2019-3-22 13:18
 VAR Modname[2];// 
VAR Model[2];//
VAR Count;//
GLOBAL_VAR YINBIDSTATE[2], YINASKSTATE[2]; // 
GLOBAL_VAR LASTBIDVOL[2], LASTASKVOL[2]; // 
GLOBAL_VAR YINBIDTHSTATE[2], YINASKTHSTATE[2]; // 
//临时的合约名变量
VAR TempModeName;
VAR BuyVol,SellVol,BuyTodayVol,SellTodayVol;
VAR BuyOrderID,SellOrderID;
VAR CodeCount;
VOID MAIN()
{
CodeCount = 2;
Modname[0] = "A";
Modname[1] = "B";

   Model[0] = Modname[0].F_DealCode();
   Model[1] = Modname[1].F_DealCode();

   FOR(Count = 0;Count < CodeCount; Count = Count + 1)
   {
      TempModeName = Model[Count];
      IF(LASTBIDVOL[Count] != T_BuyPosition(TempModeName))
      {
         LASTBIDVOL[Count] = T_BuyPosition(TempModeName);
         YINBIDSTATE[Count] = 0;
         YINBIDTHSTATE[Count] = 0;
      }
      IF(LASTASKVOL[Count] != T_SellPosition(TempModeName))
      {
         LASTASKVOL[Count] = T_SellPosition(TempModeName);
         YINASKSTATE[Count] = 0;
         YINASKTHSTATE[Count] = 0;
      }
      CodePing(TempModeName, Count);
      CodePing2(TempModeName, Count);
      //MessageOut("Count + " + Count + "TempModeName + " + TempModeName);
   }
}
VOID CodePing(VAR CodeName, VAR Count)
{
   //判断是否为上海合约,上海合约先判断今仓,再做老仓处理
   IF(T_IsSHCode(CodeName))
   {
      BuyVol = T_SHBuyPosition(CodeName,0);
      SellVol = T_SHSellPosition(CodeName,0);
      IF(T_BuyProfitLoss(CodeName) <= -300)
      {
         IF(BuyVol > 0)
         {
            BuyOrderID = T_Deal1(CodeName,1,2,BuyVol,LIMIT_ORDER);
         }
         BuyVol = T_SHBuyPosition(CodeName,1);
         IF(BuyVol > 0)
         {
            BuyOrderID = T_Deal1(CodeName,1,1,BuyVol,LIMIT_ORDER);
         }
      }
      IF(T_SellProfitLoss(CodeName) <= -300)
      {
         IF(SellVol > 0)
         {
            SellOrderID = T_Deal1(CodeName,0,2,SellVol,LIMIT_ORDER);
         }
         SellVol = T_SHSellPosition(CodeName,1);
         IF(SellVol > 0)
         {
            SellOrderID = T_Deal1(CodeName,0,1,SellVol,LIMIT_ORDER);
         }
      }
   }
   ELSE
   {
      BuyVol = T_BuyPosition(CodeName);
      SellVol = T_SellPosition(CodeName);
      IF(BuyVol != 0)
      {
         IF(T_BuyProfitLoss(CodeName) <= -300)
         {
            YINBIDTHSTATE[Count] = 0;
            BuyOrderID = T_Deal1(CodeName,1,1,BuyVol,LIMIT_ORDER);
         }
      }
      IF(SellVol != 0)
      {
         IF(T_SellProfitLoss(CodeName) <= -300)
         {
            YINASKTHSTATE[Count] = 1;
            SellOrderID = T_Deal1(CodeName,0,1,SellVol,LIMIT_ORDER);
         }
      }
   }
}   

VAR tempState;
VOID CodePing2(VAR CodeName, VAR Count)
{
   IF(T_BuyRemainPosition(CodeName) > 0)
   {
      IF( (T_BuyProfitLoss(CodeName) >= 300 || Price(CodeName,"New")/T_BuyOpiAvgPrice(CodeName) >=1.005) && YINBIDSTATE[Count] == 0)
      {
         YINBIDTHSTATE[Count] = 1;
      }
   }
   IF(T_SellRemainPosition(CodeName) > 0)
   {
      IF( (T_SellProfitLoss(CodeName) >= 300 || Price(CodeName,"New")/T_SellOpiAvgPrice(CodeName) >=0.995) && YINASKSTATE[Count] == 0)
      {
         YINASKTHSTATE[Count] = 1;
      }
   }
   // 多头止盈全平
   IF(YINBIDSTATE[Count] > 0 || YINBIDTHSTATE[Count] == 1)
   {
      IF(Price(CodeName,"New") <= T_BuyAvgPrice(CodeName) + MinPrice(CodeName))
      {
         YINBIDTHSTATE[Count] = 0;
         IF(T_IsSHCode(CodeName))
         {
            BuyVol = T_SHBuyPosition(CodeName,0);
            IF(BuyVol > 0)
            {
       BuyOrderID = T_Deal1(CodeName,1,2,BuyVol,LIMIT_ORDER);
            }
    BuyVol = T_SHBuyPosition(CodeName,1);
            IF(BuyVol > 0)
            {
               BuyOrderID = T_Deal1(CodeName,1,1,BuyVol,LIMIT_ORDER);
            }
         }
         ELSE
         {
            BuyVol = T_BuyPosition(CodeName);
            IF(BuyVol > 0)
            {
               BuyOrderID = T_Deal1(CodeName,1,1,BuyVol,LIMIT_ORDER);
            }
         }
  }
   }     // 空头止盈全平
   IF(YINASKSTATE[Count] > 0 || YINASKTHSTATE[Count] == 1)
   {
      IF(Price("CodeName","New") >= T_SellAvgPrice(CodeName) - MinPrice(CodeName))
      {
         YINASKTHSTATE[Count] = 0;
         IF(T_IsSHCode(CodeName))
         {
            SellVol = T_SHSellPosition(CodeName,0);
            IF(SellVol > 0)
            {
               SellOrderID = T_Deal1(CodeName,0,2,SellVol,LIMIT_ORDER);
            }
            SellVol = T_SHSellPosition(CodeName,1);
            IF(SellVol > 0)
            {
               SellOrderID = T_Deal1(CodeName,0,1,SellVol,LIMIT_ORDER);
            }
         } 
         ELSE
         {
            SellVol = T_SellPosition(CodeName);
            IF(SellVol > 0)
            {
               SellOrderID = T_Deal1(CodeName,0,1,SellVol,LIMIT_ORDER);
            }
         }
      }
   }
}
 

并不能实现:模组合约:
1.亏损300平仓,
2.盈利300或者盈利0.5%,后回撤到保本1个最小波动止损!

请老师看看什么问题!


假设:我要实现AB模组的合约在持仓中有1和2就平仓,也希望手动开仓AB模组合约页可以实现!貌似这里的取得合约最新有问题啊!
       
技术人员回复
日期:2019-3-22 17:03

我们和相关同事核实一下,后续可能需要和您核实几个问题

 

预计下周一工作时间回复

技术人员回复
日期:2019-3-25 14:03

您的算法模型开始处理,核实一下:

 

是判断交易账户中模组A、B交易的合约的盈亏进行平仓?

 

例如模组A的合约为沪铜1905,则交易账户中沪铜1905的持仓(包括模组开仓和手动开仓)亏损300,则平仓?