输入/搜索内容

商品期货MACD策略

商品期货
创建日期: 2022-11-10 21:37:00
最后修改: 4 年前
复制: 39
点击次数: 2188
0
关注
6
关注者

MACD 计算方法
第 1 步:计算 EMA12 和 EMA26
EMA12 = XAverage(Close, 12)
EMA26 = XAverage(Close, 26)

第 2 步:计算 DIF
DIF = EMA12 - EMA26

第 3 步:计算 DEA
DEA = XAverage(DIF, 9)

第 4 步:计算 MACD 直方图(Histogram)
Histogram = 2(DIF - DEA)

MACD 策略逻辑
多头开仓:DIF 大于 DEA
空头开仓:DIF 小于 DEA
多头平仓:DIF 小于 DEA
空头平仓:DIF 大于 DEA

策略源码
Python
'''backtest
start: 2022-10-12 09:00:00
end: 2022-11-10 15:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
'''

p = ext.NewPositionManager()
vp = 0 
def onTick():
    symbol = _C(exchange.SetContractType,"rb888")
    r = _C(exchange.GetRecords)
    if len(r) < 100 :
        return
    macd = TA.MACD(r)
    dif = macd[0][-2]
    dea = macd[1][-2]
    #lastprice = r[-1]["Close"]
    global vp 
    if vp == 0 and dif > dea :
        p.OpenLong(symbol["InstrumentID"], 1)
        vp = 1 
    if vp == 0 and dif < dea :
        p.OpenShort(symbol["InstrumentID"], 1)
        vp = -1 
    if vp == 1 and dif < dea :
        p.Cover(symbol["InstrumentID"])
        vp = 0 
    if vp == -1 and dif > dea :
        p.Cover(symbol["InstrumentID"])
        vp = 0 
def main():
    while True:
        if exchange.IO("status"):
            onTick()
            LogStatus(_D(), "已连接")
        else:
            LogStatus(_D(), "未连接")
        Sleep(1000)
评论
全部评论 (0)
暂无数据
暂无数据
  • 1
iPhone 下载
社区
回测系统
© 2015 - ∞ YouQuant 豫ICP备19046564号