-
Notifications
You must be signed in to change notification settings - Fork 80
Expand file tree
/
Copy pathtrade数据处理.dos
More file actions
65 lines (54 loc) · 3.46 KB
/
trade数据处理.dos
File metadata and controls
65 lines (54 loc) · 3.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
idate=2022.04.14
tradeTB=select * from loadTable("dfs://level_2", "trade") where DateTime.date()=idate and SecurityID in ["600094.SH"]
entrust=select * from loadTable("dfs://level_2", "entrust") where DateTime.date()=idate and SecurityID in ["600094.SH"]
trade=select * from loadTable("dfs://level_2", "trade") where DateTime.date()=idate and SecurityID in ["600094.SH"]
entrust= loadTable("dfs://level_2", "entrust")
trade= loadTable("dfs://level_2", "trade")
/*
* 单笔订单主动买入均价,单笔订单主动卖出均价
*/
def singleOrderAvgPrice(buyNo,sellNo,tradePrice,tradeQty,BSFlag="B"){
if(BSFlag=="B"){
totolMoney=groupby(sum,iif(buyNo>sellNo,tradePrice*tradeQty,0),buyNo).values()[1]
totolqty=groupby(sum,iif(buyNo>sellNo,tradeQty,0),buyNo).values()[1]
}
else{
totolMoney=groupby(sum,iif(buyNo<sellNo,tradePrice*tradeQty,0),sellNo).values()[1]
totolqty=groupby(sum,iif(buyNo<sellNo,tradeQty,0),sellNo).values()[1]
}
return totolMoney\totolqty
}
t=select avg(singleOrderAvgPrice(BidApplSeqNum,OfferApplSeqNum,
tradePrice,tradeQty,"B")) as ActBuySingleOrderAvgPriceFactor,
avg(singleOrderAvgPrice(BidApplSeqNum,OfferApplSeqNum,
tradePrice,tradeQty,"S")) as ActSellSingleOrderAvgPriceFactor from trade where SecurityID in ["000001.SZ","000040.SZ"]
group by SecurityID cgroup by minute(DateTime) as minute order by minute
/*
* 延时订单
*
*/
trade=select * from loadTable("dfs://level_2", "trade") where DateTime.date()=2022.04.14 and SecurityID in[ `600000.SH,`000001.SZ] and DateTime>2022.04.14T09:30:00.000
entrust=select * from loadTable("dfs://level_2", "entrust") where DateTime.date()=2022.04.14 and SecurityID in[ `600000.SH,`000001.SZ]and DateTime>2022.04.14T09:30:00.000
@state
def delayedTradeNum(bsFlag, flag, side){
return iif(bsFlag==side && flag<=1, flag, 0).cumsum()
}
@state
def delayedTradeQty(bsFlag, flag, tradeQty, cumTradeQty, side){
return iif(bsFlag==side && flag>1, tradeQty, iif(bsFlag==side && flag==1, cumTradeQty, 0)).cumsum()
}
timer{
///买方
///step 1,标记延时状态,计算笔订单的累计成交量
t1 = select SecurityID,DateTime,entrust.DateTime as time,"B" as bsFlag,tradeQty, cumsum(iif(DateTime-entrust.DateTime>60000,1,0)) as delayedTraderflag, cumsum(tradeQty) as cumTradeQty from lsj(trade, entrust, ['SecurityID', 'BidApplSeqNum'], ['SecurityID', 'ApplSeqNum']) where tradePrice>0 context by SecurityID,BidApplSeqNum
/////step 2,统计每只股票累计的延时成交订单数,和延时成交订单量
t2 = select SecurityID,DateTime,delayedTradeNum(bsFlag, delayedTraderflag, "B") as DelayedTraderBuyOrderNum ,
delayedTradeQty(bsFlag,delayedTraderflag, tradeQty, cumTradeQty, "B") as DelayedTraderBuyOrderQty from t1 context by SecurityID limit -1
///卖方
///step 1,标记延时状态,计算笔订单的累计成交量
t1 = select SecurityID,DateTime,"S" as bsFlag,tradeQty, cumsum(iif(DateTime-entrust.DateTime>60000,1,0)) as delayedTraderflag, cumsum(tradeQty) as cumTradeQty from lsj(trade, entrust, ['SecurityID', 'OfferApplSeqNum'], ['SecurityID', 'ApplSeqNum']) where tradePrice>0 context by SecurityID, OfferApplSeqNum
/////step 2,统计每只股票累计的延时成交订单数,和延时成交订单量
t3 = select SecurityID,DateTime,delayedTradeNum(bsFlag, delayedTraderflag, "S") as DelayedTraderSellOrderNum ,
delayedTradeQty(bsFlag,delayedTraderflag , tradeQty, cumTradeQty, "S") as DelayedTraderSellOrderQty from t1 context by SecurityID limit -1
t2=lsj(t2,t3,`SecurityID`DateTime)
}