Основано на стратегии пересечения RSI и MACD


Дата создания: 2024-03-15 15:08:39 Последнее изменение: 2024-03-15 15:08:39
Копировать: 0 Количество просмотров: 895
1
Подписаться
1617
Подписчики

Основано на стратегии пересечения RSI и MACD

Обзор стратегии

RSI и MACD-крестная стратегия - это торговая стратегия, основанная на относительно сильных слабых индексах (RSI) и скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих скользящих сколь

Стратегия также вводит два индекса сдвигающихся средних ((EMA) в качестве дополнительных подтверждающих индикаторов. Крушение более коротких периодов EMA (например, 10-дневная EMA) и более длительных периодов EMA (например, 20-дневная EMA) также может быть использовано для подтверждения сигналов, создаваемых RSI и MACD.

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

  1. Вычислить RSI: с помощью функции ta.rsi (() в библиотеке Ta-Lib вычислить значение RSI. RSI - динамический индикатор, используемый для измерения величины изменения цены в течение данного периода времени. Его значение колеблется от 0 до 100.

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

  3. Вычисление показателя ЭМА: используя функцию ta.ema () из библиотеки Ta-Lib для вычисления 10-дневных ЭМА и 20-дневных ЭМА. ЭМА представляет собой взвешенное скользящее среднее, более чувствительное к недавним изменениям цен.

  4. Определение условий покупки: когда RSI выходит из зоны oversold (под 40 по умолчанию) и в то же время MACD-полюс корректируется с отрицательной стороны, создается сигнал покупки. Это указывает на то, что цена может скоро вырасти.

  5. Определение условий для продажи: когда RSI прорывается вниз от зоны сверхпокупок (по умолчанию выше 60), и в то же время MACD-полюсный график становится отрицательным, создается сигнал для продажи. Это указывает на то, что цена может скоро упасть.

  6. Используйте EMA в качестве подтверждения: когда цена находится выше 10-й и 20-й EMA, дополнительно подтвердите сигнал покупки; когда цена находится ниже 10-й и 20-й EMA, дополнительно подтвердите сигнал продажи.

  7. Графический сигнал: на графике с зеленым треугольником вверх, чтобы купить сигнал, и с красным треугольником вниз, чтобы продать сигнал.

Стратегические преимущества

  1. Объединение нескольких индикаторов: стратегия объединяет три часто используемых технических индикатора: RSI, MACD и EMA, что обеспечивает более надежный торговый сигнал.

  2. Следить за тенденциями: индикатор MACD помогает идентифицировать изменения в ценовых тенденциях, что позволяет стратегии адаптироваться к различным рыночным условиям.

  3. Подтверждение динамики: RSI обеспечивает подтверждение динамики цен, что помогает исключить ложные сигналы.

  4. Простота использования: стратегия использует простые вычисления показателей и определение сигналов, которые легко понять и реализовать.

  5. Эластичность: путем корректировки параметров RSI и MACD можно оптимизировать стратегию для адаптации к различным рынкам и торговым видам.

Стратегический риск

  1. Чувствительность параметров: эффективность стратегии может быть более чувствительной к выбору параметров RSI и MACD. Неправильные параметры могут привести к снижению качества сигнала.

  2. Задержка сигнала: поскольку MACD основан на расчетах с подвижной средней, может быть некоторая задержка сигнала. Это может привести к пропуску оптимального времени входа в игру.

  3. Рынок в колебаниях: в условиях рынка в колебаниях RSI и MACD могут создавать частые перекрестные сигналы, что приводит к чрезмерной торговле и потере средств.

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

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

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

  2. Выбор оптимальных параметров: выявление оптимального сочетания RSI и MACD параметров путем отслеживания и оптимизации исторических данных для повышения надежности и точности сигнала.

  3. Добавление стопов и остановок: для каждой сделки устанавливаются соответствующие уровни стопов и остановок, чтобы ограничить потенциальные потери и защитить прибыль. Для определения стопов и остановок можно использовать такие методы, как процент или ATR.

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

  5. Сочетание с другими показателями: рассмотреть возможность включения в стратегию других технических показателей, таких как ленты Брин, случайные показатели и т. д., чтобы обеспечить дополнительное подтверждение и фильтрацию.

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

RSI и MACD-крестная стратегия - это торговая стратегия, которая сочетает в себе относительно сильные и слабые индексы, скользящие средние, сходящиеся расширенные индикаторы и индексные средние. Эта стратегия генерирует сигналы покупки и продажи, идентифицируя перекрестные сигналы RSI и MACD и используя EMA в качестве дополнительного подтверждения.

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

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

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

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

//@version=5
strategy('RSIand macd bull and bear', overlay=true)

// Input parameters
length = input.int(14, title='RSI Length', minval=1)
overbought = input.int(60, title='RSI Overbought Level', minval=0, maxval=100)
oversold = input.int(40, title='RSI Oversold Level', minval=0, maxval=100)

ema30_length = input(10, title='EMA RSI')
ema50_length = input(20, title='EMA MACD')

// Calculate EMAs

ema30 = ta.ema(close, ema30_length)
ema50 = ta.ema(close, ema50_length)

// Calculate RSI
rsiValue = ta.rsi(close, length)

// Calculate MACD
[macdLine, signalLine, hist] = ta.macd(close, 12, 26, 9)

var float buyPrice = na

// Buy condition: EMA 3 crosses above EMA 30 and price is above EMA 50
buyCondition =  rsiValue > oversold and ta.crossover(hist,0) or ta.crossover(rsiValue,oversold) and hist>0
if (buyCondition)
    // buyPrice := close
    strategy.entry('Buy', strategy.long)

// Exit long position when close is below EMA30 and below the low of the previous 3 candles after the buy entry0
//exitLongCondition = close < ema30 and close < ta.lowest(low, 3) and close < buyPrice
//if (exitLongCondition)
  //  strategy.close('BuyExit')

// Sell condition: EMA 3 crosses below EMA 30 and price is below EMA 50
sellCondition = rsiValue < overbought and ta.crossunder(hist,0) or ta.crossunder(rsiValue, overbought) and hist<0
if (sellCondition)
    strategy.entry('Sell', strategy.short)

// Exit short position when close is above EMA30 and above the high of the previous 3 candles after the sell entry
//exitShortCondition = close > ema30 and close > ta.highest(high, 3)
//if (exitShortCondition)
  //  strategy.close('SellExit')

// Plot EMAs on the chart


// Change color of EMA 50 based on MACD histogram
ema50Color = hist > 0 ? color.new(color.green, 0) :  hist<0 ? color.new(color.red, 0) : color.new(color.black, 0)
plot(ema50, color=ema50Color, title='EMA 50 Colored')

// Change color of EMA 30 based on RSI trend
ema30Color = rsiValue > oversold ? color.new(color.green, 0) : rsiValue<overbought ? color.new(color.red, 0) : color.new(color.black, 0)
plot(ema30, color=ema30Color, title='EMA 30 Colored')

// Highlight Buy and Sell signals on the chart
// bgcolor(buyCondition ? color.new(color.green, 90) : na)
// bgcolor(sellCondition ? color.new(color.red, 90) : na)

// Plotting Buy and Sell Signals on the Chart until strategy exit
barcolor(strategy.position_size > 0 and rsiValue > overbought ? color.new(color.yellow, 0) : strategy.position_size < 0 and rsiValue < oversold ? color.new(color.black, 0) : na)
// plotshape(buyCondition,  title = "Buy",  text = 'Buy',  style = shape.labelup,   location = location.belowbar, color= color.green,textcolor = color.white, transp = 0, size = size.tiny)
// plotshape(sellCondition, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= color.red,textcolor = color.white, transp = 0, size = size.tiny)

plotshape(buyCondition, color=color.green, style=shape.triangleup, size=size.small, location=location.belowbar, text="Buy")
plotshape(sellCondition, color=color.red, style=shape.triangledown, size=size.small, location=location.abovebar, text="Sell")