资源简介

MACD称为异同移动平均线,是从双指数移动平均线发展而来的,由快的指数移动平均线(EMA12)减去慢的指数移动平均线(EMA26)得到快线DIF,再用2×(快线DIF-DIF的9日加权移动均线DEA)得到MACD柱。MACD的意义和双移动平均线基本相同,即由快、慢均线的离散、聚合表征当前的多空状态和股价可能的发展变化趋势,但阅读起来更方便。当MACD从负数转向正数,是买的信号。当MACD从正数转向负数,是卖的信号。当MACD以大角度变化,表示快的移动平均线和慢的移动平均线的差距非常迅速的拉开,代表了一个市场大趋势的转变。

资源截图

代码片段和文件信息

# -*- coding: utf-8 -*-

# 简便起见,可以直接用 from gm.api import *
from gm.api import run
from gm.api import ADJUST_PREV
from gm.api import MODE_BACKTEST
from gm.api import subscribe
from gm.api import history_n
from gm.api import order_percent
from gm.api import order_volume
from gm.api import (OrderSide_Buy OrderSide_Sell)
from gm.api import (PositionEffect_Open PositionEffect_Close)
from gm.api import OrderType_Market
from datetime import datetime
from datetime import timedelta
import talib
import numpy as np
from collections import deque

#本策略基于掘金量化交易平台 网址:www.myquant.cn

# 常用参量设置
DATE_STR = “%Y-%m-%d“
TIME_STR = “%Y-%m-%d %H:%M:%S“

HIST_WINDOW = 40
SHORT_PERIOD = 5
LONG_PERIOD = 20

def init(context):
    # 全局变量设置
    context.dict_stock_price = dict()
    # 以 50 EFT作为交易标的
    context.stock_pool = [‘SZSE.000001‘]
    # 订阅日线行情
    subscribe(symbols=context.stock_pool frequency=‘1d‘ wait_group=True)
    # 日期设定,避免出现未来函数,将起始日往前取一日
    start_date = datetime.strptime(context.backtest_start_time TIME_STR)
    context.start_date = datetime.strftime(start_date - timedelta(days=1)
                                           TIME_STR)
    # 获取起始日之前行情,便于计算指标
    deque_high = deque(maxlen=HIST_WINDOW)
    deque_low = deque(maxlen=HIST_WINDOW)
    deque_close = deque(maxlen=HIST_WINDOW)
    for stock in context.stock_pool:
        history_info = history_n(symbol=stock 
                                 frequency=‘1d‘ 
                                 count=HIST_WINDOW
                                 adjust=ADJUST_PREV
                                 adjust_end_time=context.backtest_end_time
                                 end_time=context.start_date
                                 fields=‘high low close‘)
        for bar in history_info:
            deque_high.append(bar[‘high‘])
            deque_low.append(bar[‘low‘])
            deque_close.append(bar[‘close‘])
        context.dict_stock_price.setdefault(stock 
                                            [deque_high deque_low deque_close])
    print(‘finish initialization‘)
        
def on_bar(context bars):
    fo

评论

共有 条评论