Strategie zur Volumenverschiebung über Zeiträume hinweg


Erstellungsdatum: 2023-11-03 16:35:15 zuletzt geändert: 2023-11-03 16:35:15
Kopie: 0 Klicks: 621
1
konzentrieren Sie sich auf
1617
Anhänger

Strategie zur Volumenverschiebung über Zeiträume hinweg

Überblick

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.

Strategieprinzip

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.

Strategische Vorteile

  • Die Nutzung von Durchbrüchen in der Menge der Preisbewegungen, um Trendänderungen zu erfassen, ist ein zuverlässiger Signal
  • Es ist einfach, wenn man nur die grundlegenden K-Line-Daten benötigt.
  • Rationaler Ausfall, Intra-Tages-Ausfall und effektive Risikokontrolle
  • Für Kurzstrecken am Tag geeignet, um Übernachtungsrisiken zu vermeiden
  • Weniger Parameter, leicht zu optimieren

Strategische Risiken und Lösungen

  • Es gibt eine gewisse Verzögerung, die den Anfang des Trends verpassen könnte.

Der Zeitpunkt des Eintritts kann entsprechend angepasst werden, oder in Kombination mit anderen Indikatoren.

  • Wenn Trends nicht sichtbar sind, gibt es mehr Falschsignale

Die Parameter können angepasst werden oder Filterbedingungen wie Trendindikatoren, Transaktionsmengen usw. hinzugefügt werden.

  • Kurzstrecken-Transaktionen innerhalb eines Tages erfordern höhere Kapitalkosten

Die Positionsgröße kann angepasst werden oder die Haltedauer kann entsprechend verlängert werden.

  • Je nach Optimierung der Parameter können unterschiedliche Marktsituationen wirken.

Anpassung der Parameter an unterschiedliche Marktbedingungen oder automatische Optimierung durch Methoden wie maschinelles Lernen

Richtung der Strategieoptimierung

  • 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.

Zusammenfassen

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.

Strategiequellcode
/*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)