1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dolphindb-Tutorials_CN

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
trade数据处理.dos 3.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
LiXiaojuan-DolphinDB Отправлено 28.04.2023 13:11 87167b6
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)
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/dolphindb-Tutorials_CN.git
git@api.gitlife.ru:oschina-mirror/dolphindb-Tutorials_CN.git
oschina-mirror
dolphindb-Tutorials_CN
dolphindb-Tutorials_CN
master