MACD日測定コード及びMACDの計算方法
3984 ワード
先物の量子化取引を学び始め、米かごAPIからコピーされた株価指数先物主力契約の日級MACD日回収に関する入門コード:まず、MACDに関する紹介と計算方式を見てみましょう.MACDは指数平滑移動平均線と呼ばれ、二指数移動平均線から発展し、速い指数移動平均線(EMA 12)から遅い指数移動平均線(EMA 26)を差し引いて速い線DIFを得て、2×(高速線DIF-DIFの9日重み付け移動平均線DEA)MACDカラムを得る.以上のいくつかの指標について:EMA 12:指数移動平均線.EMA(12)=(終値-昨日のEMA)×2/13+昨日のEMA=終値*2/13+昨日のEMA×11/13(株式上場初日のEMAは0)という意味がはっきりしていて、このEMA(12)の計算値は今日の終値の重み配分が2/13で、前日計算したEMA配分が11/13であることを示しています.EMA 26:指数移動平均線.同じEMA(12)、EMA(26)=終値*25/27+昨日のEMA×2/27. DIF:差分値.すなわち、12日EMAの数値から26日EMAの数値を減算する.すなわちtalib-MACD戻り値macdである.DEA:離差平均.今日のDEA=(前日のDEA X 8/10+今日のDIF X 2/10)は、talib-MACDの戻り値signalです.DIFとそれ自身の移動平均との差の大きさ一般BAR=(DIF-DEA)×2はMACD柱状図である.ただしtalibにおけるMACDの計算はbar=(DIF-DEA)×1.
# import python , pandas、numpy
import talib
# 。context
def init(context):
# context s1,
context.s1 = 'IF1606'
# MACD macd
context.SHORTPERIOD = 12
context.LONGPERIOD = 26
context.SMOOTHPERIOD = 9
context.OBSERVATION = 50
# 。 handle_bar
subscribe(context.s1)
# ,
def handle_bar(context, bar_dict):
#
# ,history_bars ndarray,
prices = history_bars(context.s1, context.OBSERVATION, '1d', 'close')
# Talib MACD , , macd,signal hist
macd, signal, hist = talib.MACD(prices, context.SHORTPERIOD,
context.LONGPERIOD, context.SMOOTHPERIOD)
# macd ( DIF),signal macd ( DEA), , ,
if macd[-1] - signal[-1] > 0 and macd[-2] - signal[-2] < 0:
sell_qty = context.portfolio.positions[context.s1].sell_quantity
# , ,
if sell_qty > 0:
buy_close(context.s1, 1)
#
buy_open(context.s1, 1)
if macd[-1] - signal[-1] < 0 and macd[-2] - signal[-2] > 0:
buy_qty = context.portfolio.positions[context.s1].buy_quantity
# , ,
if buy_qty > 0:
sell_close(context.s1, 1)
#
sell_open(context.s1, 1)