
Die Strategie basiert auf Breakouts von beweglichen Mengen, um Handelssignale zu erzeugen. Die Hauptidee besteht darin, die Bewegung der Preise in einem bestimmten Zeitraum zu beobachten, um die Trendänderungen der Preise anhand von Breakouts von beweglichen Mengen zu beurteilen.
Die Strategie beurteilt die Bewegung der Preise durch Berechnung der Höchst- und Tiefstpreise innerhalb eines bestimmten Zeitraums, also des Pivot-High und des Pivot-Low.
Konkret berechnet die Strategie den höchsten Preis der vergangenen N-K-Linie als Pivot-High und den niedrigsten Preis der vergangenen M-K-Linie als Pivot-Low. Wenn der höchste Punkt der aktuellen K-Linie den Pivot-High überschreitet, wird ein Mehr-Signal erzeugt; wenn der niedrigste Punkt der aktuellen K-Linie den Pivot-Low überschreitet, wird ein Fehlsignal erzeugt.
Nach dem Über- und Nachlass setzt die Strategie den ATR ein, um einen Stop-Loss einzurichten und den Stop-Loss innerhalb eines Tages zu schrittweise zu ersetzen. Gleichzeitig wird die Strategie alle Positionen innerhalb eines bestimmten Zeitraums (z. B. 14:55) auslöschen.
Die Strategie nutzt einfach und effektiv Preis-Breakthroughs in bestimmten Zeiträumen, um Trends zu erfassen, und eignet sich hervorragend für den kurzfristigen Handel innerhalb eines Tages. Die Berechnung ist klar und einfach zu implementieren.
Der Zeitpunkt des Eintritts kann entsprechend angepasst werden, oder in Kombination mit anderen Indikatoren.
Die Parameter können angepasst werden oder Filterbedingungen wie Trendindikatoren, Transaktionsmengen usw. hinzugefügt werden.
Die Positionsgröße kann angepasst werden oder die Haltedauer kann entsprechend verlängert werden.
Anpassung der Parameter an unterschiedliche Marktbedingungen oder automatische Optimierung durch Methoden wie maschinelles Lernen
Versuchen Sie mit anderen Preisdaten, z. B. typische Preise, Durchschnittspreise usw.
Filterbedingungen wie erhöhte Transaktionen oder Schwankungen
Versuchen Sie eine andere Kombination von Parametern
In Kombination mit Trendindikatoren, um die Richtung zu bestimmen
Automatische Optimierung von Parametern mit Hilfe von maschinellen Lernverfahren
Es ist eine sehr schwierige Zeit für die Öffentlichkeit, sich zu bewegen.
Die Strategie hat eine klare und einfache Gesamtkonzeption, um kurzfristige Trends zu erfassen und einen höheren Gewinnfaktor zu erzielen. Die Strategie hat weniger Parameter, die leicht zu testen und zu optimieren sind, und ist für den Einsatz in kurzen Tageszeiten geeignet. Obwohl es ein gewisses Maß an Verzögerungen und Falschsignalproblemen gibt, kann es durch Parameteranpassungen und die Hinzufügung von Filterbedingungen verbessert 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)