Die Strategie zur Dynamikverfolgung und -entwicklung

Schriftsteller:ChaoZhang, Datum: 2024-02-22 17:27:18
Tags:

img

Übersicht

Die Kernidee dieser Strategie besteht darin, den Super Trend-Indikator und den Average Directional Movement Index (ADX) zu kombinieren, um Trends zu beurteilen und zu verfolgen. Der Super Trend-Indikator wird verwendet, um die aktuelle Preis-Trendrichtung zu identifizieren, und der ADX wird verwendet, um die Trendstärke zu bestimmen. Trades werden nur unter starken Trendbedingungen getätigt. Darüber hinaus verwendet die Strategie auch Kerzenkörperfarbe, Handelsvolumen und andere Indikatoren zur Bestätigung und bildet einen relativ vollständigen Satz von Handelsregeln.

Insgesamt gehört diese Strategie zur Trendverfolgungsstrategie, die darauf abzielt, mittelfristige und langfristige klare Trends zu erfassen und gleichzeitig Störungen durch Konsolidierungs- und Schwankungszeiten zu vermeiden.

Strategieprinzipien

  1. Wenn der Preis über dem Super Trend steht, ist es ein langes Signal, und wenn er unter dem Super Trend steht, ist es ein kurzes Signal.

  2. Der ADX wird verwendet, um die Stärke des Trends zu beurteilen. Handelssignale werden nur generiert, wenn der ADX über dem Schwellenwert liegt, so dass Perioden mit unklarer Konsolidierung ausgefiltert werden können.

  3. Die Farbe des Kerzenkörpers wird verwendet, um zu beurteilen, ob es sich derzeit in einem Aufwärts- oder Abwärtsmuster befindet, kombiniert mit dem Super Trend-Indikator, um eine Bestätigung zu bilden.

  4. Eine Erhöhung des Handelsvolumens dient als Bestätigungssignal.

  5. Setzen Sie Stop-Loss und Take-Profit, um Gewinne zu erzielen und Risiken zu kontrollieren.

  6. Schließen Sie alle Positionen vor dem festgelegten Tagesende.

Vorteile der Strategie

  1. Die Kommission hat die Kommission aufgefordert, ihre Stellungnahme zu dem Bericht zu unterbreiten.

  2. Die Strategie enthält nur wenige Parameter und ist leicht verständlich und umsetzbar.

  3. Die Risiken werden mit Stop Loss und Take Profit gut kontrolliert.

  4. Die Verwendung mehrerer Indikatoren zur Bestätigung kann falsche Signale reduzieren.

Risiken der Strategie

  1. Kann bei großen marktweiten Korrekturen große Verluste erleiden.

  2. Einzelne Aktien können aufgrund von Veränderungen der Fundamentaldaten stark rückgängig gemacht werden.

  3. Schwarze Schwanen Ereignisse von großen politischen Veränderungen.

Lösungen:

  1. ADX-Parameter entsprechend anpassen, um sicherzustellen, dass der Handel nur bei starken Trends stattfindet.

  2. Erhöhen Sie den Stop-Loss-Prozentsatz, um den Betrag eines einzelnen Verlustes zu kontrollieren.

  3. Sie überwachen die Richtlinien und wichtige Ereignisse genau und schneiden bei Bedarf aktiv die Verluste ein.

Richtungen für die Optimierung

  1. Testen Sie verschiedene Kombinationen von Super Trend-Parametern, um zu finden, welche die stabilsten Signale erzeugt.

  2. Versuche verschiedene Kombinationen von ADX-Parametern, um die optimalen Einstellungen zu ermitteln.

  3. Hinzufügen anderer Bestätigungsindikatoren wie Volatilität und Bollinger Bands, um falsche Signale weiter zu reduzieren.

  4. Kombination mit Breakout-Strategien, um Verluste rechtzeitig zu reduzieren, wenn Trends ausfallen.

Zusammenfassung

Die Gesamtlogik dieser Strategie ist klar, indem der Super Trend zur Beurteilung der Kursrichtung, der ADX zur Bestimmung der Trendstärke und dem Handel entlang starker Trends verwendet wird. Stop-Loss und Take-Profit werden eingestellt, um Risiken zu kontrollieren. Die Strategie hat wenige Parameter und ist leicht zu optimieren. Sie kann als gutes Beispiel für das Lernen einfacher und effektiver Trendverfolgungsstrategien dienen.


/*backtest
start: 2023-02-15 00:00:00
end: 2024-02-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Intraday Strategy Template

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © vikris

//@version=4
strategy("[VJ]Hulk Smash Intra", overlay=true, calc_on_every_tick = false, pyramiding=0,default_qty_type=strategy.percent_of_equity, default_qty_value=100,initial_capital=2000)

// ********** Strategy inputs - Start **********

// Used for intraday handling
// Session value should be from market start to the time you want to square-off 
// your intraday strategy
// Important: The end time should be at least 2 minutes before the intraday
// square-off time set by your broker
var i_marketSession = input(title="Market session", type=input.session, 
     defval="0915-1455", confirm=true)

// Make inputs that set the take profit % (optional)
longProfitPerc = input(title="Long Take Profit (%)",
     type=input.float, minval=0.0, step=0.1, defval=1) * 0.01

shortProfitPerc = input(title="Short Take Profit (%)",
     type=input.float, minval=0.0, step=0.1, defval=1) * 0.01
     
// Set stop loss level with input options (optional)
longLossPerc = input(title="Long Stop Loss (%)",
     type=input.float, minval=0.0, step=0.1, defval=0.5) * 0.01

shortLossPerc = input(title="Short Stop Loss (%)",
     type=input.float, minval=0.0, step=0.1, defval=0.5) * 0.01    
     
var float i_multiplier = input(title = "ST Multiplier", type = input.float, 
     defval = 2, step = 0.1, confirm=true)

var int i_atrPeriod = input(title = "ST ATR Period", type = input.integer, 
     defval = 10, confirm=true)     
     
len = input(title="ADX Length", type=input.integer, defval=14)
th = input(title="ADX Threshold", type=input.integer, defval=20)
adxval = input(title="ADX Momemtum Value", type=input.integer, defval=25)     



// ********** Strategy inputs - End **********


// ********** Supporting functions - Start **********

// A function to check whether the bar or period is in intraday session
barInSession(sess) => time(timeframe.period, sess) != 0

// ********** Supporting functions - End **********


// ********** Strategy - Start **********

[superTrend, dir] = supertrend(i_multiplier, i_atrPeriod)

colResistance = dir == 1 and dir == dir[1] ? color.new(color.red, 0) : color.new(color.red, 100)
colSupport = dir == -1 and dir == dir[1] ? color.new(color.green, 0) : color.new(color.green, 100)


// Super Trend Long/short condition
stlong = close > superTrend
stshort = close < superTrend



// Figure out take profit price
longExitPrice  = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)

// Determine stop loss price
longStopPrice  = strategy.position_avg_price * (1 - longLossPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)

//Vol Confirmation
vol = volume > volume[1]


//Candles colors
greenCandle = (close > open)
redCandle = (close < open)

// See if intraday session is active
bool intradaySession = barInSession(i_marketSession)

// Trade only if intraday session is active




TrueRange = max(max(high - low, abs(high - nz(close[1]))), abs(low - nz(close[1])))
DirectionalMovementPlus = high - nz(high[1]) > nz(low[1]) - low ? max(high - nz(high[1]), 0) : 0
DirectionalMovementMinus = nz(low[1]) - low > high - nz(high[1]) ? max(nz(low[1]) - low, 0) : 0


SmoothedTrueRange = 0.0
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - nz(SmoothedTrueRange[1]) / len + TrueRange
SmoothedDirectionalMovementPlus = 0.0
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - 
   nz(SmoothedDirectionalMovementPlus[1]) / len + DirectionalMovementPlus
SmoothedDirectionalMovementMinus = 0.0
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - 
   nz(SmoothedDirectionalMovementMinus[1]) / len + DirectionalMovementMinus

DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus - DIMinus) / (DIPlus + DIMinus) * 100
ADX = sma(DX, len)

// a = plot(DIPlus, color=color.green, title="DI+", transp=100)
// b = plot(DIMinus, color=color.red, title="DI-", transp=100)

//Final Long/Short Condition
longCondition = stlong and redCandle and vol and ADX>adxval
shortCondition = stshort and greenCandle and vol and ADX >adxval



//Long Strategy - buy condition and exits with Take profit and SL
if (longCondition and intradaySession)
    stop_level = longStopPrice
    profit_level = longExitPrice
    strategy.entry("My Long Entry Id", strategy.long)
    strategy.exit("TP/SL", "My Long Entry Id",stop=stop_level, limit=profit_level)
    


//Short Strategy - sell condition and exits with Take profit and SL
if (shortCondition and intradaySession)
    stop_level = shortStopPrice
    profit_level = shortExitPrice
    strategy.entry("My Short Entry Id", strategy.short)
    strategy.exit("TP/SL", "My Short Entry Id", stop=stop_level, limit=profit_level)
    
 
 
// Square-off position (when session is over and position is open)
squareOff = (not intradaySession) and (strategy.position_size != 0)
strategy.close_all(when = squareOff, comment = "Square-off")

// ********** Strategy - End **********

Mehr