好文档 - 专业文书写作范文服务资料分享网站

量化投资入门教程六——技术指标MA策略

天下 分享 时间: 加入收藏 我要投稿 点赞

量化投资入门教程六——技术指标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的安装到量化编程的实现只需简单几步(具体见

http://zjshe.cn/q/forum.php?mod=viewthread&tid=54&extra=page=1轻松安装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')

self.symbol = \self.last_price = 0.0

self.trade_unit = [3, 1, 2, 0] # self.trade_count = 0

self.trade_limit = len(self.trade_unit)

self.window_size = self.config.getint('para', 'window_size') or 200 self.timeperiod = self.config.getint('para', 'timeperiod') or 20 self.bar_type = self.config.getint('para', 'bar_type') or 60 self.close_buffer = deque(maxlen=self.window_size)

self.significant_diff = self.config.getfloat('para', 'significant_diff') or significant_diff

# prepare historical bars for MA calculating

# 从数据服务中准备一段历史数据,使得收到第一个bar后就可以按需要计算ma last_closes = [bar.close for bar in self.get_last_n_bars(self.symbol, self.bar_type,

self.window_size,end_time=self.start_time)]

last_closes.reverse() #因为查询出来的时间是倒序排列,需要倒一下顺序 self.close_buffer.extend(last_closes)

# 响应bar数据到达事件 defon_bar(self, bar):

# 确认下bar数据是订阅的分时 if bar.bar_type == self.bar_type: # 把数据加入缓存 self.close_buffer.append(bar.close) # 调用策略计算 self.algo_action()

# 响应tick数据到达事件 defon_tick(self, tick): # 更新市场最新成交价 self.last_price = tick.last_price

defon_execution(self, execution): #打印订单成交回报信息

print((\

#策略的算法函数,策略的交易逻辑实现部分 defalgo_action(self): # type: () -> object

#数据转换,方便调用ta-lib函数进行技术指标的计算,这里用SMA指标

量化投资入门教程六——技术指标MA策略

量化投资入门教程六——技术指标MA策略目录1.策略原理及代码1.1策略原理1.2策略代码1.2.1ATR.ini1.2.2ATR.py1.2.3stock_pool.csv2.Python相关函数2.1Python标准函数2.2掘金接口函数3.金融术语(移动平均线)1.策略原理及代码1.1策略原
推荐度:
点击下载文档文档为doc格式
2223t2jig82xzhu2kzn0175lm26kup009zx
领取福利

微信扫码领取福利

微信扫码分享