Естественная торговая стратегия, сочетающая MACD и RSI

MACD RSI WMA MA EMA SMMA RMA VWMA
Дата создания: 2024-06-03 17:22:03 Последнее изменение: 2024-06-03 17:22:03
Копировать: 0 Количество просмотров: 963
1
Подписаться
1617
Подписчики

Естественная торговая стратегия, сочетающая MACD и RSI

Обзор

Стратегия объединяет два технических показателя MACD и RSI, используя перекрестные сигналы MACD и сигналы о перекупке и перепродаже RSI для определения времени торговли. В то же время, стратегия также вводит весомые движущиеся средние ((WMA) в качестве вспомогательного суждения, чтобы повысить надежность стратегии.

Стратегический принцип

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

Стратегия объединяет MACD и RSI, используя оценку тренда MACD и оценку перекупа RSI, чтобы более точно уловить время торговли. В то же время, стратегия также вводит весомый подвижной средний ((WMA) в качестве вспомогательного решения, который уделяет больше внимания недавним ценам по сравнению с обычными подвижными средними и может более чувствительно отражать изменения цен.

Кроме того, в стратегии также установлены переменные с несколькими временными рамками (например, 15 минут, 30 минут, 1 час, 2 часа и т. д.), которые используются для определения изменения тенденций в разных временных масштабах. Такой метод анализа с несколькими временными рамками может помочь стратегии более полно понять тенденции рынка и повысить точность принятия решений.

Анализ преимуществ

  1. Сочетание двух эффективных технических индикаторов MACD и RSI позволяет лучше понимать рыночные тенденции и состояние перекупа и перепродажи, повышая точность торговых решений.
  2. Введение в качестве вспомогательного суждения весовой скользящей средней (WMA) позволяет WMA уделять больше внимания недавним ценам, более чувствительно отражать изменения цен и повышать адаптивность стратегии.
  3. Установка переменных с несколькими временными рамками, осуществление совместного анализа с несколькими временными рамками позволяет более полно понять тенденции рынка и повысить надежность принятия решений.
  4. Работает в часовой временной рамке, с умеренной частотой торгов, что позволяет лучше сбалансировать затраты и прибыль.
  5. Установлены четкие условия для открытия позиции и позиции, такие как MACD, RSI и другие, которые легко понять и реализовать.

Анализ рисков

  1. MACD и RSI являются отстающими индикаторами, и в случае быстрых изменений рынка могут возникнуть ситуации, когда индикаторные сигналы не связаны с ценами, что приводит к ошибочным сигналам.
  2. Существует определенная ограниченность в том, что стратегия, работающая в рамках одного временного рама (один час), может не в полной мере отражать изменения тенденций в разных временных масштабах.
  3. Отсутствие контроля за рисками, такими как остановка убытков и управление позициями, может привести к более высокому риску выхода из рынка в период сильных колебаний.
  4. Параметры стратегии (например, быстрые и медленные циклы MACD, временные циклы RSI и т. д.) могут нуждаться в корректировке в зависимости от различных рыночных условий, а выбор параметров может быть субъективным и неопределенным.

Направление оптимизации

  1. Внедрение большего количества технических показателей, таких как Брин-Бенд, ATR и т. д., создает более надежные торговые сигналы и повышает надежность стратегии.
  2. Выбор временных рамок для оптимизации стратегии, например, добавление более высоких временных рамок, таких как даты, для лучшего понимания основных тенденций, а также установление конкретных точек входа в низкоуровневые временные рамки (например, 15 минут, 5 минут и т. д.), чтобы повысить точность стратегии.
  3. Добавление мер по контролю риска, таких как установление разумных стоп-лосс и ограничение позиций, чтобы контролировать риск вывода.
  4. Для оптимизации параметров стратегии можно использовать методы, такие как машинное обучение, для автоматического поиска оптимальной комбинации параметров на основе исторических данных, чтобы уменьшить влияние субъективного суждения.
  5. Для более полного понимания состояния рынка и повышения адаптивности стратегии следует учитывать другие факторы, такие как рыночные настроения, объем торгов, объем позиций и т. д.

Подвести итог

Стратегия использует два эффективных технических показателя MACD и RSI в сочетании с WMA в качестве вспомогательного суждения для принятия торговых решений в течение 1-часовой временной рамки. Логика стратегии ясна, легко понятна и реализуема, она позволяет лучше понимать рыночные тенденции и состояние перекупа и перепродажи, имеет некоторую жизнеспособность. Однако, стратегия также имеет некоторые ограничения и риски, такие как запаздывание, единая временная рамка, отсутствие контроля риска и т. Д. В будущем.

Исходный код стратегии
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Improved MACD and RSI Trading Strategy", overlay=true, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.01, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// MACD 設置
fast_length = input(12, title="MACD Fast Length")
slow_length = input(26, title="MACD Slow Length")
signal_smoothing = input(9, title="MACD Signal Smoothing")

// RSI 設置
input_rsi_length = input.int(14, title="RSI Length")
input_rsi_source = input(close, "RSI Source")

RSI = ta.rsi(input_rsi_source, input_rsi_length)

// 計算MACD和信號線
[macdLine, signalLine, _] = ta.macd(close, fast_length, slow_length, signal_smoothing)

// 自然交易理論:利用MACD和RSI的結合
ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

maTypeInput = input.string("SMA", title="Moving Average Type", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(14, title="Moving Average Length", group="MA Settings")

macdMA = ma(macdLine, maLengthInput, maTypeInput)

// 設置交易信號
longCondition = ta.crossover(macdLine, signalLine) and macdLine > macdMA and RSI < 70
shortCondition = ta.crossunder(macdLine, signalLine) and macdLine < macdMA and RSI > 30

// 定義時間框架
tf_15m = ta.change(RSI, 15) > 0 ? 1 : 0
tf_30m = ta.change(RSI, 30) > 0 ? 1 : 0
tf_1h = ta.change(RSI, 60) > 0 ? 1 : 0
tf_2h = ta.change(RSI, 120) > 0 ? 1 : 0
tf_4h = ta.change(RSI, 240) > 0 ? 1 : 0
tf_6h = ta.change(RSI, 360) > 0 ? 1 : 0
tf_8h = ta.change(RSI, 480) > 0 ? 1 : 0
tf_12h = ta.change(RSI, 720) > 0 ? 1 : 0
tf_1d = ta.change(RSI, 1440) > 0 ? 1 : 0

// 設置開倉、平倉和空倉條件
if (longCondition and tf_1h and RSI > 50)
    strategy.entry("Long", strategy.long)
if (shortCondition and tf_1h and RSI < 50)
    strategy.entry("Short", strategy.short)

if (tf_1h and RSI > 70)
    strategy.close("Long")
if (tf_1h and RSI < 30)
    strategy.close("Short")

// 加入其他策略
// 定義加權平均價格
wma(source, length) =>
    wma = 0.0
    sum = 0.0
    sum_wts = 0.0
    for i = 0 to length - 1
        wts = (length - i) * (length - i)
        sum := sum + source[i] * wts
        sum_wts := sum_wts + wts
    wma := sum / sum_wts

wmaLength = input.int(20, title="WMA Length", group="Other Strategies")
wmaValue = wma(close, wmaLength)

// 設置交易信號
longWMACondition = close > wmaValue
shortWMACondition = close < wmaValue

if (longWMACondition and tf_1h and RSI > 50)
    strategy.entry("Long WMA", strategy.long)
if (shortWMACondition and tf_1h and RSI < 50)
    strategy.entry("Short WMA", strategy.short)

if (tf_1h and RSI > 70)
    strategy.close("Long WMA")
if (tf_1h and RSI < 30)
    strategy.close("Short WMA")

// 繪製MACD和RSI
plot(macdLine, color=color.blue, title="MACD Line")
plot(signalLine, color=color.red, title="Signal Line")