
等级: 新手上路
- 注册:
- 2025-4-8
- 曾用名:
|

楼主 |
发表于 2025-6-11 14:31
|
显示全部楼层
老师,您好!多谢您的回复。我是用如下程序取昨日收盘价:
def get_previous_day_close(context, contract, current_time):
"""获取前一交易日的收盘价"""
try:
bars = history_bars(contract, 1, '1d', ['close'], skip_suspended=True, include_now=False)
if bars is None or len(bars) < 1:
print(f"无法获取 {contract} 的前一日收盘价")
return None
if isinstance(bars, np.ndarray):
previous_close = bars[-1, 0] if bars.ndim == 2 else bars[-1]
elif isinstance(bars, list) and all(isinstance(bar, dict) for bar in bars):
previous_close = bars[-1]['close']
else:
print(f"无法识别 {contract} 的 bars 类型: {type(bars)}")
return None
return previous_close
except Exception as e:
print(f"获取 {contract} 的前一日收盘价失败: {str(e)}")
return None
我用如下程序算涨跌幅的:
def calculate_price_change(context, contract):
"""计算给定合约的涨跌幅,使用文华交易软件逻辑"""
current_time = datetime.datetime.now()
try:
current_price = get_current_price(contract)
if current_price is None:
return None
if is_night_session(current_time):
reference_price = get_today_afternoon_close(context, contract, current_time)
else:
reference_price = get_previous_day_close(context, contract, current_time)
if reference_price is None:
return None
price_change = (current_price - reference_price) / reference_price * 100
#print(f"当前时间{current_time},期货ID{contract},当前价{current_price},收盘价{reference_price},百分比{price_change}%")
return price_change
except Exception as e:
print(f"计算 {contract} 的涨跌幅时出错: {str(e)}")
return None
目前算出来的涨跌幅如下:
14:24:09 > 当前涨幅第一: AG00, 对应涨幅=6.98%, 跌幅第一: JM00, 对应跌幅=-27.03%
14:24:09 > 开多期货ID是 AG00: 涨幅=6.98%, 收盘价8312.0,交易价格=8892.0, 时间: 2025-06-11 14:24:09.292278,百分比6.977863330125119%
14:24:09 > 开空期货ID是 JM00: 跌幅=-27.03%, 收盘价1078.5,交易价格=787.0, 时间: 2025-06-11 14:24:09.309176,百分比-27.028280018544276%
14:24:09 > 当前持仓: {'AG00': {'direction': 'long', 'open_price': 8892.0}, 'JM00': {'direction': 'short', 'open_price': 787.0}}
这个收盘价就是get_previous_day_close函数获取的,非常不准。 |
|