Umkehrstrategie auf der Grundlage des schnellen RSI und der Kerzenfarben

Schriftsteller:ChaoZhang, Datum: 2023-09-13 17:24:54
Tags:

Diese Strategie heißt Reversal Strategy Based on Fast RSI and Candlestick Colors. Sie verwendet den schnellen RSI, um überkaufte/überverkaufte Niveaus und Candlestickfarben zu beurteilen, um die Trendrichtung zu bestimmen, und tritt in Umkehrtrades ein, wenn beide gleichzeitige Signale geben.

Der schnelle RSI hat kleinere Parameter und kann Preissteigerungen/Überverkaufssituationen schneller erkennen.

Die Kerzenfarben zeigen, dass weiße Preise nahe der Öffnung schließen, grün steigen und rote Flaggen fallen.

Die Handelslogik lautet:

Wenn ein schneller RSI einen Überverkauf anzeigt und 4 aufeinanderfolgende rote Kerzen erscheinen, gilt dies als ein starkes Umkehrsignal für den Long.

Wenn der schnelle RSI überkauft ist und 4 gerade grüne Kerzen erscheinen, signalisiert dies eine starke Umkehrmöglichkeit für einen Short.

Wenn Sie bereits Long-Positionen halten, treten Sie aus, wenn eine grüne Kerze erscheint.

Der Vorteil dieser Strategie besteht darin, Indikatorenkombinationen zu verwenden, um Umkehrsignale genau zu bestimmen.

Zusammenfassend lässt sich sagen, dass der Umkehrhandel auf Indikatoren beruht, die den Zeitpunkt genau bestimmen. Eine vernünftige Anwendung des RSI plus Candlestick-Informationen kann die Strategieleistung verbessern.


/*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()

Mehr