由index为timestamp的数据获取股票集合竞价数据

本文介绍了一种使用Python从股票交易数据中筛选特定时间段记录的方法。通过将字符串时间转换为timestamp,再利用lambda表达式过滤出指定范围内的交易记录,实现了对盘前交易数据的有效获取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

##string变struct_time变timestamp
##拿index取记录

import time
from datetime import datetime
from time import mktime

list_time = get_price("000001.XSHG", start_date=20150107, end_date=20150107, frequency='tick').index.tolist()  #随便给的股票和日期

start_str = "2015-01-07 09:25:00"  #此处换trading_date组装一下,盘前一定会大于等于九点二十五分
end_str = "2015-01-07 09:26:00"#盘前一定会小于等于九点二十六分

start_time = time.strptime(start_str,'%Y-%m-%d %H:%M:%S')
end_time = time.strptime(end_str,'%Y-%m-%d %H:%M:%S')

end_dt = datetime.fromtimestamp(mktime(end_time))
start_dt = datetime.fromtimestamp(mktime(start_time))

index_key = list(filter(lambda x : x<=end_dt and x>=start_dt,list_time))[0] #筛出盘前数据,根据rq的数据特点,取第一条925就是,不然其实还是要用volume筛一下的。

df.loc[index_key] ##return或者print

 

import akshare as ak import backtrader as bt import pandas as pd import talib class HybridStrategy(bt.Strategy): params = ( ('momentum_period', 14), # 动量周期 ('volatility_threshold', 0.25), # 波动率过滤阈值 ('position_ratio', 0.1), # 单标的最大仓位比例 ('trading_frequency', 3) # 高频交易频率 ) def __init__(self): self.ma5 = bt.indicators.SMA(self.data.close, period=5) self.ma20 = bt.indicators.SMA(self.data.close, period=20) self.rsi = bt.indicators.RSI(self.data.close, period=14) self.volatility = bt.indicators.StdDev(self.data.close, period=20) self.trading_days = 0 # 动量轮动核心逻辑 def momentum_strategy(self): # 获取申万行业指数数据(示例:医药生物) industry_data = ak.index_zh_a_hist(symbol="801150", period="daily", adjust="hfq") momentum = (industry_data['close'].iloc[-1] / industry_data['close'].iloc[-15] - 1) * 100 # 多周期嵌套:日线与 30 分钟 KDJ 共振 if self.is_kdj_resonance(): # 其他动量筛选逻辑... pass # 多周期 KDJ 共振检测 def is_kdj_resonance(self): # 日线 KDJ daily_k, daily_d = talib.STOCH( self.data.high, self.data.low, self.data.close ) # 30 分钟 K 线数据(AKShare 获取) min30_data = ak.stock_zh_a_hist_min_em( symbol=self.data._name, period="30", adjust="hfq" ) if len(min30_data) < 26: return False min30_k, min30_d = talib.STOCH( min30_data['high'], min30_data['low'], min30_data['close'] ) return (daily_k[-1] > daily_d[-1]) & (min30_k[-1] > min30_d[-1]) # 事件驱动:龙虎榜策略 def event_driven_strategy(self): lhb_data = ak.stock_lhb_detail_em(start_date=pd.Timestamp.now().strftime("%Y%m%d")) hot_stocks = lhb_data[ (lhb_data['买入额'] > 1e8) & (lhb_data['卖出营业部数'] < 3) ] # 后续筛选逻辑... # 高频套利:集合竞价选股(AKShare 数据) def detect_auction_signal(self): if self.trading_days % self.params.trading_freque
03-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

取啥都被占用

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值