近期在b站发布了几个关于supermind量化版本的说明,包括如何快速使用和学习supermind,如何快速部署实盘等。b站:大牛的分享
或关注同花顺微信群 ,群内咨询也可。
下面直接上干货:
实盘框架:日线级别
from tick_trade_api import TradeAPI# 初始化TradeAPI时需要指定下单策略!!
# MarketPolicy为市价下单;LimitPolicy为限价下单
trade_api=TradeAPI('supermind登录且绑定的资金账户',order_policy=MarketPolicy)source_code="""
supermind web端代码即可"""
rtrade = research_trade('牛牛策略代写-vx1985159637', source_code, frequency='DAILY', trade_api=trade_api)#trade_api可传入List[TradeAPI],实现多账户交易
官方爱问财supermind web版代码:
def init(context):# 问句/想要选出的股票 这里面其实就是可以修改的参数buy_stocks = '小市值,低估价值股'balck_stocks = 'st或停牌或上市20天内' # 黑名单股票sell_stocks = '无' # 卖出股票股票days = 10 # 持仓天数Max_count = 1 # 最大持股数is_hold_one = Falsecontext.T_up = 0.15context.T_down = - 0.3 # 止盈止损 是否开启get_iwencai(buy_stocks,'want_stocks') # 问句/想要选出的股票get_iwencai(balck_stocks,'black_stocks') # 黑名单股票get_iwencai(sell_stocks,'sell_stocks') # 卖出股票特征context.days = days # 持仓天数context.Max_count = Max_count # 最大持股数context.is_hold_one = is_hold_one # 止盈止损 是否开启context.T_up = 0.15context.T_down = - 0.3context.hold_days = {} # 计时器context.Cost = {} # 买入成本
def handle_bar(context,bar_dict):# 止盈止损if context.is_hold_one == True:hold_on(context,bar_dict)# 日常买卖operation(context,bar_dict)
def hold_on(context,bar_dict):sell_stocks = []for stock in context.positions.keys():price = history(stock, ['close'], 1, '1d')['close'][-1]roc = price/context.Cost[stock]-1if roc>context.T_up or roc<context.T_down:sell_stocks.append(stock)for stock in sell_stocks:order_target_value(stock,0)
# 交易操作
def operation(context,bar_dict):sell_stocks = []for stock in list(context.portfolio.stock_account.positions.keys()):# 如果在卖出股票池中则卖出if stock in context.sell_stocks:log.info("%s在卖出股票池"%stock)sell_stocks.append(stock)continueif stock not in context.hold_days:context.hold_days[stock] = 0else:context.hold_days[stock] += 1if context.hold_days[stock] >= context.days:log.info("%s持仓到期卖出"%stock)sell_stocks.append(stock)for stock in sell_stocks:order_target_value(stock,0)buy_stocks = [stock for stock in context.want_stocks if stock \not in context.black_stocks]Count = max([0,context.Max_count-len(list(context.portfolio.stock_account.positions.keys()))])if Count>0:buy_stocks = buy_stocks[:Count]for stock in buy_stocks:order_percent(stock,1/context.Max_count)context.hold_days[stock] = 0h = history(stock, ['close'], 1, '1d')['close'][-1]context.Cost[stock] = h
为何要用问财呢?原因很简单----就是简单快速 学习门槛更低,同时可以快速的验证自己的方案。
举个简单的例子:
web中有一个macd的例子:
'''
MACD技术指标交易策略:
macd金叉全仓买入并持有,macd死叉卖出并空仓。策略使用步骤:
第一步:左侧策略代码编辑面板,代码第16-21行分别输入股票代码、指标参数、基准指数.
第二步:右上角选择回测日期、账户初始资金、回测频率.ps:本策略适合每日频率运行.
第三步:点击左上角“编译运行”白色按钮,进行快速回测,右边查看策略收益走势及运行日志.
第四步:点击右上角“进行回测”蓝色按钮,执行回测并进入回测详情页面,查看策略交易明细、历史持仓、策略风险指标等情况.
第五步:在回测详情页面,点击右上角“开启仿真交易”蓝色按钮,策略即可在实时行情中运行,打开交易信号提醒,在同花顺APP应用上实时收到策略交易信号.
'''
import talib
def init(context): g.security = '600519.SH' #输入股票代码#设置MACD模型参数g.Short = 12 #短周期平滑均线参数g.Long = 26 #长周期平滑均线参数g.M = 9 #DIFF的平滑均线参数set_benchmark('000300.SH') #设置基准指数,默认为沪深300def handle_bar(context,bar_dict): macd = get_macd(g.security)if macd[-1]>0 and macd[-2]<0 and len(list(context.portfolio.stock_account.positions.keys())) == 0:order_value(g.security,context.portfolio.available_cash) log.info("买入 %s" % (g.security)) if macd[-2]>0 and macd[-1]<0 and len(list(context.portfolio.stock_account.positions.keys())) > 0: order_target(g.security,0) log.info("卖出 %s" % (g.security))
def get_macd(stock):price = history(stock, ['close'], 500, '1d', True, 'pre', is_panel=1)['close']DIFF, DEA, MACD = talib.MACD(price.values,fastperiod = g.Short, slowperiod = g.Long, signalperiod = g.M)return MACD
这个例子只涉及到了一只股票,而且没有选股思路的接入
而用爱问财:
就是5分钟macd金叉,mtm金叉,rsi金叉的股票市值从小到大,非st,主板创业板
一句话实现了选股,当然还可以进行进一步的添加条件,也就是用自然语言解决了需要写代码,通过数列进行计算的问题,对于非编程人员来说是非常友好的。
再举例:
我想买入 30分钟级别macd金叉且macd值在0-5之间的,而且没有负面新闻的,公司盈利连续增长的
这个要是通过纯代码的操作,是相对复杂的,你必须了解股票基本面数据的获取方式方法而且还要有数据对比和计算
通过爱问财,就是这么一句话搞定,当然出了这些,爱问财还有其他的,截图大家可以看看
可以通过资金面,技术面,基本面,消息面,四个不同的层面进行股票的筛选,是不是比单纯的一个指标或公式进行选股和交易更靠谱呢?
说到这里,可能很多朋友认为这个是网页版的啊,如何和supermind量化软件链接啊,而且网页搜索似乎很慢。
这个就用到了supermind里面的
get_iwencai(buy_stocks,‘want_stocks’) # 问句/想要选出的股票
get_iwencai(balck_stocks,‘black_stocks’) # 黑名单股票
get_iwencai(sell_stocks,‘sell_stocks’) # 卖出股票特征
get_iwencai 或
query_iwencai函数是智能选股函数,可以通过输入自然语言,执行选股并获取股票列表.我们在研究环境里面要用这个哦
也就是说supermind已经帮我们搞定了,速度方面是很快的,基本无延迟比通过数据算法来的快的多的多。
后面会推出 爱问财搜索的方法和技巧–其实爱问财首页也说的比较明白了