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


Дата создания: 2024-01-17 17:48:40 Последнее изменение: 2024-01-17 17:48:40
Копировать: 0 Количество просмотров: 551
1
Подписаться
1617
Подписчики

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

Обзор

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

Принципы

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

С точки зрения логики кода, сначала рассчитывается быстрое движущееся среднее и медленное движущееся среднее. Затем устанавливаются условия для определения многоголового поглощения и пустого поглощения. В то же время устанавливаются условия для поддержки сопротивления и увеличения объема сделки.

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

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

Кроме того, эта стратегия одновременно использует два фактора: тренд и реверсию. Прежде чем появится сигнал об обратном направлении, должен быть тренд. То есть эта стратегия будет искать возможности для обратного направления только в контексте тренда. Это также снижает случайность и повышает вероятность получения прибыли.

Риск

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

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

Оптимизация

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Настройка среднелинейных параметров для выявления более подходящих длинных и коротких периодов.

  2. Тестирование различных алгоритмов поддержки битов сопротивления, таких как биты сопротивления поддержки Pareto.

  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)