Стратегия прорыва средней скользящей средней от одной точки

Автор:Чао Чжан, Дата: 2024-02-02 11:19:19
Тэги:

img

Обзор

Одноточечная движущаяся средняя стратегия является количественной торговой стратегией, основанной на Осилляторе импульса Чанде. Она определяет, когда рынок находится в фазе консолидации, рассчитывая изменения импульса цены. Когда линия импульса Чанде пересекает линию покупки или падает ниже линии продажи, долгие или короткие сделки будут выполнены соответственно.

Логика стратегии

Стратегия сначала рассчитывает изменение динамики цен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}}

Больше