全部
文章&策略
学习干货
问答
官方

精华 长期有效,公开征集意见反馈。

用户头像量化官方小助理
2023-03-09 发布
请大家不要客气,任何意见建议可以在这里评论提出。 被采纳后我们将奖励1G研究环境内存 3个月。
浏览12302
评论82
收藏4

均线多头策略测试内含策略代码

用户头像qccsu301
2024-04-18 发布
均线多头策略测试
浏览45
评论0
收藏0
策略回测收益图
用户头像神盾局量子研究部
2023-03-11 发布
5行代码搞定多条件选股并在微信实时收消息-保姆级教程 前言 对大部分炒股的朋友来说,日常最耗时的就是盯着选股条件然后不停的选股,我经常苦恼于有无程序能自动化实现选股,然后选中之后自动发送消息到我的手机里面。这样我就能实时监控满足条件的股票,然后进行一些人工的进一步判断和交易。 答案是肯定的。supermind平台可以帮助解决这个问题。而且都可以自动交易。但本文只介绍到选股+自动推送消息。 接下来我们详细介绍通过实时监控自己的选股逻辑,然后触发条件后发送到自己的微信,实现实时监控。基于这个代码,可以灵活的调整自己的选股逻辑,实现每日,或者盘中实时监控。 我们先来看看最终效果 大家可以看到 右侧是我的选股逻辑选出的具体股票代码。 接下来一步一步的进行教学 一共5步 1、复制本文最下方的代码 2、根据自己的需求更改问财问句,并替换代码中的问财问句 本文具体不介绍问财问句的基础知识。就当大家已经了解问财,能形成自己的问财语句,比如“kdj金叉或macd金叉,最近一个交易日涨幅大于1.5%” 问句可以自己替换成任意自己想要的选股条件: wencai_string_KDJ = '非ST,非北交所,换手率大于2%,kdj金叉或macd金叉,最近一个交易日涨幅大于1.5%,最近一个交易日涨幅小于5%,CCI金叉,连续3日主力流入>0' 建议先在问财官网测试验证自己的问句,问财官网地址:http://www.iwencai.com/unifiedwap/home/index 3、获取微信UID,并在代码中替换 替换代码中的微信UID。 如何获取UID? 关注下面公众号,点击“我的-我的UID”获取用户UID信息 4、运行策略回测 5、添加到策略监控 注意 必须允许回测 才能添加到策略监控: 好了,大功告成!等待接收自己的选股条件被触发吧。 注意事项: 问财问句的选股的结果不要太多,我自己一般控制在5-10个,这样才有意义。 监控的时间注意,每日选股的 频率每日即可。每分钟检测需要自己写分钟级别的监控代码。问财很多时候是搞不定的。每日选股一次的可以用问财进行。 大家有任何疑问都可以留言!
浏览7690
评论21
收藏101
策略回测收益图
用户头像Pacoyp
2024-04-17 发布
supermind支持ETF期权策略自动交易吗?
浏览17
评论0
收藏0
用户头像杰dVK
2024-04-17 发布
EMA5:EMA(AMOUNT,3),COLORYELLOW,LINETHICK2;( 涨:IF(EMA5>=REF(EMA5,1),EMA5,DRAWNULL),COLORRED,LINETHICK3; 跌:IF(EMA5<=REF(EMA5,1),EMA5,DRAWNULL),COLORGREEN,LINETHICK3; EMA20:EMA(EMA5,20),COLORWHITE,LINETHICK2; EMA50:EMA(EMA5,60),COLORBLUE,LINETHICK2; DRAWICON(CROSS(EMA5,EMA20),EMA5,1); DRAWICON(CROSS(EMA20,EMA5),EMA5,2);
浏览16
评论0
收藏0

精华 编写第一个量化策略(手把手详细版教程)内含策略代码

用户头像量化官方小助理
2023-05-04 发布
编写第一个量化策略(手把手详细版教程)  对于大部分人来说,量化交易是非常陌生与神秘的。本节内容将带你开启第一个量化策略!  本节内容摘要:    1.理解量化策略的基本框架。    2.学会编写一个简单的量化交易策略。    3.学会将量化交易策略绑定实盘模拟交易,并实时收到交易策略的买卖信号。  1.理解量化策略的基本框架   通常情况下,完整的量化交易策略至少需要确定两件事:    A.交易标的,即买什么;    B.确定交易时机,即怎么买卖。   让我们来设计一个简单完整的量化交易策略:    策略交易标的:贵州茅台;    策略交易时机:5日均线与20日均线金叉时,买入;5日均线与20日均线死叉时,卖出。  2.学会编写一个简单的量化交易策略  第一步:打开SuperMind量化交易平台,先在上方导航栏点击“我的策略”—“策略编译”,再点击蓝色按钮“+新建策略”,接着点击已创建的策略进入策略编译器页面,如下:  温馨提示:“回测列表”下方三个按钮,可以设置编译器字体大小,背景颜色,编译设置,开启全屏编译,查看API文档,如下:    第二步:理解量化交易策略框架对应的代码框架。def init(context): #初始化函数:确定交易标的def handle_bar(context, bar_dict): #定时运行函数:确定交易时机  框架理解:   1.def init(context)与def handle_bar(context, bar_dict)是两个函数,函数格式固定为:def 函数名(参数),其中def后面带空格键,函数末尾必须带冒号。   2.def init(context)函数是初始化函数,只运行一次,确定初始化条件;def handle_bar(context, bar_dict)函数是定时运行函数,平台默认该函数定时运行。日级策略,每日9:30;分钟级策略,交易期间内的每分钟。   3.“#”后面为注释内容,用于注释代码,便于编写和阅读。  第三步:确定交易标的:context.security = '600519.SH'。  温馨提示:   1.context是账户对象,该对象存放所有账户相关信息,持仓、可用现金、资产盈亏。   2.context.security是在账户对象下,设置security变量,存放在账户内,这里我们需要确定交易标的,即:context.security = '600519.SH'。def init(context): context.security = '600519.SH'#已确定交易标的def handle_bar(context, bar_dict): #定时运行函数:确定交易时机  第四步:确定交易时机,即为:5日均线与20日均线金叉时,买入;5日均线与20日均线死叉时,卖出。   从交易时机出发,我们需要计算交易标的5日和20日均线,那么5、20日均线需要用历史行情数据的收盘价来计算。   整个流程即:获取历史行情20日的收盘价数据———计算5、20日均线———判断5、20日均线,进行买卖交易。    A.获取历史行情20日的收盘价数据:     1.找到函数历史数据函数:history     2.填写函数参数,获取到数据:      i.交易标的,即:获取那个股票的数据。      ii.数据字段:['close']收盘价,即:获取哪个数据。      iii.输入历史长度,即:获取多长时间的数据。      iv.获取数据的时间步长,即:获取日线级步长数据。      v.填写是否跳过停牌数据,复权选项,返回数据格式。      最终结果即为:history(context.security, ['close'], 20, '1d', False, 'pre', is_panel=1)     3.将获取到的数据储存,便于计算,即:closeprice = history(context.security, ['close'], 20, '1d', False, 'pre', is_panel=1)#获取证券过去20日的收盘价数据 closeprice = history(context.security, ['close'], 20, '1d', False, 'pre', is_panel=1)    B.计算5、20日均线:     1.获取数据值,即:closeprice['close'],['close']可以获取储存中的收盘价数据,格式为closeprice['close']。温馨提示:closeprice是我们刚才获取的数据,但是数据有股票、时间、数值,我们直接用['close']获取收盘价数据值用于计算即可。     2.选取数据长度,即:closeprice['close'].iloc[-5:]。iloc[]用于取值,我们之前获取20个数据,但5日均线只需要过去5日的收盘价,因此iloc[-5:]即为获取倒数第五个到最后一个数据。温馨提示:      i.iloc[:]是获取所有数据。      ii.iloc[:x]是从第一个获取到第x个,不包括第x个。      iii.iloc[x:y]是从第x个到第y个,包括x,但不包括y。      iv.iloc[-x:]获取倒数第x个到最后一个数据。     3.计算均值,即closeprice['close'].iloc[-5:].mean(),赋值给MA5。同理MA20=closeprice['close'].mean(),即对所有值取平均,相当于MA20=closeprice['close'].iloc[:].mean()。#计算二十日均线价格 MA20 = closeprice['close'].mean()#计算五日均线价格 MA5 = closeprice['close'].iloc[-5:].mean()    C.判断5、20日均线,进行买卖交易:     1.if判断条件,即为 if MA5 > MA20:。温馨提示if判断函数的格式为if +添加判断+:,其中if后面必须带一个空格键,其次末尾必须带冒号。     2.当MA5小于MA20时,我们再对持仓市值判断,如果有持仓,那么持仓市值必然大于0,需要进行卖出交易,我们直接通过context账户对象中portfolio资产组合内stock_account股票账户下来获取持仓市值,即为:context.portfolio.stock_account.market_value。     3.下单买入交易:      i.当触发MA5大于MA20时,我们需要买入股票,这时候我们可以使用order_target_percent下单函数,该函数以目标市值占比下单。      ii.输入下单函数的参数,order_target_percent函数需要输入两个参数:       1.下单的股票,即为context.security,我们之前将交易标的传入进去,可以直接用。       2.下单的占比,即为1,取值范围[0,1],此时取1,表示全仓买入股票。      iii.触发条件后程序提醒,当代码执行完下单函数后,我们用log.info()来打印日志,这样我们也可以看到程序下单了。      温馨提示:log.info()内你可以直接输入中文,例如:log.info('条件满足!买入贵州茅台啦!')# 如果5日均线大于20日均线,则全仓买入股票if MA5 > MA20: # 按目标市值占比下单 order_target_percent(context.security, 1) # 记录这次买入 log.info("买入 %s" % (context.security))     4.下单卖出交易:      i.当触发MA5小于MA20时,我们需要卖出股票,这时候我们可以使用order_target下单函数,该函数以目标股数下单。      ii.输入下单函数的参数,order_target函数需要输入两个参数:       1.下单的股票,即为context.security,我们之前将交易标的传入进去,可以直接用。       2.下单的目标股数,即0,因为我们需要将持仓股票卖出,卖到0股为止。      iii.触发条件后程序提醒,当代码执行完下单函数后,我们同log.info()来打印日志,这样我们也可以看到程序下单了。# 如果5日均线小于20日均线,并且目前有头寸,则清仓股票elif MA20 > MA5 and context.portfolio.stock_account.market_value > 0: # 卖出所有股票,使这只股票的最终持有量为0 order_target(context.security, 0) # 记录这次卖出 log.info("卖出 %s" % (context.security))最终完整代码:def init(context): # 设置要操作的股票:贵州茅台 context.security = '600519.SH'# 设置买卖条件,每个交易频率(日/分钟/tick)调用一次def handle_bar(context, bar_dict): # 获取股票过去20天的收盘价数据 closeprice = history(context.security, ['close'], 20, '1d', False, 'pre', is_panel=1) # 计算20日均线 MA20 = closeprice['close'].mean() # 计算5日均线 MA5 = closeprice['close'].iloc[-5:].mean() # 如果5日均线大于20日均线,则全仓买入股票 if MA5 > MA20 : # 按目标市值占比下单 order_target_percent(context.security, 1) # 记录这次买入 log.info("买入 %s" % (context.security)) # 如果5日均线小于20日均线,并且目前有头寸,则清仓股票 elif MA20 > MA5 and context.portfolio.stock_account.market_value > 0: # 卖出所有股票,使这只股票的最终持有量为0 order_target(context.security, 0) # 记录这次卖出 log.info("卖出 %s" % (context.security))第五步 回测量化交易策略   通过以上4步,我们已经完成了量化交易策略编写,那么接下来我们需要进行量化交易策略回测。    A.首先,我们尝试去跑通整个历史行情,排查代码错误。     i.右上角设置回测历史长度,设置资金,设置交易频率。          ii.点击左上角“编译运行”按钮,右边出现量化交易策略在历史行情中的表现情况         B.当量化交易策略能跑通整个历史行情后,我们可以确定该代码正确无误,随后点击右上角蓝色按钮“进行回测”。页面跳转至回测页面,在回测详情界面,您可以查看策略收益曲线,风险指标,每日持仓,交易明细,输出日志等信息,如下:    C.学会将量化交易策略绑定实盘模拟交易,并实时收到交易策略的买卖信号     1.在回测显示结果页面,右上角点击蓝色按钮开启模拟交易,可以自行选择:从当前日开始模拟,在已有的回测基础上继续模拟.如下图:          2.至此,我们成功开启了模拟交易,可以查看您的模拟交易账户详细情况:交易明细、持仓、盈亏情况、账户风险指标等等。如下图:     3.您可以为您模拟交易账户新建模拟交易、暂停策略运行、发布策略至社区、重启策略、查看策略运行日志、查看策略代码。注意:重启按钮只会在策略运行错误后显示,如果策略运行正常,显示暂停按钮。新建模拟交易如下图:
浏览13797
评论21
收藏189
策略回测收益图
用户头像阳少1124
2023-09-19 发布
根据接口文档 https://quant.10jqka.com.cn/view/dataplatform/detail/204 并未返回正股代码。 是否有其他接口获取? 如果没有,是否考虑提供字段支持?
浏览241
评论2
收藏0
用户头像下班学量化
2024-04-16 发布
社区没人维护吗?
浏览24
评论0
收藏0
用户头像牛牛量化
2023-09-28 发布
为了集中解决大家的问题,建议大家在此贴下面留言,本人如果有时间乐意免费为大家进行解答。牛牛1985159637
浏览1126
评论37
收藏2

研究环境无法正确识别'\n'

用户头像zxystar
2023-10-25 发布
回测OK的策略在研究环境中报错,发现是换行符无法识别,请问如何解决?
浏览52
评论2
收藏0