Diese Strategie erzeugt Handelssignale auf der Grundlage von Preis-Breakouts innerhalb eines bestimmten Zeitraums.
Die Strategie berechnet den höchsten Höchststand und das niedrigste Tief des Preises innerhalb eines bestimmten Zeitrahmens, bekannt als Pivot-Hoch und Pivot-Tief, um die Preisbewegungen zu messen.
Es erzeugt ein langes Signal, wenn das aktuelle Bar-Hoch über das Pivot-Hoch bricht. Ein kurzes Signal wird erzeugt, wenn das aktuelle Bar-Low unter das Pivot-Tief bricht.
Nach dem Eintritt verwendet die Strategie ATR für Stop-Loss und Intraday-Stop-Loss. Sie schließt auch alle Positionen in einem bestimmten Zeitrahmen (z. B. 14:55).
Die Strategie erfasst effektiv Trends, indem sie einfache Preisbreaks in bestimmten Perioden verwendet, was sie ideal für den Intraday-Handel macht.
Potenzielle Verzögerung, kann frühen Trendstart verpassen
Anpassung des Zeitrahmens oder Kombination anderer Indikatoren für die Einführung
Mehr falsche Signale, wenn der Trend unklar ist
Stimmen Sie die Parameter ein, fügen Sie Filter wie Indikatoren, Lautstärke usw. hinzu.
Höhere Kapitalkosten für den aktiven Intraday-Handel
Anpassung der Positionsgröße, Verlängerung der Haltedauer
Abhängigkeit von Parameteroptimierung
Anpassung von Parametern an sich ändernde Marktbedingungen durch maschinelles Lernen usw.
Testen Sie andere Preisdaten wie typischen Preis, Medianpreis usw.
Fügen Sie Filter wie Volumen, Volatilität
Versuchen Sie verschiedene Parameterkombinationen
Einbeziehung von Trendindikatoren zur Bestimmung der Richtung
Automatische Optimierung von Parametern mithilfe von maschinellem Lernen
Erweiterung auf mehrere Zeitrahmen für besseren Eintrag
Die Strategie hat eine klare und prägnante Logik und nutzt Preisschwankungen effektiv, um kurzfristige Trends mit guten Gewinnfaktoren zu erfassen. Mit wenigen passenden Parametern, die leicht zum Testen und Optimieren sind, eignet sie sich gut für den Intraday-Handel. Während Verzögerungen und falsche Signale vorhanden sind, können sie durch Parameter-Tuning, Hinzufügen von Filtern usw. behoben werden.
/*backtest start: 2022-10-27 00:00:00 end: 2023-11-02 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // ____________ _________ _____________ // |____________| ||________| ||__________| // || || || || // || ||________|| || // || H E ||________ U L L || H A R T I S T // || || || || // || ||________|| ||__________ // || ||________| ||__________| //@version=5 // strategy("PIVOT STRATEGY [5MIN TF]",overlay=true ,commission_type = strategy.cash, commission_value = 30 , slippage = 2, default_qty_value = 60, currency = currency.NONE, pyramiding = 0) leftbars = input(defval = 10) rightbars = input(defval = 15) // ═══════════════════════════ // // ——————————> INPUTS <——————— // // ═══════════════════════════ // EMA1 = input.int(title='PRICE CROSS EMA', defval = 150, minval = 10 ,maxval = 400) factor1 = input.float(title='_ATR LONG',defval = 3.2 , minval = 1 , maxval = 5 , step = 0.1, tooltip = "ATR TRAIL LONG") factor2 = input.float(title='_ATR SHORT',defval = 3.2 , minval = 1 , maxval = 5 , step = 0.1, tooltip = "ATR TRAIL SHORT") risk = input.float(title='RISK',defval = 200 , minval = 1 , maxval = 5000 , step = 50, tooltip = "RISK PER TRADE") var initialCapital = strategy.equity t = time(timeframe.period, '0935-1400:1234567') time_cond = true // ══════════════════════════════════ // // ———————————> EMA DATA <——————————— // // ══════════════════════════════════ // ema1 = ta.ema(close, EMA1) plot(ema1, color=color.new(color.yellow, 0), style=plot.style_linebr, title='ema1') // ══════════════════════════════════ // // ————————> TRAIL DATA <———————————— // // ══════════════════════════════════ // // *******Calculate LONG TRAIL data***** ATR_LO = ta.atr(14)*factor1 // *******Calculate SHORT TRAIL data***** ATR_SH = ta.atr(14)*factor2 longStop = close - ATR_LO shortStop = close + ATR_SH // Plot atr data //plot(longStop, color=color.new(color.green, 0), style=plot.style_linebr, title='Long Trailing Stop') //plot(shortStop , color=color.new(color.red, 0), style=plot.style_linebr, title='Short Trailing Stop') // ══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ // // ————————————————————————————————————————————————————————> PIVOT DATA <———————————————————————————————————————————————————————————————————————————————————————————————————— // // ══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ // ph = ta.pivothigh(close,leftbars, rightbars) pl = ta.pivotlow(close,leftbars, rightbars) pvt_condition1 = not na(ph) upper_price = 0.0 upper_price := pvt_condition1 ? ph : upper_price[1] pvt_condition2 = not na(pl) lower_price = 0.0 lower_price := pvt_condition2 ? pl : lower_price[1] // Signals long = ta.crossover(high, upper_price + syminfo.mintick) short = ta.crossunder(low, lower_price - syminfo.mintick) plot(upper_price, color= close > ema1 ? color.green : na, style=plot.style_line, title='PH') plot(lower_price, color= close < ema1 ? color.red : na, style=plot.style_line, title='PL') // ══════════════════════════════════// // ————————> LONG POSITIONS <————————// // ══════════════════════════════════// //******barinstate.isconfirmed used to avoid repaint in real time******* if ( long and strategy.opentrades==0 and barstate.isconfirmed and time_cond and close >= ema1 ) strategy.entry(id= "Long" ,direction = strategy.long, comment = "B") //plot(longStop , color=color.new(color.blue, 0), style=plot.style_linebr, title='long Stop') if strategy.position_size > 0 strategy.exit("long tsl", "Long" , stop = longStop ,comment='S') // ═════════════════════════════════════// // ————————> SHORT POSITIONS <————————— // // ═════════════════════════════════════// if ( short and strategy.opentrades==0 and barstate.isconfirmed and time_cond and close <= ema1 ) strategy.entry(id = "Short" ,direction = strategy.short, comment = "S") if strategy.position_size < 0 strategy.exit("short tsl", "Short" , stop = shortStop ,comment='B') // ════════════════════════════════════════════════// // ————————> CLOSE ALL POSITIONS BY 3PM <————————— // // ════════════════════════════════════════════════// strategy.close_all(when = hour == 14 and minute == 55) // ════════════════════════════════════════// // ————————> MAX INTRADAY LOSS <————————— // // ════════════════════════════════════════// // strategy.risk.max_intraday_loss(type = strategy.cash, value = risk)