文章声明:本内容为个人的业余研究,和任何单位,机构没有关系,文章出现的股票代码,全部只是测试例子,不做投资参考,投资有风险,代码学习使用,不做商业用途
西蒙斯ptrade自动新股新债申购,自动读取数据每一天新股新债申购,这个函数是pt自带的,pt可以24小时运行非常的方便挂在服务器就可以
我默认的设置14:50进行,打新的收益还是非常不错的
pt的设置,把这个代码复制到pt新建立一个策略就可以,比如西蒙斯申购
导入实盘,点击量化里面的交易就可以
点击新增策略就可以
启动策略就可以运行
详细的内容
西蒙斯ptrade新股新债申购源代码
'''
西蒙斯ptrade新股新债申购
作者:西蒙斯量化
微信:xg_quant
时间:20250831
代码只支持实盘,不支持回测
'''
from datetime import datetime
def initialize(context):
# 初始化策略
print('西蒙斯新股新债申购')
run_daily(context, xms_ipo, time='14:50')
def before_trading_start(context, data):
'''
盘前
'''
current =datetime.now().strftime('%Y-%m-%d')
print('开始运行西蒙斯新股新债申购策略',current)
def xms_ipo(context):
'''
西蒙斯新股新债申购
参数
submarket_type:申购代码所属市场,不传时默认申购全部新股(int);
black_stocks:黑名单股票,可以是单个股票或者股票列表,传入的黑名单股票将不做申购,不传时默认申购全部新股(str/list);
返回
返回dict类型,包含委托代码、委托编号、委托状态(委托失败为0,委托成功为1)、委托数量等信息(dict[str:dict[str:str,str:int,str:float],...])
{'732116.SS': {'entrust_no': '205001', 'entrust_status': 1, 'redemption_amount': 1000}, '732100.SS': {'entrust_no': '205002'
'''
#申购全部的标的
current =datetime.now().strftime('%Y-%m-%d')
try:
stats=ipo_stocks_order()
print(current,'今天的申购结果',stats)
except Exception as e :
print(current,'申购有问题')
def after_trading_end(context, data):
'''
盘后
'''
current =datetime.now().strftime('%Y-%m-%d')
print('西蒙斯新股新债申购策略今天运行结束',current)
df
def get_xg_position(context):
'''
获取小果持股数据
'''
data=pd.DataFrame()
positions=context.portfolio.positions
stock_list=list(set(positions.keys()))
print('持股数量{}'.format(len(stock_list)))
for stock in stock_list:
df=pd.DataFrame()
df['证券代码']=[positions[stock].sid]
df['可用数量']=[positions[stock].enable_amount]
df['持有数量']=[positions[stock].amount]
df['最新价']=[positions[stock].last_sale_price ]
df['成本价']=[positions[stock].cost_basis ]
df['今日买入']=[positions[stock].today_amount ]
df['持股类型']=[positions[stock].business_type ]
data=pd.concat([data,df],ignore_index=True)
'''
if data.shape[0]>0:
if g.is_del=='是':
print('开始策略隔离**********')
data['隔离']=data['证券代码'].apply(lambda x: '是' if x in g.stock_list else '不是')
data=data[data['隔离']=='是']
else:
print('不开启策略隔离*********')
'''
return data
def get_xg_order(context):
'''
获取小果委托数据
'''
orders=get_orders()
print("委托数量{}".format(len(orders)))
data=pd.DataFrame()
if len(orders)>0:
for ors in orders:
df=pd.DataFrame()
df['订单号']=[ors.id]
df['订单产生时间']=[ors.dt]
df['指定价格']=[ors.limit ]
df['证券代码']=[ors.symbol ]
df['委托数量']=[ors.amount ]
df['订单生成时间']=[ors.created ]
df['成交数量']=[ors.filled ]
df['委托编号']=[ors.entrust_no]
df['盘口档位']=[ors.priceGear ]
df['订单状态']=[ors.status ]
data=pd.concat([data,df],ignore_index=True)
else:
data=data
return data
def get_xg_position_on(context,security=''):
''''
获取单股的持股情况
'''
pos=get_positions(security=security)
df=pd.DataFrame()
if len(pos)>0:
df['证券代码']=[pos[security].sid]
df['可以数量']=[pos[security].enable_amount]
df['持有数量']=[pos[security].amount]
df['最新价']=[pos[security].last_sale_price ]
df['成本价']=[pos[security].cost_basis ]
df['今日买入']=[pos[security].today_amount ]
df['持股类型']=[pos[security].business_type ]
else:
df=df
return df