通过订阅,将需要的数据申明
通过 on_bar 函数接收 bar数据事件,并在该函数中求均值
| 名称 | 类型 | 说明 |
|---|---|---|
| run | 函数 | 策略启动入口函数 |
| main | 函数 | 用于策略编写的主文件名,可通过 run 函数中的 filename 指定 |
| strategy_id | 参数 | 策略id,用于终端识别策略身份的唯一标识 |
| token | 参数 | 登录身份信息的标识,服务器通过该标识识别账户 |
| mode | 参数 | 策略运行参数,通过在 run 函数指定 mode:MODE_LIVE(实时)=1,MODE_BACKTEST(回测) =2 |
| init | 函数 | 策略初始化函数 |
| context | 全局变量 | 系统默认的全局变量名,可用于:获取订阅的时序数据、系统参数、自定义全局变量 |
| log | 函数 | 实时运行时可以将日志输出到终端监控页面 |
| on_xxx | 函数 | xxx表示事件名,系统提供多种常用的决策事件共策略调用:数据事件、定时事件、交易事件、异常事件等 |
| symbol | 参数 | 标的参数,标的格式为:交易所.代码,如深交所平安银行,‘SZSE.000001’ |
| frequence | 参数 | 数据频率,支持格式为:‘60s’,‘300s’,‘900s’,‘1d’ |
| fields | 参数 | 数据字段,用于选定返回数据的字段 |
| adjust | 参数 | 复权模式,用于指定历史行情数据的复权模式 |
| bar | 数据结构 | 对应K线的 Bar (一根蜡烛节点,是该段时间内 tick 的统计),其中包含开高低收量等统计信息 |
| tick | 数据结构 | 对应交易所的 tick 数据(推送频率取决于交易所),不同交易所的 tick 数据流解析为相同规格的数据 |
| cl_ord_id | 参数 | 订单数据的主键,通过该主键撤单和识别订单,在下单函数调用成功时自动生成 |
| 参数 | 作用 |
|---|---|
| strategy_id | 策略id,用于终端识别策略身份的唯一标识 |
| filename | 指定策略主函数的名称 |
| mode | 策略运行模式,MODE_LIVE(实时)=1,MODE_BACKTEST(回测) =2 |
| token | 登录身份信息的标识,服务器通过该标识识别账户 |
| backtest_start_time | 回测开始时间 |
| backtest_end_time | 回测结束时间 |
| backtest_initial_cash | 回测初始资金 |
| backtest_transaction_ratio | 成交比率,最大成交量占比,用于防止不切实际的成交量 |
| backtest_commission_ratio | 回测交易手续费,仿真的在终端设置 |
| backtest_slippage_ratio | 回测滑点,用于模拟冲击成本 |
| backtest_adjust | 复权方式,采用复权撮合可以不用盘后结算,速度更快,但是价格和当时价格不一致,ADJUST_NONE(不复权),ADJUST_PREV(前复权),ADJUST_POST(后复权) |
| backtest_check_cache | 回测缓存,回测一次后数据就会被缓存起来,重复回测更快 |
| serv_addr | 终端地址,默认情况下无需设置,SDK运行无法脱离终端(很多动态资源是终端在管),需要指定一个登陆状态的终端 |
| description | |
|---|---|
| - | 1. %% main 函数作为默认的策略编辑函数 |
| - | 2. function [Context] = main(Context,Event) |
| - | 4. %% 首行注释一般用于说明该段策略代码的功能、逻辑等 |
| - | 5. % 策略名:均线突破策略 |
| - | 6. % 第一步:设定交易股票池,订阅股票池数据,分别针对个股做以下决策 |
| - | 7. % 第二步:60分钟均线突破3日均线作为指标 |
| - | 8. % 如果向上突破,且无持仓,则按一定资金比例买入 |
| - | 9. % 如果向下突破,且有持仓,则卖出所有持仓 |
| - | 10. % 第三步:止损指标,判断持仓时间,如果超过两天,就平仓了结 |
| - | 12. if Event.初始化 % 初始化操作 |
| - | 13. 股票池 = 'xxxxx' % 设定股票池 |
| - | 14. subscribe(symbols, '1分钟数据',长度20); % 订阅数据 |
| - | 15. subscribe(symbols, '1天数据',长度10); |
| - | 16. Context.周期1 = 20; % 设定均线周期 |
| - | 17. Context.周期2 = 10; |
| - | 18. end |
| - | 20. 周期1=Context.周期1; |
| - | 21. 周期2=Context.周期2; |
| - | 22. 1分钟时序数据 = Context.data.1分钟数据.收盘价(周期1); |
| - | 23. 1天时序数据 = Context.data.1天数据.收盘价(周期2); |
| - | 25. if Event.1分钟数据更新时 |
| - | 26. % 计算突破因子 |
| - | 27. 突破因子 = mean(1分钟时序数据)-mean(1天时序数据 ); |
| - | 28. 资金= get_cash(); |
| - | 29. 仓位 = get_position(); |
| - | 30. for i = 所有股票循环 |
| - | 31. % 60分钟均线突破3日均线作为指标 |
| - | 32. if 突破因子(i)>0 |
| - | 33. if 持仓.数量==0 %没有仓位则开仓 |
| - | 34. 订单对象=order_value(标的, 资金*0.1, 买入, 市价,开仓,价格); |
| - | 35. end |
| - | 36. else |
| - | 37. if 持仓.数量~=0 % 有仓位则平仓 |
| - | 38. 订单对象=order_value(标的, 持仓.数量, 卖出, 市价,平仓,价格); |
| - | 39. end |
| - | 40. end |
| - | 41. % 止损指标 |
| - | 42. if Context.now-仓位.时间>2天 且 持仓.数量~=0 |
| - | 43. 订单对象=order_value(标的, 持仓.数量, 卖出, 市价,平仓,价格); |
| - | 44. end |
| - | 45. end |
| - | 47. end |