Стратегия обратного движения, основанная на скользящих средних, ценовых моделях и объеме

Автор:Чао Чжан, Дата: 2024-01-17 17:48:40
Тэги:

img

Обзор

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

Принципы

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

С точки зрения логики, стратегия сначала рассчитывает быстрые и медленные скользящие средние. Затем она определяет условия для выявления бычьих/медленных паттернов поглощения. Уровни поддержки и сопротивления включаются вместе с расширением объема в качестве дополнительных условий. Сигналы покупки запускаются, когда быстрый MA пересекает медленный MA, появляется бычий шаблон, прерывается сопротивление и увеличивается объем. Противоречивые условия запускают сигналы продажи.

Преимущества

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

Кроме того, эта стратегия использует как концепцию тренда, так и концепцию реверсии. Реверсии ищут только после существующей тенденции. Другими словами, стратегия ищет только ретрексов контртенда в рамках трендовых рынков. Это помогает уменьшить случайность и повышает прибыльность.

Риски

Самый большой риск этой стратегии - это неудачные переломы, когда цена продолжает двигаться против торгового направления после сигналов входа.

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

Усовершенствования

Возможные пути оптимизации для этой стратегии включают:

  1. Настройка скользящих средних периодов для выявления оптимальных долгосрочных/короткосрочных тенденций.

  2. Испытание различных методов расчета поддержки/сопротивления, таких как Pivot Points.

  3. Попробую другие показатели объема, например, денежный поток Чайкина, осциллятор объема.

  4. Включая больше факторов подтверждения обратного движения, таких как долгосрочные графические модели, огромные пики объема и т. Д.

  5. Использование фьючерсов на фондовые индексы для перекрестной проверки сигналов на рынках.

Благодаря тщательному тестированию комбинаций параметров можно добиться дальнейшего улучшения производительности.

Заключение

Эта стратегия аккуратно сочетает в себе скользящие средние, ценовое действие и объем торговли с обратными тенденциями только на трендовых рынках.


/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Profit Table Strategy", overlay=true)

// Input parameters
fastLength = input(10, title="Fast MA Length")
slowLength = input(20, title="Slow MA Length")
takeProfitPercent = input(1, title="Take Profit (%)") / 100
stopLossPercent = input(1, title="Stop Loss (%)") / 100
trailingStopPercent = input(1, title="Trailing Stop (%)") / 100

// Price action conditions
bullishEngulfing = close > open and close > open[1] and open < close[1] and open[1] > close[1]
bearishEngulfing = close < open and close < open[1] and open > close[1] and open[1] < close[1]

// Support and resistance levels
supportLevel = input(100, title="Support Level")
resistanceLevel = input(200, title="Resistance Level")

// Volume conditions
volumeCondition = volume > ta.sma(volume, 20)

// Calculate moving averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)

// Buy condition
buyCondition = (fastMA > slowMA) and (close > resistanceLevel) and bullishEngulfing and volumeCondition

// Sell condition
sellCondition = (fastMA < slowMA) and (close < supportLevel) and bearishEngulfing and volumeCondition

// Strategy logic
strategy.entry("Buy", strategy.long, when=buyCondition)
strategy.close("Buy", when=sellCondition)

// Calculate take profit, stop loss, and trailing stop levels
takeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercent)
stopLossLevel = strategy.position_avg_price * (1 - stopLossPercent)
trailingStopLevel = strategy.position_avg_price * (1 - trailingStopPercent)

// Plotting levels on the chart
plot(supportLevel, color=color.blue, style=plot.style_line, linewidth=2, title="Support Level")
plot(resistanceLevel, color=color.purple, style=plot.style_line, linewidth=2, title="Resistance Level")
plot(takeProfitLevel, color=color.green, style=plot.style_line, linewidth=2, title="Take Profit Level")
plot(stopLossLevel, color=color.red, style=plot.style_line, linewidth=2, title="Stop Loss Level")
plot(trailingStopLevel, color=color.orange, style=plot.style_line, linewidth=2, title="Trailing Stop Level")

// Plotting buy and sell signals on the chart
plotshape(series=buyCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar)
plotshape(series=sellCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar)


Больше