Diese Strategie ist ein Marktöffnungs-Trading-System, das auf mehreren technischen Indikatoren basiert und hauptsächlich auf deutsche und US-amerikanische Marktöffnungs-Sitzungen ausgerichtet ist.
Die Strategie verwendet 14-Perioden-Bollinger-Bänder (1.5 Standardabweichungen) um niedrige Volatilitätsphasen zu identifizieren, wobei die Konsolidierung in Betracht gezogen wird, wenn der Preis nahe dem mittleren Band liegt. Sie verwendet 10- und 200-Perioden-EMAs, um bullische Trends zu bestätigen, wobei der Preis über beiden Durchschnitten liegt. Ein 7-Perioden-RSI gewährleistet nicht-überverkaufte Bedingungen (> 30), während der 7-Perioden-ADX die Trendstärke (> 10) bestätigt. Die Strategie analysiert die Höchststände der letzten 20 Kerzen für Widerstandsniveaus, die mindestens zwei Berührungen erfordern. Der Eintritt erfolgt bei Widerstandsbreakout mit anderen Bedingungen, wobei 2x ATR für Stop-Loss und 4x ATR für Take-Profit verwendet wird.
Diese Strategie erfasst Handelschancen während der Marktöffnungssitzungen durch multidimensionale technische Analyse, wobei dynamische Stop-Loss und Take-Profit für das Risikomanagement verwendet werden. Mit klarer Logik und robuster Risikokontrolle zeigt sie eine gute Praktikabilität. Kontinuierliche Optimierung und Anpassung kann die Strategieleistung weiter verbessern.
/*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}}"