策略创建运行流程
1.创建运行策略
1.1创建策略
打开“掘金量化3.0”客户端,进入“我的策略”-“新建策略”,如下所示:
平台本身提供了很多经典策略,选择“空策略”,命名为“量化策略示例”,代码如下:
# coding=utf-8
from __future__ import print_function, absolute_import
from gm.api import *
# 策略中必须有init方法
def init(context):
pass
if __name__ == '__main__':
'''
strategy_id策略ID, 由系统生成
filename文件名, 请与本文件名保持一致
mode运行模式, 实时模式:MODE_LIVE回测模式:MODE_BACKTEST
token绑定计算机的ID, 可在系统设置-密钥管理中生成
backtest_start_time回测开始时间
backtest_end_time回测结束时间
backtest_adjust股票复权方式, 不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST
backtest_initial_cash回测初始资金
backtest_commission_ratio回测佣金比例
backtest_slippage_ratio回测滑点比例
'''
run(strategy_id='2e012d59-16b0-11ec-85b2-82771950a4e5',
filename='main.py',
mode=MODE_BACKTEST,
token='7d132cd2b781bcb8b42430748dd94edc145750cb',
backtest_start_time='2020-11-01 08:00:00',
backtest_end_time='2020-11-10 16:00:00',
backtest_adjust=ADJUST_PREV,
backtest_initial_cash=10000000,
backtest_commission_ratio=0.0001,
backtest_slippage_ratio=0.0001)
常用的策略结构分为3类:
1.定时任务示例:
每个交易日的14:50分市价买入200股浦发银行股票:
# coding=utf-8
from __future__ import print_function, absolute_import
from gm.api import *
def init(context):
# 每天14:50 定时执行algo任务,
# algo执行定时任务函数,只能传context参数
# date_rule执行频率,目前暂时支持1d、1w、1m,其中1w、1m仅用于回测,实时模式1d以上的频率,需要在 algo判断日期
# time_rule执行时间, 注意多个定时任务设置同一个时间点,前面的定时任务会被后面的覆盖
schedule(schedule_func=algo, date_rule='1d', time_rule='14:50:00')
def algo(context):
# 以市价购买200股浦发银行股票, price在市价类型不生效
order_volume(symbol='SHSE.600000', volume=200, side=OrderSide_Buy,
order_type=OrderType_Market, position_effect=PositionEffect_Open,
price=0)
def on_backtest_finished(context, indicator):
print(indicator)
if __name__ == '__main__':
'''
strategy_id策略ID, 由系统生成
filename文件名, 请与本文件名保持一致
mode运行模式, 实时模式:MODE_LIVE回测模式:MODE_BACKTEST
token绑定计算机的ID, 可在系统设置-密钥管理中生成
backtest_start_time回测开始时间
backtest_end_time回测结束时间
backtest_adjust股票复权方式, 不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST
backtest_initial_cash回测初始资金
backtest_commission_ratio回测佣金比例
backtest_slippage_ratio回测滑点比例
'''
run(strategy_id='strategy_id',
filename='main.py',
mode=MODE_BACKTEST,
token='token_id',
backtest_start_time='2020-11-01 08:00:00',
backtest_end_time='2020-11-10 16:00:00',
backtest_adjust=ADJUST_PREV,
backtest_initial_cash=10000000,
backtest_commission_ratio=0.0001,
backtest_slippage_ratio=0.0001)
在algo()函数中,使用了order_volume()按指定量委比函数,函数原型如下:
order_volume
(
symbol
,
volume
,
side
,
order_type
,
position_effect
,
price
=
0
,
order_duration