この戦略は,複数の技術指標に基づいた市場開拓取引システムであり,主にドイツと米国の市場開拓セッションをターゲットとしています.ボリンジャー帯を使用して統合段階を特定し,短期および長期指数関数移動平均値でトレンド方向を確認し,RSIとADXを使用して取引信号をフィルタリングし,ATRを使用して動的にポジションを管理します.
この戦略は,価格が中間帯に近いときに統合を考慮して,低波動性段階を特定するために14期ボリンジャーバンド (1.5標準偏差) を使用する. 10期および200期EMAを使用し,両平均値以上の価格を必要とするブイシストレンドを確認する. 7期RSIは過剰販売されない条件 (>30) を保証し,7期ADXはトレンド強度 (>10) を確認する. この戦略は,少なくとも2つのタッチを必要とするレジスタンスレベルのために過去20個のキャンドルの高値を分析する. エントリーは他の条件を満たしたレジスタンスブレイク時に発生し,ストップロスのために2xATR,利益を取るために4xATRを使用する.
この戦略は,多次元的な技術分析を通じて,リスク管理のために動的なストップ・ロストとテイク・プロフィートを採用し,市場開拓セッション中に取引機会を把握する.明確な論理と堅牢なリスク管理により,良い実用性を示しています.継続的な最適化と調整により戦略のパフォーマンスをさらに向上させることができます.
/*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}}"