注意:需要GPT3.5以上
核心思路是在提示词中 加入supermind的文档 函数用法,并且最好把代码逻辑详细的描述出来。且把一些错误的写法用反向提示词屏蔽掉。
已知函数:
设置基准收益函数:set_benchmark(symbol)
设置交易滑点:{set_slippage(slippage)
#设置可变滑点2%,表示买入价为实际价格乘101%,卖出价为实际价格乘99% set_slippage(PriceSlippage(0.02))
}
获取当前账户当前持仓市值的代码:
market_value = context.portfolio.stock_account.market_value
获取账户持仓股票列表的代码:
stocklist = list(context.portfolio.stock_account.positions)
这个是init函数: 初始化回测参数,在回测开始时候初始化用的函数,不要用initialize
这个是handle_bar 函数:# 每个交易频率买入1手平安银行 def handle_bar(context, bar_dict): order('000001.SZ', 100)
这个是 history函数的意思: 获取多只股票多属性的历史行情数据,不能在研究环境中使用。
这个是 history函数的用法:{history(symbol_list, fields, bar_count, fre_step, skip_paused = False, fq = 'pre', is_panel=0)
调用方法: history(symbol_list, fields, bar_count, fre_step, skip_paused = False, fq = 'pre', is_panel=0)
symbol_list:含义:股票、指数或基金代码列表,详细内容:例如:symbol_list = ['000001.SZ','600000.SH','510300.OF'],单个股票可以是字符串.
bar_count:历史长度,例如bar_count = 5,表示获取过去5个时间步长的历史数据
fre_step:时间步长,其中’Xd’代表X天,’Xm’代表X分钟,’Xt’代表Xtick
例如:fre_step = '1d'表示时间步长为1天
当X>1时,fields只支持 ‘open’、’close’、’high’、’low’、’volume’、’turnover’这几个字段。
fq:复权选项,默认为不复权
fq = None:不复权
fq = 'post':后复权
fq = 'pre':前复权。
is_panel:返回数据格式,默认为dict,即is_panel = 0
is_panel = 1则返回Pandas.Panel格式的数据,key为fields
is_panel = 0则返回dict格式的数据,key为symbol,
调用的示例:price=history(['000001.SZ','000002.SZ'], ['close','high'], 10, '1d', False, 'pre', is_panel=1) }
这个是 order_target函数的用法:{按目标股数下单 调用方式: order_target(symbol, target, price=None, style=None)
symbol 股票或基金代码 交易对象,必须是字符串,例如:symbol = '510300.OF'
target 目标股数 数值,例如:target=100. 如果是0 则表示清仓,卖出所有。
price 价格上界 最高价,不得超出该购买价进行交易
style LimitOrder或MarketOrder对象 LimitOrder限价单:是一种以等同或低於指定价格买进相应数量股票的委托单MarketOrder市价单:以市场价格买进或卖出股票的委托单。
代码示例比如:
#设置买卖条件,每个交易频率(日/分钟)调用一次
def handle_bar(context, bar_dict):
#开仓买入1000股沪深300
order_target(g.index, 1000,price=2.8)
}
帮我用同花顺supermind量化平台(https://quant.10jqka.com.cn/) 的代码规范 结合上面的函数使用说明 生成一个双均线策略的回测代码,
策略详细逻辑:
{
5日和10日双均线策略:
如果5日均线(定义成MA5)大于10日均线(定义成MA10),且账户当前无持仓,则全仓买入股票,
全仓买入使用:order_target_percent函数,第二个参数设置成1,就是全仓买入,order_target_percent(context.security, 1)。
如果5日均线小于10日均线,且账户当前有股票市值,则清仓股票,
清仓股票用order_target函数, order_target(context.security, 0),第二个参数是0就是清仓的意思。
}
补充逻辑:设置基准收益:中证300指数 '399300.SZ'
补充逻辑:需要在函数开始的时候 和结束的时候 打印文字:函数启动。
补充逻辑:不要使用set_backtest 函数,
补充逻辑:要交易的股票是:000001.SZ
补充逻辑:初始化函数不要用initialize,改成init ,也不能有2个init函数
补充逻辑:结束不需要用on_exit函数
补充逻辑:给出很详细的注释
编译通过,有收益数据: