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

ATRベースのダイナミックなポジションマネジメントを備えたオープン後のブレイクアウト取引戦略

作者: リン・ハーンチャオチャン,日付: 2024年11月12日 14:26:23
タグ:BBエイマRSIADXATR

img

概要

この戦略は,複数の技術指標に基づいた市場開拓取引システムであり,主にドイツと米国の市場開拓セッションをターゲットとしています.ボリンジャー帯を使用して統合段階を特定し,短期および長期指数関数移動平均値でトレンド方向を確認し,RSIとADXを使用して取引信号をフィルタリングし,ATRを使用して動的にポジションを管理します.

戦略の原則

この戦略は,価格が中間帯に近いときに統合を考慮して,低波動性段階を特定するために14期ボリンジャーバンド (1.5標準偏差) を使用する. 10期および200期EMAを使用し,両平均値以上の価格を必要とするブイシストレンドを確認する. 7期RSIは過剰販売されない条件 (>30) を保証し,7期ADXはトレンド強度 (>10) を確認する. この戦略は,少なくとも2つのタッチを必要とするレジスタンスレベルのために過去20個のキャンドルの高値を分析する. エントリーは他の条件を満たしたレジスタンスブレイク時に発生し,ストップロスのために2xATR,利益を取るために4xATRを使用する.

戦略 の 利点

  1. 複数の技術指標のクロスバリダーションは誤った信号を減らす
  2. ATRベースの動的ストップ・ロストとテイク・プロフィート
  3. 高波動性のある開会セッションに焦点を当てています
  4. konsolide-breakout パターンによって強い傾向を把握する
  5. リスク管理の包括的なメカニズム

戦略リスク

  1. 複数の指標が取引機会を逃す可能性があります
  2. 波動性のあるオープニングセッションは,ストップ・ロスを引き起こす可能性があります.
  3. 急速な市場の逆転は,大きな損失を引き起こす可能性があります 適切なポジションサイズ,厳格なストップ・ロスの実行,過剰取引を避けるよう推奨します.

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

  1. 異なる市場のための指標パラメータを調整する
  2. ブレイクアウトの有効性を確認するために,ボリューム指標を追加することを検討する.
  3. 信号信頼性の追加的な技術指標を組み込む
  4. スリップの影響を減らすためにエントリータイミングを最適化
  5. リスク・リターン比を向上させるため,利益/損失の管理を強化する

概要

この戦略は,多次元的な技術分析を通じて,リスク管理のために動的なストップ・ロストとテイク・プロフィートを採用し,市場開拓セッション中に取引機会を把握する.明確な論理と堅牢なリスク管理により,良い実用性を示しています.継続的な最適化と調整により戦略のパフォーマンスをさらに向上させることができます.


/*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"}]
*/

//@version=5
strategy("Post-Open Long Strategy with ATR-based Stop Loss and Take Profit (Separate Alerts)", overlay=true)

// Parametri per Bande di Bollinger ed EMA
lengthBB = 14
mult = 1.5  // Bande di Bollinger più strette per timeframe inferiori
emaLength = 10  // EMA più breve per una rilevazione di trend più rapida
emaLongLength = 200  // EMA a lungo termine per il filtraggio del trend

// Parametri per RSI
lengthRSI = 7
rsiThreshold = 30

// Parametri per ADX
adxLength = 7
adxSmoothing = 7
adxThreshold = 10

// Filtro temporale - Solo durante l'apertura dei mercati tedesco e USA
daxOpen = (hour >= 8 and hour < 12)
usOpen = (hour == 15 and minute >= 30) or (hour >= 16 and hour < 19)

// Calcolo delle Bande di Bollinger
smaBB = ta.sma(close, lengthBB)
basis = smaBB
dev = mult * ta.stdev(close, lengthBB)
upperBand = basis + dev
lowerBand = basis - dev

// Calcolo delle EMA (breve e lungo termine)
ema = ta.ema(close, emaLength)  // EMA più breve
emaLong = ta.ema(close, emaLongLength)  // EMA a lungo termine per il filtraggio del trend

// Calcolo RSI
rsi = ta.rsi(close, lengthRSI)

// Calcolo ADX
[plusDI, minusDI, adx] = ta.dmi(adxLength, adxSmoothing)

// Calcolo ATR per Stop Loss e Take Profit dinamici
atrLength = 14
atrStopLossMultiplier = 2.0  // Moltiplicatore per Stop Loss
atrTakeProfitMultiplier = 4.0  // Moltiplicatore per Take Profit modificato a 4.0
atrValue = ta.atr(atrLength)  // Valore ATR calcolato qui

// Condizione di lateralizzazione - Prezzo vicino alla SMA delle Bande di Bollinger
lateralization = math.abs(close - smaBB) < (0.01 * close) and (daxOpen or usOpen)

// Identificazione della resistenza e del breakout
var float resistanceLevel = na
resistanceTouches = 0

for i = 1 to 20
    if high[i] > high[i+1] and high[i] > high[i-1]
        resistanceLevel := high[i]
        resistanceTouches := resistanceTouches + 1

// Condizione di Breakout: Il prezzo attuale supera la resistenza identificata
breakoutCondition = close > resistanceLevel and resistanceTouches >= 2

// Filtro di mercato rialzista a lungo termine - Entrare solo se il prezzo è sopra la EMA a 200 periodi
bullMarket = close > emaLong

// Filtro di trend a breve termine
trendFilter = ta.ema(close, emaLength)  // Filtro di trend a breve termine
trendDown = close < trendFilter  // Condizione di downtrend basata sul trend a breve termine

// Evitare l'entrata durante un pullback - Verifica se le due candele precedenti sono rosse
firstRedCandle = close[1] < open[1]  // La prima candela precedente è rossa
secondRedCandle = close[2] < open[2]  // La seconda candela precedente è rossa
avoidPullbackCondition = not (firstRedCandle and secondRedCandle)  // Entrare solo se non entrambe sono rosse

// Condizione Panic Candle - La candela deve chiudere negativa
panicCandle = close < open and (daxOpen or usOpen)

// Condizione di Entrata Long
longCondition = breakoutCondition and lateralization and close > ema and rsi > rsiThreshold and adx > adxThreshold and not trendDown and avoidPullbackCondition and bullMarket and panicCandle

// Stop Loss e Take Profit dinamici basati su ATR
atrStopLoss = close - (atrValue * atrStopLossMultiplier)  // Stop Loss dinamico usando ATR con moltiplicatore 2.0
atrTakeProfit = close + (atrValue * atrTakeProfitMultiplier)  // Take Profit dinamico usando ATR con moltiplicatore 4.0

// Entrata Long: Ordine eseguito alla chiusura della candela
if (longCondition and strategy.opentrades == 0 and barstate.isconfirmed)
    strategy.entry("Long", strategy.long)

// Disegna linee per Stop Loss e Take Profit
// line.new(x1=bar_index, y1=atrStopLoss, x2=bar_index + 1, y2=atrStopLoss, color=color.red, width=2, style=line.style_solid)  // Linea di Stop Loss (rossa)
// line.new(x1=bar_index, y1=atrTakeProfit, x2=bar_index + 1, y2=atrTakeProfit, color=color.green, width=2, style=line.style_solid)  // Linea di Take Profit (verde)

// Uscita: Stop Loss o Take Profit raggiunti
if (strategy.opentrades > 0)
    strategy.exit("Exit Long", "Long", stop=atrStopLoss, limit=atrTakeProfit)

// Alert: Differenziati per Entrata e Uscita utilizzando strategy.order.action
alert_message = "Azione: {{strategy.order.action}}, Prezzo: {{close}}, Dimensione Posizione: {{strategy.position_size}}"


関連性

もっと