資源の読み込みに... 荷物...

RSI最適化システムとダブルタイムフレームスーパートレンド

作者: リン・ハーンチャオチャン,日付: 2024年11月25日 17:27:21
タグ:RSIATR

img

概要

この戦略は,スーパートレンド指標とRSIをベースとした二重タイムフレーム取引システムである. 120分および15分間のタイムフレームからの技術分析指標を組み合わせ,RSIを利益獲得のために利用しながら中期トレンド方向を把握するためにSuperTrendを使用する.この戦略は,パーセントアロケーションを通じてポジションサイズを実装し,パーセントベースの利益を得る条件を含む.

戦略の原則

基本的な論理はいくつかの重要な要素に基づいています.

  1. トレンドを決定する主なツールとして120分間の超トレンド指標を使用し,ATR期間は14で因数3.42です.
  2. 超トレンドラインの価格クロスオーバーを通じて取引信号を生成します. 長いエントリで上昇するクロスと短いエントリで低下するクロスです.
  3. 市場過剰購入/過剰販売状況のための補完ツールとして,周期5の15分間のRSI指標を使用します.
  4. RSI が過買いゾーン (95) に到達すると長ポジションを閉じる.過売りゾーン (5) で短ポジションを閉じる.
  5. 平均入場価格に対して計算された30%の利益率を設定する

戦略 の 利点

  1. 複数のタイムフレームを組み合わせることで,信号の信頼性が向上し,偽信号は減少します
  2. オープティマイズされたスーパートレンドパラメータは,過剰な取引を回避しながらトレンド感度をバランスします.
  3. 厳格なRSI極限値 (5と95) は,極限条件でのみポジションの閉店を保証する.
  4. ポジションサイズ化には,固定資本の割合 (35%) が使われており,利益の可能性を保持しながらリスクを効果的にコントロールできます
  5. 新しいポジションを開く前に自動でリバースポジションを閉じる.同時に長期と短期を保持しない.

戦略リスク

  1. 2つの時間枠によるアプローチは,分散市場における遅れを引き起こし,引き上げ管理を必要とする可能性があります.
  2. 厳しいRSIの極端な値は,利益を得る機会を逃す可能性があります.
  3. 利得率30%は攻撃的で 不安定な市場から早期離脱につながる可能性があります
  4. ストップ・ロスの条件がない場合,急激なトレンド逆転で重大な損失が生じる可能性があります.
  5. 35%のポジションサイズ化が比較的積極的で,極端な変動の際に高いリスクが生じる

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

  1. ATR ベースの遅延停止を考慮し,ダイナミックストップ・ロスのメカニズムを追加することを推奨する
  2. RSIの過買い/過売値が10と90に調整され,適応性が向上する.
  3. 信号の確認のために音量指標を追加できます
  4. ATR または変動指標を用いて市場変動に基づく動的ポジションサイズを検討する
  5. 弱いトレンドをフィルタリングするために,DMIやADXのようなトレンド強度フィルターを追加することを提案します.

概要

これは,明確な論理を持つよく構造化されたトレンドフォロー戦略である.リスク制御を維持しながらトレンドを把握するために,異なるタイムフレームの技術指標を組み合わせます.最適化のための余地がある一方で,全体的なデザインは定量的な取引原則に準拠しています.トレーダーはライブ取引の前にパラメータをバックテストし最適化し,リスク耐性に応じてポジションサイズを調整する必要があります.


/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © felipemiransan

//@version=5
strategy("Supertrend Strategy", overlay=true)

// Function for Supertrend
supertrend(_factor, _atrPeriod) =>
    [out, _] = ta.supertrend(_factor, _atrPeriod)
    out

// Supertrend Settings
factor = input.float(3.42, title="Supertrend Factor")
atrPeriod = input.int(14, title="ATR Period")
tf2 = input.timeframe("120", title="Supertrend Timeframe")

// RSI Settings
rsi_tf = input.timeframe("15", title="RSI Timeframe")
rsiLength = input.int(5, title="RSI Length")
rsiUpper = input.int(95, title="RSI Upper Limit")  
rsiLower = input.int(5, title="RSI Lower Limit")   

// RSI Timeframe
rsi_tf_value = request.security(syminfo.tickerid, rsi_tf, ta.rsi(close, rsiLength), lookahead=barmerge.lookahead_off, gaps=barmerge.gaps_off)

// Supertrend Timeframe
supertrend_tf2 = request.security(syminfo.tickerid, tf2, supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off, gaps=barmerge.gaps_off)

// Take Profit Settings (Percentage in relation to the average price)
takeProfitPercent = input.float(30, title="Take Profit", step=0.1) / 100

// Entry conditions based on price crossover with Supertrend Timeframe
longCondition = ta.crossover(close, supertrend_tf2) and barstate.isconfirmed
shortCondition = ta.crossunder(close, supertrend_tf2) and barstate.isconfirmed

// Execution of reversal orders with closing of previous position
if (longCondition)
    // Close a short position before opening a long position
    if (strategy.position_size < 0)
        strategy.close("Short", comment="Close Short for Long Entry")
    strategy.entry("Long", strategy.long)

if (shortCondition)
    // Close long position before opening short position
    if (strategy.position_size > 0)
        strategy.close("Long", comment="Close Long for Short Entry")
    strategy.entry("Short", strategy.short)

// Calculate take profit levels relative to the average entry price
if (strategy.position_size > 0)
    takeProfitLong = strategy.position_avg_price * (1 + takeProfitPercent)
    strategy.exit("Take Profit Long", "Long", limit=takeProfitLong)

if (strategy.position_size > 0 and (rsi_tf_value >= rsiUpper))
    strategy.close("Long", comment="RSI Take Profit Long")

if (strategy.position_size < 0)
    takeProfitShort = strategy.position_avg_price * (1 - takeProfitPercent)
    strategy.exit("Take Profit Short", "Short", limit=takeProfitShort)

if (strategy.position_size < 0 and (rsi_tf_value <= rsiLower))
    strategy.close("Short", comment="RSI Take Profit Short")

// Plot Supertrend timeframe with commit check to avoid repainting
plot(barstate.isconfirmed ? supertrend_tf2 : na, color=color.blue, title="Supertrend Timeframe (120 min)", linewidth=1)

// Plot RSI for visualization
plot(rsi_tf_value, "RSI", color=color.purple)
hline(rsiUpper, "RSI Upper", color=color.red)
hline(rsiLower, "RSI Lower", color=color.green)




関連性

もっと