
等级: 标准版
- 注册:
- 2023-2-16
- 曾用名:
|

楼主 |
发表于 2024-1-5 14:23
|
显示全部楼层
#context.universe是全部深圳可转债,运行的2023/12/29的数据
# 本Python代码主要用于策略交易
# 可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。
from PythonApi import *
import pandas as pd;
import numpy as np;
# 参数定义区,这里定义的参数可以直接在context对象中获取。--(选择实现)
#def parameter():
# input_par("myvalues1",5,1,20,1)
# input_par("myvalues2",10,1,20,1)
# 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。--(必须实现)
def init(context):
# 在context中保存全局变量
#context.s1 = "SZ000001" #平安银行股票
#print(context.run_info.base_book_id)
context.vols1 = pd.Series(index=context.universe)
context.vols2 = pd.Series(index=context.universe)
context.cand1 = pd.Series()
context.cand2 = pd.Series()
# before_trading此函数会在每天基准合约的策略交易开始前被调用,当天只会被调用一次。--(选择实现)
def before_trading(context):
pass
# 你选择的品种的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新。--(必须实现)
def handle_bar(context):
for bond in context.universe:
tmp = history_bars(bond,context.now.minute-30,'1m','volume', True, include_now=False, adjusted_price=False)
if len(tmp)==0:
context.vols1[bond]=0
else:
context.vols1[bond]=np.sum(tmp)
context.cand1 = context.vols1.sort_values(ascending=False).iloc[:20]
print(context.cand1)
# if context.now.hour==9 and context.now.minute==36:
# for bond in context.universe:
# tmp = history_bars(bond,5,'1m','volume', True, include_now=False, adjusted_price=False)
# if len(tmp)==0:
# context.vols1[bond]=0
# else:
# context.vols1[bond]=np.sum(tmp)
# context.cand1 = context.vols1.sort_values(ascending=False).iloc[:20]
# print(context.cand1)
#
# if context.now.hour==14 and context.now.minute==58:
# for bond in context.universe:
# tmp = history_bars(bond,1,'237m','volume', True, include_now=True, adjusted_price=False)
# if len(tmp)==0:
# context.vols2[bond]=0
# else:
# context.vols2[bond]=tmp[0]
# context.cand2 = context.vols2.sort_values(ascending=False).iloc[:20]
# print(context.cand2)
# print(context.cand2.index.intersection(context.cand1.index))
# 开始编写你的主要的算法逻辑。
#使用buy_open、sell_close等方法下单
#下单示例:
#buy_open(context.s1, "Market", volume = 100) # 市价开多
#buy_open(context.s1, "Limit", 25.45, 100) # 限价开多
pass
# after_trading函数会在每天交易结束后被调用,当天只会被调用一次。 --(选择实现)
def after_trading(context):
pass
# order_status当委托下单,成交,撤单等与下单有关的动作时,该方法就会被调用。---(选择实现)
#def order_status(context,order):
# pass
# order_action当查询交易接口信息时返回的通知---(选择实现)
#def order_action(context,type, account, datas)
# pass
# exit函数会在测评结束或者停止策略运行时会被调用。---(选择实现)
#def exit(context):
# pass
|
|