组件信号查询 (文华财经WH8赢智V8.2)

投资者咨询:组件信号查询 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-7-8 10:20
回测结果不对,未触发止盈止损条件就原价进原价平仓出来

图片点击可在新窗口打开查看 VAR_TICKDATA data;
VAR N,N1,BPRICE,Lost,Win,CurTime;
GLOBAL_VAR High,BKID,New,Type,Typp,CONQC;
VAR CodeName;
VOID MAIN()
{  
   CodeName = "rm1809";
   N = 2; // 下单手数
   N1 = 1; //当合约价格上涨1个最小变动价位
   Lost = 3; //止损3个最小变动价位
   Win = 5; //止盈5个最小变动价位
   New = Price(CodeName, "New"); //获取当前合约最新价
   BPRICE=T_BuyAvgPrice(CodeName);//取得持仓栏中该合约多头持仓均价
   data = Def_TickData(CodeName,1,4); // 保存最近四笔的tick数据
   CurTime = CurrentTime(); // 获取当前时间
   // 收盘前30秒清仓
   CONQC = (Hour( CurTime ) == 14 && Minute( CurTime ) == 59) || ( Hour( CurTime ) == 10 && Minute( CurTime ) == 14 ) || ( Hour( CurTime ) == 11 && Minute( CurTime ) == 29 ) && Second( CurTime ) > 30 ;
   IF( Typp == 0 && (CONQC == 1))
   {
 MessageOut("收盘前30秒清仓");
 T_Deal(CodeName,1,1,T_BuyRemainPosition( CodeName ),Offers(CodeName,"bid1")); 
 Type = 0;
      Typp = 1;
   }

   IF( data.State == 1 ) // 数据保存完成
   {
 //主动买而且成交量大于100手,买1价做多
 IF( Type == 0 && data[3].Activity==0 && CONQC != 1)
 {
IF(  data[3].TickVolum-data[2].TickVolum>100)
{
MessageOut("主动买而且成交量大于100手");
BKID = T_Deal(CodeName,0,0,N,Offers(CodeName,"bid1")); 
Type = 1;
            Typp = 0;
}
 }
 //当合约价格上涨1个最小变动价位,加仓1手
 IF(Type == 1 && T_OrderState(BKID) == 1 && CONQC != 1 )
 {
MessageOut("当合约价格上涨1个最小变动价位,加仓1手");
IF( New - T_OrderMatchAvPrice(BKID) >=N1 * MinPrice(CodeName) )
{
BKID = T_Deal(CodeName,0,0,1,Offers(CodeName,"bid1")); 
Type = 2;
            Typp = 0;
}
 }
 IF( Type == 2 && T_OrderState(BKID) == 1 )
 {
Type = 1;
 }
 PingCang();
 SPDeal();
 High = Price(CodeName, "High");
   }
}
//止盈2个最小变动价位
//止损2个最小变动价位
VOID SPDeal()
{
   IF( BPRICE - New >= Lost*MinPrice(CodeName) || New - BPRICE >= Win*MinPrice(CodeName))
   {
 IF( Type != 0 && T_BuyRemainPosition( CodeName ) > 0 )
 {
MessageOut("止盈止损");
T_Deal(CodeName,1,1,T_BuyRemainPosition( CodeName ),Offers(CodeName,"bid1")); 
Type = 0;
 }
   }
}
//当持仓手数超过了5手,并且最新价格超过了今天的最高价,对价平仓
VOID PingCang()
{
   IF( Type != 0 && T_BuyRemainPosition( CodeName ) > 5 && New > High ) // 该组件多头持仓超过5手
   {
 MessageOut("当持仓手数超过了5手,并且最新价格超过了今天的最高价,对价平仓");
 T_Deal(CodeName,1,1,T_BuyRemainPosition( CodeName ),Offers(CodeName,"bid1")); 
 Type = 0;
   }
}
   
技术人员回复
日期:2018-7-8 11:05
这么改下

VAR_TICKDATA data;
VAR N,N1,BPRICE,Lost,Win,CurTime;
GLOBAL_VAR High,BKID,New,Type,Typp,CONQC;
VAR CodeName;
VOID MAIN()
{  
   CodeName = "rm1809";
   N = 2; // 下单手数
   N1 = 1; //当合约价格上涨1个最小变动价位
   Lost = 3; //止损3个最小变动价位
   Win = 5; //止盈5个最小变动价位
   New = Price(CodeName, "New"); //获取当前合约最新价
   BPRICE=T_BuyAvgPrice(CodeName);//取得持仓栏中该合约多头持仓均价
   data = Def_TickData(CodeName,1,4); // 保存最近四笔的tick数据
   CurTime = CurrentTime(); // 获取当前时间
   // 收盘前30秒清仓
   CONQC = (Hour( CurTime ) == 14 && Minute( CurTime ) == 59) || ( Hour( CurTime ) == 10 && Minute( CurTime ) == 14 ) || ( Hour( CurTime ) == 11 && Minute( CurTime ) == 29 ) && Second( CurTime ) > 30 ;
   IF( Typp == 0 && (CONQC == 1))
   {

 MessageOut("收盘前30秒清仓");

 T_Deal(CodeName,1,1,T_BuyRemainPosition( CodeName ),Offers(CodeName,"bid1")); 

 Type = 0;
      Typp = 1;
   }

   IF( data.State == 1 ) // 数据保存完成
   {

 //主动买而且成交量大于100手,买1价做多

 IF( Type == 0 && data[3].Activity==0 && CONQC != 1)

 {

IF(  data[3].TickVolum-data[2].TickVolum>100)

{

MessageOut("主动买而且成交量大于100手");

BKID = T_Deal(CodeName,0,0,N,Offers(CodeName,"bid1")); 

Type = 1;
            Typp = 0;

}

 }

 //当合约价格上涨1个最小变动价位,加仓1手

 IF(Type == 1 && T_OrderState(BKID) == 1 && CONQC != 1 )

 {
BPRICE=T_OrderMatchAvPrice(BKID);
IF( New - T_OrderMatchAvPrice(BKID) >=N1 * MinPrice(CodeName) )

{
                  MessageOut("当合约价格上涨1个最小变动价位,加仓1手");
BKID = T_Deal(CodeName,0,0,1,Offers(CodeName,"bid1")); 

Type = 2;
            Typp = 0;

}

 }

 IF( Type == 2 && T_OrderState(BKID) == 1 )

 {
BPRICE=T_OrderMatchAvPrice(BKID);
Type = 1;

 }

 PingCang();

 SPDeal();

 High = Price(CodeName, "High");
   }
}
//止盈2个最小变动价位
//止损2个最小变动价位
VOID SPDeal()
{
   IF( BPRICE - New >= Lost*MinPrice(CodeName) || New - BPRICE >= Win*MinPrice(CodeName))
   {

 IF( Type != 0 && T_BuyRemainPosition( CodeName ) > 0 )

 {

MessageOut("止盈止损");

T_Deal(CodeName,1,1,T_BuyRemainPosition( CodeName ),Offers(CodeName,"bid1")); 

Type = 0;

 }
   }
}
//当持仓手数超过了5手,并且最新价格超过了今天的最高价,对价平仓
VOID PingCang()
{
   IF( Type != 0 && T_BuyRemainPosition( CodeName ) > 5 && New >= High ) // 该组件多头持仓超过5手
   {

 MessageOut("当持仓手数超过了5手,并且最新价格超过了今天的最高价,对价平仓");

 T_Deal(CodeName,1,1,T_BuyRemainPosition( CodeName ),Offers(CodeName,"bid1")); 

 Type = 0;
   }
}
   

投资者咨询:组件信号查询 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-7-8 10:20
 哪里有改动,测试了一下还是一样的,一开单就止损 ,我是按照盘口高频模型示例修改的,怎么不到止损,一开单就止损
技术人员回复
日期:2018-7-9 13:23
2楼添加BPRICE的赋值,之前您成交后没有对其赋值,导致该变量是0的,所以会立即平仓

而且把加仓输出更换了位置,使其更合理显示

如图是3个点平仓的


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