Стратегия отмены, основанная на быстром RSI и цветах свечей

Автор:Чао Чжан, Дата: 2023-09-13 17:24:54
Тэги:

Эта стратегия называется Стратегия обратного движения на основе быстрого RSI и цветов свечей. Она использует быстрый RSI для оценки уровней перекупа / перепродажи и цветов свечей для определения направления тренда, входя в обратные сделки, когда оба дают совпадающие сигналы.

Быстрый RSI имеет меньшие параметры и может быстрее обнаруживать условия перекупления/перепродажи цены.

Цвета свечей показывают, что белые цены закрываются близко к открытию, зеленый цвет представляет рост, а красные флаги - падение цен.

Логика торговли такова:

Когда быстрый RSI показывает перепроданность и появляются 4 последовательных красных свечи, это считается сильным сигналом обворота для длинного хода.

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

Если вы уже занимаете длинные позиции, выходите, когда появляется одна зеленая свеча.

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

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


/*backtest
start: 2022-09-06 00:00:00
end: 2023-01-20 00:00:00
period: 4d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Hundred Strategy v1.0", shorttitle = "Hundred str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
lev = input(5, defval = 5, minval = 1, maxval = 100, title = "leverage")
onlyprofit = input(true, defval = true, title = "Only Profit")
fast = input(7, defval = 7, minval = 2, maxval = 50, title = "Fast RSI Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Price")
rsibars = input(1, defval = 1, minval = 1, maxval = 20, title = "RSI Bars")
cbars = input(4, defval = 4, minval = 1, maxval = 20, title = "Color Bars")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Fast RSI
fastup = rma(max(change(rsisrc), 0), fast)
fastdown = rma(-min(change(rsisrc), 0), fast)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Limits
bar = close > open ? 1 : close < open ? -1 : 0
uplimit = 100 - limit
dnlimit = limit

//RSI Bars
upsignal = fastrsi > uplimit ? 1 : 0
dnsignal = fastrsi < dnlimit ? 1 : 0
uprsi = sma(upsignal, rsibars) == 1
dnrsi = sma(dnsignal, rsibars) == 1

//Signals
long = strategy.position_size >= 0
short = strategy.position_size <= 0
up = sma(bar, cbars) == -1 and long and dnrsi
dn = sma(bar, cbars) == 1 and short and uprsi
profit = (strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price) or onlyprofit == false
exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and profit
lot = strategy.position_size == 0 ? strategy.equity / close * lev : lot[1]

//Trading
if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

Больше