读光大证劵“股指期货微观市场初探—高频数据、交易的解读”笔记
/*交易信号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; */