Тенденция индекса ренко и относительной энергии в соответствии со стратегией

Автор:Чао Чжан, Дата: 2024-02-04 15:49:19
Тэги:

img

Обзор

Эта стратегия сочетает в себе графики Ренко и индекс относительной силы (RVI), чтобы поймать большинство основных рыночных тенденций.

Логика стратегии

Стратегия строит кирпичи Ренко на основе 9 периодов ATR. Новый зеленый кирпич строится, когда цена закрытия превышает предыдущую высоту кирпича. Новый красный кирпич строится, когда цена закрытия падает ниже предыдущего минимума кирпича. Направление тренда определяется индикатором RVI.

RVI колеблется между 0-1 для измерения относительной силы между давлением на покупку и продажу. Выше 0,5 представляет более сильное давление на покупку, а ниже 0,5 представляет более сильное давление на продажу. Пересечение RVI выше своей плавной скользящей средней дает сигнал покупки, когда давление на продажу ослабевает. Пересечение RVI ниже дает сигнал продажи, когда давление на покупку ослабевает.

Объедините направление кирпича Ренко и сигналы RVI, чтобы соответственно ввести длинные или короткие позиции.

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

  1. Кирпичи Ренко фильтруют обычный рыночный шум и реагируют только на значительное движение цен, избегая сбоев.
  2. РВИ помогает определить обратный тренд, подтверждая торговые сигналы.
  3. Объединение двух индикаторов отфильтровывает шум и позволяет определить основные тенденции.

Риски

  1. Размер кирпича напрямую влияет на частоту торговли.
  2. Неправильные параметры RVI могут вызвать отсутствие сигналов или больше ложных сигналов.
  3. Двойная фильтрация упускает некоторые торговые возможности.

Улучшение

  1. Динамический размер кирпича для адаптации к изменяющейся волатильности.
  2. Оптимизируйте параметры RVI, чтобы найти наилучший баланс.
  3. Проверка стабильности на различных символах и временных рамках.

Заключение

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


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

//@version=3
strategy("Lancelot RR Strategy", overlay=false)
p=9
CO=close-open
HL=high-low
value1 = (CO + 2*CO[1] + 2*CO[2] + CO[3])/6
value2 = (HL + 2*HL[1] + 2*HL[2] + HL[3])/6
num=sum(value1,p)
denom=sum(value2,p)
RVI=denom!=0?num/denom:0
RVIsig=(RVI+ 2*RVI[1] + 2*RVI[2] + RVI[3])/6

rvicloselongcondition = crossunder(RVI, RVIsig)
rvicloseshortcondition = crossover(RVI, RVIsig)

plot(RVI,color=green,style=line,linewidth=1)
plot(RVIsig,color=red,style=line,linewidth=1)
bgcolor(rvicloseshortcondition ? green : na, transp = 75)
bgcolor(rvicloselongcondition ? red : na, transp = 75)

///Renko///
TF = input(title='TimeFrame', defval="D")
ATRlength = input(title="ATR length",  defval=9, minval=2, maxval=100)
SMAlength = input(title="SMA length",  defval=5, minval=2, maxval=100)
SMACurTFlength = input(title="SMA CurTF length",  defval=20, minval=2, maxval=100)

HIGH = request.security(syminfo.tickerid, TF, high)
LOW = request.security(syminfo.tickerid, TF, low)
CLOSE = request.security(syminfo.tickerid, TF, close)
ATR = request.security(syminfo.tickerid, TF, atr(ATRlength))
SMA = request.security(syminfo.tickerid, TF, sma(close, SMAlength))
SMACurTF = sma(close, SMACurTFlength)

RENKOUP = na
RENKODN = na
H = na
COLOR = na
BUY = na
SELL = na
UP = na
DN = na
CHANGE = na

RENKOUP := na(RENKOUP[1]) ? ((HIGH+LOW)/2)+(ATR/2) : RENKOUP[1]
RENKODN := na(RENKOUP[1]) ? ((HIGH+LOW)/2)-(ATR/2) : RENKODN[1]
H := na(RENKOUP[1]) or na(RENKODN[1]) ? RENKOUP-RENKODN : RENKOUP[1]-RENKODN[1]
COLOR := na(COLOR[1]) ? white : COLOR[1]
BUY := na(BUY[1]) ? 0 : BUY[1]
SELL := na(SELL[1]) ? 0 : SELL[1]
UP := false
DN := false
CHANGE := false

if(not CHANGE and close >= RENKOUP[1]+H*3)
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1]+ATR*3
    RENKODN := RENKOUP[1]+ATR*2
    COLOR := lime
    SELL := 0
    BUY := BUY+3

if(not CHANGE and close >= RENKOUP[1]+H*2)
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1]+ATR*2
    RENKODN := RENKOUP[1]+ATR
    COLOR := lime
    SELL := 0
    BUY := BUY+2

if(not CHANGE and close >= RENKOUP[1]+H)
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1]+ATR
    RENKODN := RENKOUP[1]
    COLOR := lime
    SELL := 0
    BUY := BUY+1

if(not CHANGE and close <= RENKODN[1]-H*3)
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1]-ATR*3
    RENKOUP := RENKODN[1]-ATR*2
    COLOR := red
    BUY := 0
    SELL := SELL+3

if(not CHANGE and close <= RENKODN[1]-H*2)
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1]-ATR*2
    RENKOUP := RENKODN[1]-ATR
    COLOR := red
    BUY := 0
    SELL := SELL+2

if(not CHANGE and close <= RENKODN[1]-H)
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1]-ATR
    RENKOUP := RENKODN[1]
    COLOR := red
    BUY := 0
    SELL := SELL+1
    
plotshape(UP, style=shape.arrowup, location=location.bottom, size=size.normal)

renkolongcondition = UP
renkoshortcondition = DN

///Long Entry///
longcondition = UP
if (longcondition)
    strategy.entry("Long", strategy.long)
    
///Long exit///
closeconditionlong = rvicloselongcondition
if (closeconditionlong)
    strategy.close("Long")

Больше