RSI移動平均のクロスオーバー戦略

作者: リン・ハーンチャオチャン開催日:2023年11月7日15時35分58秒
タグ:

img

概要

RSI移動平均クロスオーバー戦略 (RSI Moving Average Crossover Strategy) は,主に仮想通貨取引に使用される戦略である.それはRSI指標に移動平均を適用し,RSIと移動平均との間のクロスオーバーに基づいて取引する.また,それが作られている指標を含んでいる.

戦略の論理

戦略はまず,RSI指標を計算する.RSI指標は,一定の期間における上下向きの動きに基づいて価格の強さを反映する.RSIが70を超えると過買い,30を下回ると過売りとみなされる.

この戦略は,RSI指標に移動平均値を適用します.移動平均値はランダムな変動をフィルタリングし,トレンド方向を決定することができます.ここで10期間のRSI移動平均値を設定します.

RSIが移動平均値を超えると,それは購入信号とみなされる. RSIが移動平均値を下回ると,それは販売信号とみなされる.取引はこれらの2つの信号に従って行われます.

このコードでは,RSIの長度周期を示す指標が最初に計算されます.その後,RSIの10期移動平均maが計算されます.maがrsiを超えると,それは購入します.maがrsiを下回ると,それは販売します.

さらに,コードは,rsi=70とrsi=30の区画線もプロットしている. 購入または販売時に対応する信号矢印がチャートにマークされている.

利点分析

  • RSIは過買いと過売りの状況を判断できる.移動平均はランダムな変動をフィルタリングすることができる.両者の組み合わせはトレンド逆転点を特定することができる.

  • RSI移動平均クロスオーバーは 比較的成熟した取引戦略であり 誤った信号をフィルタリングすることができます

  • 戦略コードはシンプルで明確で,理解が容易です.プロット機能は,取引シグナルを明確に観察するために完了しています.

  • この戦略は 比較的明らかなトレンドを持つ暗号通貨にはうまく機能します

リスク分析

  • 誤ったRSIと移動平均周期パラメータは誤った信号を多く生成する可能性があります.

  • 指標のクロスオーバーだけに頼るだけでは 完全に罠にはまらない.トレンド分析を組み合わせる必要がある.

  • 取引コストは利益に影響を及ぼし得る.ポジションサイズを最適化する必要がある.

  • 仮想通貨市場が不安定で 損失を防ぐために注意が必要です

リスクに対処するために,指標を最適化するためにパラメータを調整し,ポジションサイズを削減し,ストップロスを設定し,トレンド分析を使用してシグナルをフィルターすることができます.

オプティマイゼーションの方向性

  • RSIと移動平均の最適な組み合わせを異なる期間のパラメータで研究します.

  • トレンドが強いときはポジションサイズを増やし,トレンドが不透明なときは減らします.

  • 動的ストップ損失を設定して トレンドを追いかける

  • RSIを他の指標と組み合わせて新しい取引信号を形成する方法を検討します

  • この戦略に基づく機械学習モデルを探求し 勝利率を向上させる

概要

RSI移動平均クロスオーバー戦略は,トレンドとフィルタリング指標の利点を組み合わせ,比較的成熟し信頼性があります. 戦略論理はシンプルで明確で,コード実装もかなり完了しています. 全体的に,それはかなり良い暗号通貨取引戦略です. しかし,すべての戦略は最適化が必要です. より良い戦略パフォーマンスを達成するために,傾向分析と組み合わせて,絶えずテストと調整が必要です.


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

//@version=4
strategy("RSI w MA Strategy", shorttitle="RSI w MA Strategy", overlay=false, initial_capital=10000, currency='USD',process_orders_on_close=true)

//TIME FRAME AND BACKGROUND CONTROL/////////////////////////////////////////////
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(01, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)
testStopYear = input(2022, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? 
   color.teal : na
//bgcolor(testPeriodBackgroundColor, transp=50)
testPeriod() => true
////////////////////////////////////////////////////////////////////////////////

src = close, len = input(27, minval=1, title="Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
window = input(10, "RSI MA Window")
ma = sma(rsi,window)
plot(rsi, color=color.orange)
colorr= ma > rsi ? color.red : color.green
plot(ma,color=colorr)
band1 = hline(70)
band0 = hline(30)
fill(band1, band0, color=color.purple, transp=90)
diff = rsi - ma

plot(diff,style= plot.style_columns,transp=50,color = colorr)

plotshape(crossunder(rsi,ma)?rsi:na,title="top",style=shape.triangledown,location=location.absolute,size=size.tiny,color=color.red,transp=0)
plotshape(crossover(rsi,ma)?rsi:na,title="bottom",style=shape.triangleup,location=location.absolute,size=size.tiny,color=color.lime,transp=0)

buySignal = crossover(rsi,ma)
sellSignal = crossunder(rsi,ma)

//TRADE CONTROL/////////////////////////////////////////////////////////////////
if testPeriod()
    if buySignal
        strategy.close("Short", qty_percent = 100, comment = "Close Short")
        strategy.entry("Long", strategy.long, qty=.1)

    if sellSignal
        strategy.close("Long", qty_percent = 100, comment = "Close Long")
        strategy.entry("Short", strategy.short, qty=.1)

////////////////////////////////////////////////////////////////////////////////













もっと