資源簡介
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
評論
共有 條評論