现在的位置: 首页 > 综合 > 正文

读光大证劵“股指期货微观市场初探—高频数据、交易的解读”笔记

2018年10月20日 ⁄ 综合 ⁄ 共 1746字 ⁄ 字号 评论关闭

读光大证劵“股指期货微观市场初探—高频数据、交易的解读”笔记

/*交易信号1:
    根据每笔交易价格与交易前报价的关系确定此笔交易的触发方向,即买方触发还是卖方触发。
    如价格与买一接近,则此单被定为卖单触发;如价格与卖一接近,则被定为买单触发。
    如价格与买一和卖一距离相等,则不确认这单的触发方向。 
*/
data trade_test1;
   set m_test;
   by time1;

   length flag1 $8.;
   if abs(price-b_price) < abs(price - s_price) 
      then flag1 = "卖单触发";
   else if abs(price - b_price) = abs(price - s_price) 
      then flag1="不触发";
   else flag1 = "买单触发";
run;

/*  其次,我们比较成交单量与报价单量的关系。如成交单量比买一和卖一的
报价单量都大的时候,我们认为初步信号确立,期指市场有可能遵循着此
笔成交的触发方向进行变动。*/
data trade_test2;
   set trade_test1;
   length flag2 $12.;
   if volume gt max(of b_volume,s_volume) then flag2="初步信号确认"; 
   else flag2="无信号";
run;


/*   最后,我们比较当前成交价与近10 笔成交价的算术平均值,如果成交价超
平均值0.2个点,且为买方触发并满足初步信号条件则买入信号确认;如果成交价低与平均值0.2个点,
且为卖方触发并满足初步信号条件则卖出信号确认。
*/
proc expand data=trade_test2 out=trade_test3 method=none;
    convert price=ma_price / transformout=(movave 10);
run;
data trade_test4;
   set trade_test3;
   length flag3 $12.;
   retain flag3;
   if price gt (ma_price+0.2) & flag1="买单触发"  & flag2="初步信号确认" then 	flag3="买入信号确认";
   else if price lt (ma_price-0.2) & flag1="卖单触发" & flag2="初步信号确认" then flag3= "卖出信号确认";
   else flag3="无操作";
run;
   
data trade_test5;
   set trade_test4;
   by flag3 notsorted;
   length flag4 $12.;
   if first.flag3 then do;
      if flag3 = lag2(flag3) then flag4="无操作"  ;
	  else flag4=flag3;
   end;
   else flag4="无操作";
run;

/*
在对信号的产生进行统计后发现,此类信号发生的频率过高,平均每日的
换手率高达上千次。过多的信号将会造成频繁的交易,因此必须选用一些
手段来降低信号产生的频率。由前述的测试发现,样本内信号发生后大约
十笔交易时,买卖信号的差异最为明显。因此我们认为信号合理的持续时
间应该为十笔交易,十笔交易之内如无新的信号产生,交易应该结束。十
笔内如有新的信号产生,则新的信号将取代旧的信号,信号持续时间也将
重新开始计算

data trade_test5;
   set trade_test4;
   length flag $8.;
   if flag3=lag(flag3)=lag2(flag3)=lag3(flag3)=lag4(flag3)=lag5(flag3)=lag6(flag3)
	     =lag7(flag3)=lag8(flag3)=lag9(flag3)=lag10(flag3)="无操作" 
         then flag="平";

   else if flag3=lag(flag3)  or
           flag3=lag2(flag3) or
           flag3=lag3(flag3) or
		   flag3=lag4(flag3) or
		   flag3=lag5(flag3) or
		   flag3=lag6(flag3) or
		   flag3=lag7(flag3) or
		   flag3=lag8(flag3) or 
		   flag3=lag9(flag3) or
		   flag3=lag10(flag3)
       then flag="无操作" ;

   else flag=flag3;
run; 

*/
	  

 

抱歉!评论已关闭.