量化投资入门教程六——技术指标MA策略
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
量化投资入门教程六——技术指标MA策略
目录
1.策略原理及代码
1.1策略原理
1.2策略代码
1.2.1ATR.ini
1.2.2ATR.py
1.2.3stock_pool.csv
2.Python相关函数
2.1Python标准函数
2.2掘金接口函数
3.金融术语(移动平均线)
1.策略原理及代码
1.1策略原理
基于ta-lib的MA策略。如果当前价格高于MA,买入股票;如果当前价格低于MA,卖出股票。
实现量化投资策略的相关编程并非想象中这么困难,从Python的安装到量化编程的实现只需简单几步(具体见
/q/forum.php?mod=viewthread&tid=54&extra=page%3D1轻松安装Python、掘金量化平台及相关工具包)
1.2策略代码(可直接在python中实现)
1.2.1 ma.ini
[strategy]
username=
password=
;回测模式
mode=4
td_addr=localhost:8001
strategy_id=
;订阅代码注意及时更新
subscribe_symbols=SHFE.ag1705.tick,SHFE.ag1705.bar.60
[backtest]
start_time=2017-02-15 21:00:00
end_time=2017-03-07 16:00:00
;策略初始资金
initial_cash=10000000
;委托量成交比率,默认=1(每个委托100%成交)
transaction_ratio=1
;手续费率,默认=0(不计算手续费)
commission_ratio=0.0004
;滑点比率,默认=0(无滑点)
slippage_ratio=0
price_type=1
;基准
bench_symbol=SHSE.000300
[para]
trade_exchange=SHFE
trade_symbol=ag1705
window_size=200
bar_type=60
tick_size=1
significant_diff=21
timeperiod=20
############################################################## # logger settings
############################################################## [loggers]
keys=root
[logger_root]
level=DEBUG
handlers=console,file
[handlers]
keys=console,file
[handler_file]
class=handlers.RotatingFileHandler
args=('ma.log','a','maxBytes=10000','backupCount=5')
formatter=simple
[handler_console]
class=StreamHandler
args = (sys.stdout,)
formatter=simple
[formatters]
keys = simple
[formatter_simple]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=
1.2.2 ma.py
#!/usr/bin/env python
# encoding: utf-8
import numpy as np
from collections import deque
from gmsdk import *
from talib import SMA
# 算法用到的一些常量,阀值,主要用于信号过滤
eps = 1e-6
threshold = 0.235
tick_size = 0.2
half_tick_size = tick_size / 2
significant_diff = tick_size * 2.6
class MA(StrategyBase):
''' strategy example1: MA decision price cross long MA, then place a order, temporary reverse trends place more orders '''
def __init__(self, *args, **kwargs):
#import pdb; pdb.set_trace()
super(MA, self).__init__(*args, **kwargs)
# 策略初始化工作在这里写,从外部读取静态数据,读取策略配置参数等工作,只在策略启动初始化时执行一次。
# 从配置文件中读取配置参数
self.exchange = self.config.get('para', 'trade_exchange')
self.sec_id = self.config.get('para', 'trade_symbol')