Стратегия сигналов KDJ RSI Crossover Buy Sell

Автор:Чао Чжан, Дата: 2023-11-27 10:57:16
Тэги:

img

Обзор

Эта стратегия объединяет индикатор KDJ и индикатор RSI для определения времени покупки и продажи.

Принцип стратегии

Стратегия использует перекрестный показатель KDJ и показатель RSI для оценки времени покупки и продажи.

В частности, когда линия J KDJ пересекает линию K снизу вверх, это считается сигналом покупки, а когда линия J пересекает линию K снизу вверх, это сигнал продажи. Это означает покупку, когда акция переходит от перепроданной к перекупленной, и продажу, когда она переходит от перекупленной к перепроданной.

В то же время стратегия включает в себя индикатор RSI для оценки силы сигналов. RSI ниже 30 является перепроданным, а RSI выше 70 является перекупленным. Когда KDJ выпускает сигнал покупки, если индикатор RSI также показывает перепроданность, он повышает надежность сигнала покупки.

В целом, эта стратегия генерирует торговые сигналы в следующих ситуациях:

Сигналы покупки:

  1. Линия J KDJ пересекает линию K И RSI(6) < RSI(12)
  2. KDJ пересекает линию J над линией K И RSI(6) пересекает линию RSI(24)
  3. RSI ((6) пересекается над RSI ((24) И RSI ((6) < 40

Сигналы продажи:

  1. Линия KDJ J пересекается ниже линии K И RSI(6) > RSI(12)
  2. KDJ пересекает линию J ниже линии K И RSI(6) пересекает линию RSI(24)
  3. RSI ((6) пересекается ниже RSI ((24) И RSI ((6) > 60

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

  1. Объединение индикаторов KDJ и RSI делает торговые сигналы более надежными.

  2. Индикатор KDJ оценивает состояние перекупленности/перепроданности, в то время как индикатор RSI оценивает силу.

  3. Многочисленные условия покупки/продажи позволяют избежать упущенных возможностей из-за причин одного показателя.

  4. Параметры RSI установлены на 6, 12 и 24 периоды, которые подходят для различных уровней цикла, что делает стратегию более универсальной.

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

  1. И индикаторы KDJ, и RSI могут давать ложные сигналы, что приводит к ненужным сделкам.

  2. Многочисленные условия торговли увеличивают сложность операций по стратегии и требуют тщательной проверки.

  3. Стратегия должна быть протестирована и оптимизирована на разных рынках, а параметры должны быть скорректированы.

Направления к улучшению

  1. Тест, добавляя другие индикаторы, такие как полосы Боллинджера, для укрепления торговых сигналов.

  2. Оптимизировать параметры KDJ и RSI, чтобы они соответствовали различным уровням цикла.

  3. Увеличить стандарты стоп-лосса для контроля рисков.

  4. Добавьте автоматические механизмы остановки потерь, чтобы остановить потерю при перепаде цен.

Заключение

Эта стратегия сочетает в себе преимущества индикатора KDJ и индикатора RSI, используя перекрестное использование двух индикаторов для определения сроков покупки и продажи, что улучшает точность торговых сигналов. Использование индикаторов RSI с различными параметрами также делает стратегию более универсальной. Эта стратегия эффективно избегает риска ложных сигналов, которые могут возникнуть с одним индикатором. Улучшением параметров, добавлением вспомогательных индикаторов, механизмов остановки потерь и т. Д.


/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © innocentChart76064

//@version=5
strategy(title = "buy/sell KDJ RSI", overlay=true)

//Define KDJ parameter
kdj_length = input(9, title = "KDJ length")
signal = input(3,title="signal")

// Calculate KDJ values
bcwsma(s,l,m) => 
    _bcwsma = float(na)
    _s = s
    _l = l
    _m = m
    _bcwsma := (_m*_s+(_l-_m)*nz(_bcwsma[1]))/_l
    _bcwsma

c = close
h = ta.highest(high, kdj_length)
l = ta.lowest(low,kdj_length)
RSV = 100*((c-l)/(h-l))
kdj_k = bcwsma(RSV, signal, 1)
kdj_d = bcwsma(kdj_k, signal, 1)
kdj_j = 3 * kdj_k-2 * kdj_d

//Define RSI parameter 
rsi_length_1 = input(6)
rsi_length_2 = input(12)
rsi_length_3 = input(24)
price = close 

//Calculate RSI values
rsi_1 = ta.rsi(price, rsi_length_1)
rsi_2 = ta.rsi(price, rsi_length_2)
rsi_3 = ta.rsi(price, rsi_length_3)

// Trading conditions
longCondition = ta.crossover(kdj_j,kdj_k) and rsi_1 > rsi_2 or ta.crossover(kdj_j,kdj_k) and ta.crossover(rsi_1,rsi_3) or ta.crossover(rsi_1,rsi_3) and rsi_1<40
shortCondition = ta.crossunder(kdj_j,kdj_k) and rsi_1 < rsi_2 or ta.crossunder(kdj_j,kdj_k) and ta.crossunder(rsi_1,rsi_3) or ta.crossunder(rsi_1,rsi_3) and rsi_1>60
// Enter long trade
strategy.entry("Long", strategy.long, when=longCondition)

// Enter short trade
strategy.entry("Short", strategy.short, when=shortCondition)


Больше