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

リスクと報酬のターゲット戦略を備えた高度なダイナミックトレーリングストップ

作者: リン・ハーンチャオチャン,日付: 2024年12月11日 14:57:09
タグ:RSIATRSMA

img

概要

この戦略は,ダイナミック・トライリング・ストップ,リスク・リターン比率,およびRSIの極端な出口を組み合わせた高度な取引システムである.これは,ダイナミック・ストップ・ロスの配置のためにATRと最近の低値を使用しながら,取引入口のための特定のパターン (並行バーパターンとピンバーパターン) を特定し,事前に設定されたリスク・リターン比率に基づいて利益目標を決定する.このシステムは,RSIベースの市場オーバー買い/オーバー売り出口メカニズムも組み込む.

戦略の原則

基本的な論理にはいくつかの重要な要素が含まれます.

  1. 2つのパターンに基づいたエントリー信号:平行バーパターン (大きな下落バーを続く大きな上昇バー) とダブルピンバーパターン.
  2. ATR倍数を使用して動的ストローストロープを N-バーの最近の低値に調整し,ストップ・ロスのレベルが市場の変動に適応することを保証します.
  3. 決まったリスク・リターン比に基づいて設定された利益目標,各取引のリスク値 ® を用いて計算されます.
  4. 固定リスク額と取引ごとにリスク価値に基づいて動的に計算されたポジションサイズ化
  5. RSI エクストリーム アクシートメカニズムは,市場の極端な値でポジションを閉じる.

戦略 の 利点

  1. ダイナミックリスク管理:ストップ・ロスのレベルは,ATRと最近の低値の組み合わせによって市場の変動に動的に調整されます.
  2. 正確なポジション制御: 固定リスク額に基づくポジションサイズ化により,取引ごとに一貫したリスクが確保されます.
  3. 多次元出口メカニズム: 遅延停止,固定利益目標,およびRSIの極端を組み合わせます.
  4. フレキシブルな取引方向性: 長期のみ,短期のみ,または双方向取引のオプション.
  5. 明確なリスク・リターン設定:事前に決定されたリスク・リターン比は,各取引の明確な利益目標を定義します.

戦略リスク

  1. パターン認識精度リスク: 並列棒やピンバーの誤った識別の可能性
  2. ストップ・ロスの滑り込みリスク: 変動する市場では大きな滑り込みが発生する可能性があります.
  3. RSIの早期離脱: 強いトレンド市場の早期離脱につながる可能性があります.
  4. 固定リスク/報酬比制限:最適なリスク/報酬比は,市場状況によって異なる可能性があります.
  5. パラメータ最適化 過適性リスク:複数のパラメータの組み合わせが過適化につながる可能性があります.

戦略の最適化方向

  1. 入力シグナル強化: 容量やトレンド指標などのパターンの確認指標を追加します
  2. ダイナミック・リスク・リターン比: 市場の変動に基づいてリスク・リターン比を調整する.
  3. インテリジェントパラメータアダプテーション: ダイナミックパラメータ最適化のための機械学習アルゴリズムを導入する.
  4. 複数のタイムフレームの確認:複数のタイムフレームに信号の確認メカニズムを追加する.
  5. 市場環境の分類: 異なる市場条件に異なるパラメータセットを適用する.

概要

これは,完全な取引システムを構築するために,複数の成熟した技術分析コンセプトを組み合わせた,よく設計された取引戦略です.この戦略の強みは,包括的なリスク管理システムと柔軟な取引ルールにあります.一方で,パラメータ最適化と市場適応性に注意を払う必要があります.提案された最適化方向性を通じて,戦略のさらなる改善に余地があります.


/*backtest
start: 2024-11-10 00:00:00
end: 2024-12-09 08:00:00
period: 2h
basePeriod: 2h
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/
// © ZenAndTheArtOfTrading | www.TheArtOfTrading.com
// @version=5
strategy("Trailing stop 1", overlay=true)

// Get user input 
int     BAR_LOOKBACK    = input.int(10, "Bar Lookback")
int     ATR_LENGTH      = input.int(14, "ATR Length")
float   ATR_MULTIPLIER  = input.float(1.0, "ATR Multiplier")
rr                      = input.float(title="Risk:Reward", defval=3)

// Basic definition
var float shares=na
risk = 1000
var float R=na
E = strategy.position_avg_price

// Input option to choose long, short, or both
side = input.string("Long", title="Side", options=["Long", "Short", "Both"])

// RSI exit option
RSIexit = input.string("Yes", title="Exit at RSI extreme?", options=["Yes", "No"])
RSIup = input(75)
RSIdown = input(25)

// Get indicator values 
float atrValue = ta.atr(ATR_LENGTH)

// Calculate stop loss values
var float trailingStopLoss = na 
float longStop  = ta.lowest(low, BAR_LOOKBACK) - (atrValue * ATR_MULTIPLIER)
float shortStop = ta.highest(high, BAR_LOOKBACK) + (atrValue * ATR_MULTIPLIER)

// Check if we can take trades 
bool canTakeTrades = not na(atrValue)
bgcolor(canTakeTrades ? na : color.red)

//Long pattern
    //Two pin bar
onepinbar = (math.min(close,open)-low)/(high-low)>0.6 and math.min(close,open)-low>ta.sma(high-low,14)
twopinbar = onepinbar and onepinbar[1]
notatbottom = low>ta.lowest(low[1],10)
    // Parallel
bigred = (open-close)/(high-low)>0.8 and high-low>ta.sma(high-low,14)
biggreen = (close-open)/(high-low)>0.8 and high-low>ta.sma(high-low,14)
parallel = bigred[1] and biggreen  
atbottom = low==ta.lowest(low,10)

// Enter long trades (replace this entry condition)
longCondition = parallel 
if (longCondition and canTakeTrades and  strategy.position_size == 0 and (side == "Long" or side == "Both"))
    R:= close-longStop
    shares:= risk/R
    strategy.entry("Long", strategy.long,qty=shares)

// Enter short trades (replace this entry condition)
shortCondition = parallel
if (shortCondition and canTakeTrades and strategy.position_size == 0 and (side == "Short" or side == "Both"))
    R:= shortStop - close
    shares:= risk/R
    strategy.entry("Short", strategy.short,qty=shares)

// Update trailing stop
if (strategy.position_size > 0)
    if (na(trailingStopLoss) or longStop > trailingStopLoss)
        trailingStopLoss := longStop
else if (strategy.position_size < 0)
    if (na(trailingStopLoss) or shortStop < trailingStopLoss)
        trailingStopLoss := shortStop
else
    trailingStopLoss := na

// Exit trades with trailing stop
strategy.exit("Long Exit",  "Long",  stop=trailingStopLoss, limit = E + rr*R )
strategy.exit("Short Exit", "Short", stop=trailingStopLoss, limit = E - rr*R)

//Close trades at RSI extreme
if ta.rsi(high,14)>RSIup and RSIexit == "Yes"
    strategy.close("Long")
if ta.rsi(low,14)<RSIdown and RSIexit == "Yes"
    strategy.close("Short")

// Draw stop loss 
plot(trailingStopLoss, "Stop Loss", color.red, 1, plot.style_linebr)

関連性

もっと