Одноточечная движущаяся средняя стратегия является количественной торговой стратегией, основанной на Осилляторе импульса Чанде. Она определяет, когда рынок находится в фазе консолидации, рассчитывая изменения импульса цены. Когда линия импульса Чанде пересекает линию покупки или падает ниже линии продажи, долгие или короткие сделки будут выполнены соответственно.
Стратегия сначала рассчитывает изменение динамики ценmomm
, затем разделяет его на положительный импульсm1
и отрицательный импульсm2
Затем он суммирует положительный и отрицательный импульс за период ретроспективного анализа вsm1
иsm2
Наконец, импульсный осциллятор Чанде.chandeMO
Показатель колеблется вокруг нулевой линии. показания выше нуля указывают на более сильный подъемный импульс, в то время как показания ниже нуля указывают на более сильный нисходящий импульс.
Когда линия Chande Momentum пересекает линию покупки с более низких уровней, это сигнализирует о том, что цена выходит из нисходящего тренда и готова начать восходящий тренд. Стратегия будет длинной. Когда линия падает ниже линии продажи с более высоких уровней, будут инициированы короткие позиции.
Некоторые способы улучшения включают использование динамических линий покупки/продажи, фильтрацию сигналов с другими индикаторами и внедрение стоп-лосса для контроля рисков.
Одноточечная стратегия прорыва скользящей средней определяет поворотные моменты тренда от нисходящего тренда к консолидации к восходящему тренду с использованием Осиллятора импульса Чанде, позволяя торговать низкими покупками и высокими продажами. Несмотря на то, что она проста и интуитивна, улучшения в настройке параметров, фильтрации сигналов и контроле рисков могут еще больше улучшить производительность. В целом, она служит эффективным инструментом для количественных трейдеров для определения обратного тренда.
/*backtest start: 2024-01-02 00:00:00 end: 2024-02-01 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //* Backtesting Period Selector | Component *// //* https://www.tradingview.com/script/eCC1cvxQ-Backtesting-Period-Selector-Component *// //* https://www.tradingview.com/u/pbergden/ *// //* Modifications made *// testStartYear = input(2021, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(10, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(999999, "Backtest Stop Year") testStopMonth = input(9, "Backtest Stop Month") testStopDay = input(26, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) testPeriod() => true /////////////// END - Backtesting Period Selector | Component /////////////// strategy(title="Chande Momentum Strat", shorttitle="ChandeMO Strat", format=format.price, precision=2) length = input(9, minval=1) src = input(close, "Price", type = input.source) momm = change(src) f1(m) => m >= 0.0 ? m : 0.0 f2(m) => m >= 0.0 ? 0.0 : -m m1 = f1(momm) m2 = f2(momm) sm1 = sum(m1, length) sm2 = sum(m2, length) percent(nom, div) => 100 * nom / div chandeMO = percent(sm1-sm2, sm1+sm2) plot(chandeMO, "Chande MO", color=color.blue) hline(0, color=#C0C0C0, linestyle=hline.style_dashed, title="Zero Line") buyline= input(-80) sellline= input(80) hline(buyline, color=color.gray) hline(sellline, color=color.gray) if testPeriod() if crossover(chandeMO, buyline) strategy.entry("Long", strategy.long, alert_message="a=ABCD b=buy e=binanceus q=1.2 s=uniusd") // strategy.exit(id="Long Stop Loss", stop=strategy.position_avg_price*0.8) //20% stop loss if crossunder(chandeMO, sellline) strategy.entry("Short", strategy.short, alert_message="a=ABCD b=sell e=binanceus q=1.2 s=uniusd") // strategy.exit(id="Short Stop Loss", stop=strategy.position_avg_price*1.2) //20% stop loss // remember to alert as {{strategy.order.alert_message}}