この記事では,相対強度指数 (RSI) とトレーリングストップに基づいてロングに行くための定量的な取引戦略を紹介しています.この戦略は,RSI指標を使用して,過剰購入および過剰販売の市場状況を決定し,市場が過剰販売されたときにロングポジションを入力し,過剰購入されたときにポジションを閉じます.同時に,この戦略はリスクを制御するためにパーセントベースのトレーリングストップを使用します.これは強い市場の上昇傾向を捉えるために設計された古典的なトレンドフォロー戦略です.
この戦略の核心は相対強度指数 (RSI) である.RSIは,期間中の価格変動の大きさを測定するために使用されるモメントオシレーターである.その計算式は:
RS = Average gain over N days / Average loss over N days
RSI = 100 - 100 / (1 + RS)
ここで N は RSI を計算する時間帯で,通常は 14 に設定されます.
戦略の論理は次のとおりです
この戦略は,市場が下落から上昇への移行の開始時にポジションを入力し,主要な上昇傾向を把握するために,上昇市場の終わりに退場しようとします.
この記事では,RSIとトレーリングストップに基づいてロングに行くための定量的な取引戦略を提示した.この戦略は,リスクを制御するためにパーセントベースのトレーリングストップを使用しながら,RSIオーバーバイトとオーバーセールシグナルを使用してポジションを入力および退出する.これは,初心者が学ぶのに適したシンプルで実践的なトレンドフォロー戦略である.しかし,レンジバインド市場でのパフォーマンスが悪いことやストップ損失とポジション管理の柔軟性の欠如などのいくつかの制限もあります.これらの欠点を解決するために,我々は,より強力なリターンを得るためにトレンドフィルタリング,ダイナミックストップ損失,ポジション管理,ロングショートヘッジなどの側面で戦略を最適化することができます.定量的な取引戦略の開発は,継続的な最適化と繰り返しのプロセスであり,投資家は実践で戦略を常に要約し,磨く必要があります.
/*backtest start: 2023-03-02 00:00:00 end: 2024-03-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("RSI Strategy (Long)", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100) length = input( 14 ) overSold = input( 30 ) overBought = input( 70 ) price = close vrsi = ta.rsi(price, length) co = ta.crossover(vrsi, overSold) cu = ta.crossunder(vrsi, overBought) // *** Signals *** enter_long = ta.crossover(vrsi, overSold) enter_short = ta.crossunder(vrsi, overBought) close_long = ta.crossunder(vrsi, overBought) close_short = ta.crossunder(vrsi, overBought) // *** Risk management *** entry_price = close percent_diff = input(5) stop_loss_price_long = (1 - percent_diff / 100.) * entry_price stop_loss_price_short = (1 + percent_diff / 100.) * entry_price // *** Positions *** if enter_long and strategy.position_size == 0 strategy.entry("Long", strategy.long) strategy.exit("SL Long", "Long", stop = stop_loss_price_long) if enter_short and strategy.position_size == 0 strategy.entry("Short", strategy.short, qty=.001) strategy.exit("SL short", "Short", stop = stop_loss_price_short) if close_long strategy.close("Long", "Exit Long") if close_short strategy.close("Short", "Exit Short")