资源加载中... loading...

动量2.0策略

Author: 雨幕(youquant), Date: 2022-05-31 11:16:50
Tags: EMAMOM

动量2.0是具有移动基态的归一化动量振荡器。振荡器值通过其标准偏差进行归一化,类似于z评分技术。指示器使用作为振荡器的反向长期平均值计算的基准电平,而不是零电平。与动量振荡器使用的零电平交叉信号类似,我们的振荡器计算基极电平交叉信号。 移动基准电平有助于减少错误信号的数量。在上升趋势中,基准面低于零,在下降趋势中,基准面高于零。这使我们能够考虑到趋势稳定性效应。在这种情况下,为了形成反转信号,振荡器必须在上升趋势中穿过一个较低的值,在下降趋势中穿过一个较高的值。

如何使用 当振荡器穿过基面以上时,发出看涨信号,低于基面时发出看跌信号。信号分别显示为绿色和红色标签。 直方图的颜色显示了当前价格走势的方向。绿色表示向上移动,红色表示向下移动。蓝线表示基准标高。

设置 振荡器周期-确定动量振荡器的周期 基极周期-确定在计算基极和规范化振荡器时用于长期平均的周期

回测测试

img

img

img


/*backtest
start: 2021-12-01 09:00:00
end: 2022-05-30 15:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
args: [["v_input_1",6],["v_input_int_1",100],["ContractType","rb2210",360008]]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © AstrideUnicorn

//@version=5
indicator("Momentum 2.0", overlay = false)

source = close

// Script Inputs 
window = input(defval=6, title="振荡器周期")
base_level_window = input.int(defval=100, title="基础等级周期", minval=100)

// Calculate normalized and smoothed momentum oscillator
momentum = ta.mom(source, window) 
momentum_normalized = ( momentum ) / ta.stdev(momentum, base_level_window)
momentum_smoothed = ta.linreg(momentum_normalized, 30,0)

// Calculated the base-level
momentum_base = -ta.ema(momentum_normalized,base_level_window)

// Calculate base-level cross signals
bullish = ta.crossover(momentum_smoothed, momentum_base)  
bearish = ta.crossunder(momentum_smoothed, momentum_base) 

if bullish
    strategy.entry("Enter Long", strategy.long)
else if bearish
    strategy.entry("Enter Short", strategy.short)
template: strategy.tpl:40:21: executing "strategy.tpl" at <.api.GetStrategyListByName>: wrong number of args for GetStrategyListByName: want 7 got 6