急速なRSIとキャンドルスティック色に基づいた逆転戦略

作者: リン・ハーンチャオチャン, 日付: 2023-09-13 17:24:54
タグ:

この戦略は"Fast RSIとキャンドルスティックカラーに基づいた逆転戦略"と呼ばれる.両方が同時信号を与えるときに逆転取引を入力し,トレンド方向を決定するために,過剰購入/過剰販売レベルとキャンドルスティックカラーを判断するために,急速なRSIを使用する.

急速なRSIは,より小さなパラメータを持ち,価格過剰購入/過剰販売状態をより迅速に検出することができます. RSIが30以下では過剰販売状態を示唆しますが,70以上は過剰購入です.

ランプの色は 白い色がオープンに近い価格の閉店を示し 緑色は上昇し 赤色は価格の低下を表します

取引の論理は

急速なRSIが過剰売り上げを示し 4つの連続した赤いキャンドルが表示された場合,それはロングに行くための強力な逆転信号とみなされます.

RSIが急上昇し 4本の緑色のキャンドルが表示されると ショートシートへの強い逆転の機会を示します

すでにロングポジションを保持している場合は,緑色のキャンドルが1つ表示されたときに終了します.ショートポジションを保持している場合は,赤色のキャンドルが1つ表示されたときに終了します.

この戦略の利点は,逆転信号を正確に決定するために指標コンボを使用することです. しかし,重いポジションサイズ化のために厳格なマネーマネジメントが必要です.ストップ・ロスは重要です.

概要すると,リバース取引は,タイミングを正確に識別する指標に依存する.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()

もっと