
この戦略は,相対的に強い指数 ((RSI) をベースに,ショートラインの取引戦略を設計し,主に15分間の時間枠での取引に使用しています. この戦略は,RSIの指標を計算して,市場がオーバーバイをオーバーセールしているかどうかを判断し,買入と売却のシグナルを発信します. RSIの指標上での低点30を突破すると買入シグナルが生み出され,RSIの指標下での高点70を突破すると売却シグナルが生み出されます. この戦略は,ショートラインの範囲での取引に適用され,中間の波動を捕捉して利益を得ることができます.
RSI指数は,一定の時間周期における価格の上昇・下降の比率を計算して,市場が過買か過売かを判断する技術的分析ツールである.RSI指数の数値は0から100の間の範囲である.数値は30以下で資産が過売されていることを示し,数値は70以上で資産が過買されていることを示している.
この戦略は,RSI指標のパラメータを14周期で設定し,超買線は70で,超売り線は30である.RSIが下から30を突破すると,買入シグナルが生じ,これは市場が超売りから多頭へ移行することを意味する.RSIが上から下から70を突破すると,販売シグナルが生じ,これは市場が多頭から空頭へ移行することを意味する.戦略は,シグナルを受け取った後,全体の口座資金の1倍杆で多頭または空頭に向け,ショートライン取引を利益に導く.
この戦略の最大の利点は,ルールは単純で明確で,容易に理解し,実行することです. 相対的強さ指数は,市場における過剰買い過剰売り現象を判断するために広く使用される古典的な定量指標です. 戦略自体は,市場の将来の動きと価格目標を予測する必要はありません. RSI指標の信号に従うだけで,戦略の最適化が困難になります.
もう一つの優点は,戦略の適応性である.この戦略は,任意の品種および任意の時間枠で適用され,中短線捕捉区間の振動に特に適しています.さらに,戦略は,RSI周期,超買線,超売線,パラメータスペースが小さい,最適なパラメータ組み合わせをテストし,最適化するために,わずか3つのパラメータを最適化する必要があります.
この戦略の最大のリスクは,ポジションの保持時間が不確実である.市場が長期にわたって過剰買いまたは過剰売りが発生すると,戦略のポジションの保持時間が長すぎると,より大きな損失を負うことになる.このとき,リスクを制御するために,時宜の止損が必要である.
もう一つのリスクは,取引頻度が過度に高すぎることである. RSIが超買い超売りラインの近くで上下波動するときは,頻繁に買入・売却のシグナルを誘発し,取引手数料とスライドポイントコストを増加させる. これは,無意味な取引を減らすために,超買い超売り区間を拡大して,適切なパラメータの調整を必要とする.
この戦略は以下の点で最適化できます.
RSIパラメータを最適化し,周期パラメータを調整し,オーバーバイオーバーセールラインの位置を最適化して最適なパラメータの組み合わせを見つける
ストップ・ストップ・ストップの戦略を増やし,合理的なストップ・ストップとストップ・ストップを設定する.
フィルタリング条件を追加し,無意味な取引を避ける.例えば,最小変動幅の設定,取引量フィルタなど.
資金活用率を最適化し,ダイナミックなポジションコントロールを設定する
戦略的安定性を高めるために,他の指標と組み合わせる
この戦略は,RSI指標をベースにシンプルで実用的なショートライン取引戦略を設計した. 戦略のシグナル規則は明確で,実行しやすい,資金活用率が高く,中短線捕獲市場における超買い超売り現象のネチラルな取引に適しています. この戦略は,継続的なテストと最適化により,非常に安定した信頼性の高い定量取引システムになることができます.
/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("RSI Strategy", overlay=true)
length = input( 14 )
overSold = input( 30 )
overBought = input( 70 )
sl_inp = input(10.0, title='Stop Loss %')/100
tp_inp = input(1.0, title='Take Profit %')/100
haOpen = 0.0
haOpen := haOpen[1]
st_level = strategy.position_avg_price * (1 - sl_inp)
take_level = strategy.position_avg_price * (1 + tp_inp)
price = close
vrsi = rsi(price, length)
co = crossover(vrsi, overSold)
cu = crossunder(vrsi, overBought)
strategy.initial_capital =50000
orderSize = ((strategy.initial_capital * 1) / close)
if (not na(vrsi))
if (co)
strategy.order("RsiLE", strategy.long, orderSize, take_level, st_level, comment="RsiLE")
if (cu)
strategy.close("RsiLE")//strategy.entry("RsiSE", strategy.short, qty=orderSize, comment="RsiSE")
plotshape(not na(vrsi) and co and haOpen == 0.0, style=shape.labelup, location=location.belowbar, color=color.green, size=size.tiny, title="buy label", text="BUY", textcolor=color.white)
plotshape(not na(vrsi) and co and haOpen == 1.0, style=shape.labelup, location=location.belowbar, color=color.orange, size=size.tiny, title="buy label", text="INC", textcolor=color.white)
plotshape(not na(vrsi) and cu and haOpen == 1.0, style=shape.labeldown, location=location.abovebar, color=color.red, size=size.tiny, title="sell label", text="SELL", textcolor=color.white)
if (not na(vrsi))
if (co)
haOpen := 1.0
if (cu)
haOpen := 0.0
//strategy.exit("Stop Loss/TP","RsiLE", stop=stop_level, limit=take_level)
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)