High-Low Stop-Lose Trailing Strategie


Erstellungsdatum: 2024-02-18 14:30:08 zuletzt geändert: 2024-02-18 14:30:08
Kopie: 7 Klicks: 599
1
konzentrieren Sie sich auf
1617
Anhänger

High-Low Stop-Lose Trailing Strategie

Überblick

Die Strategie basiert auf der Entries-Datenplanung, die auf der K-Linie aufgerichtet ist, um einen Trendwendepunkt zu finden. Die Entries-Strategie setzt dann eine Stop-Line auf der Grundlage des ATR-Indikators und verfolgt die Stop-Loss. Die Strategie berechnet auch die Target-Position nach dem Risiko-Rendite-Verhältnis und platziert die Position, nachdem die Target erreicht oder gestoppt wurde.

Strategieprinzip

Die Einträge der Strategie stammen von den Hoch-Low-Punkten. Ein Kaufsignal wird erzeugt, wenn der Öffnungspreis einer K-Linie dem niedrigsten Preis entspricht, und ein Verkaufsignal wird erzeugt, wenn der Öffnungspreis dem höchsten Preis entspricht, was darauf hindeutet, dass eine Trendwende möglich ist.

Die Stop-Line nach dem Kauf ist der niedrigste Preis innerhalb der neuesten N-K-Linie abzüglich 1x der ATR; die Stop-Line nach dem Verkauf ist der höchste Preis innerhalb der neuesten N-K-Linie plus 1x der ATR. Die Stop-Line wird dynamisch aktualisiert, um den Preis zu verfolgen.

Der Zielgewinn wird berechnet nach dem eingestellten Risiko-Rendite-Verhältnis. Der Kaufzielpreis ist der Einstiegspreis plus das Risiko-Rendite-Verhältnis der Differenz zwischen dem Einstiegspreis und dem Stop-Loss-Preis multipliziert; der Verkaufzielpreis ist der Einstiegspreis minus das Risiko-Rendite-Verhältnis der Differenz zwischen dem Stop-Loss-Preis und dem Einstiegspreis multipliziert).

Wenn der Preis den Stop-Loss-Preis oder den Zielpreis erreicht, wird eine Schließungsanweisung ausgesprochen.

Analyse der Stärken

Diese Strategie hat folgende Vorteile:

  1. Die Entries sind einfach, klar, leicht zu erkennen und vermeiden mehrere Erschütterungen.

  2. Dynamische ATR-Stopps maximieren die Gewinne und verhindern, dass die Höhe und die Tiefe verfolgt werden.

  3. Die Risikobetragskontrolle verhindert Gewinneverbleib und Überkürzung.

  4. Es ist für verschiedene Sorten geeignet und leicht zu optimieren.

Risikoanalyse

Die Strategie birgt auch Risiken:

  1. Die Entries-Signalverzögerung kann zu einer Verzögerung führen, die den optimalen Standort verpasst.

  2. Der Stop-Loss-Preis ist zu niedrig oder zu locker, was zu einem Verlust von Gewinn führen kann.

  3. Das Modul, das keine Trends beurteilt, kann leicht in Erschütterungen eingeschaltet werden.

  4. Die Situation, in der es nicht möglich ist, das Lager über Nacht zu errichten.

Die entsprechende Optimierungsrichtung:

  1. In Kombination mit anderen Indikatoren, um Trends zu beurteilen, und um Schwankungen zu vermeiden.

  2. Anpassung der ATR-Parameter oder Einbindung von Schwankungsrate-Kontrollen zur Optimierung der Stop-Loss-Linie.

  3. Erhöhung der Trendschätzung oder Filtermodule, um die Fehlerquote der Eintragsignale zu verringern.

  4. Ein Nachtlager für bestimmte Sorten wird in das Nachtlagermodul aufgenommen.

Zusammenfassen

Diese Strategie ist im Allgemeinen relativ einfach und direkt, die Eintrittssignale sind klar, die Stop-Loss-Strategie ist vernünftig und die Risiken werden kontrolliert. Es gibt jedoch auch bestimmte Einschränkungen, wie z. B. eine unzureichende Trendentscheidung, ein verzögertes Signal usw. Diese Probleme bieten auch eine Richtung für zukünftige Optimierungen. Durch die Kombination von mehr Indikatoren und Risikokontrollmodulen kann die Strategie die Wirksamkeit weiter verbessern und allgemeiner werden.

Strategiequellcode
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Open-High-Low strategy

strategy('Strategy: OLH', shorttitle="OLH", overlay=true )

// Inputs
slAtrLen = input.int(defval=14, title="ATR Period for placing SL", group="StopLoss settings")
showSLLines = input.bool(defval=false, title="Show SL lines in chart", tooltip="Show SL lines also as dotted lines in chart. Note: chart may look untidy.", group="Stolploss settings")
// Trade related
rrRatio = input.float(title='Risk:Reward', step=0.1, defval=2.0, group="Trade settings")
endOfDay = input.int(defval=1500, title="Close all trades, default is 3:00 PM, 1500 hours (integer)", group="Trade settings")
mktAlwaysOn = input.bool(defval=true, title="Markets that never closed (Crypto, Forex, Commodity)", tooltip="Some markers never closes. For those cases, make this checked.", group="Trade settings")
lotSize = input.int(title='Lot Size', step=1, defval=1, group="Trade settings")


// Utils
green(open, close) => close > open ? true : false
red(open, close) => close < open ? true : false
body(open, close) => math.abs(open - close)
lowerwick = green(open, close) ? open - low : close - low
upperwick = green(open, close) ? high - close : high - open
crange = high - low
crangep = high[1] - low[1] // previous candle's candle-range
bullish = close > open ? true : false
bearish = close < open ? true : false


// Trade signals
longCond = barstate.isconfirmed and (open == low)
shortCond = barstate.isconfirmed and (open == high)

// For SL calculation
atr = ta.atr(slAtrLen)
highestHigh = ta.highest(high, 7)
lowestLow = ta.lowest(low, 7)
longStop = showSLLines ? lowestLow - (atr * 1) : na
shortStop = showSLLines ? highestHigh + (atr * 1) : na
plot(longStop, title="Buy SL", color=color.green, style=plot.style_cross)
plot(shortStop, title="Sell SL", color=color.red, style=plot.style_cross)

// Trade execute
h = hour(time('1'), syminfo.timezone)
m = minute(time('1'), syminfo.timezone)
hourVal = h * 100 + m
totalTrades = strategy.opentrades + strategy.closedtrades
if (mktAlwaysOn or (hourVal < endOfDay))
    // Entry
    var float sl = na
    var float target = na
    if (longCond)
        strategy.entry("enter long", strategy.long, lotSize, limit=na, stop=na, comment="Enter Long")
        sl := longStop
        target := close + ((close - longStop) * rrRatio)
        alert('Buy:' + syminfo.ticker + ' ,SL:' + str.tostring(math.floor(sl)) + ', Target:' + str.tostring(target), alert.freq_once_per_bar)
    if (shortCond)
        strategy.entry("enter short", strategy.short, lotSize, limit=na, stop=na, comment="Enter Short")
        sl := shortStop
        target := close - ((shortStop - close) * rrRatio)
        alert('Sell:' + syminfo.ticker + ' ,SL:' + str.tostring(math.floor(sl)) + ', Target:' + str.tostring(target), alert.freq_once_per_bar)

    // Exit: target or SL
    if ((close >= target) or (close <= sl))
        strategy.close("enter long", comment=close < sl ? "Long SL hit" : "Long target hit")
    if ((close <= target) or (close >= sl))
        strategy.close("enter short", comment=close > sl ? "Short SL hit" : "Short target hit")
else if (not mktAlwaysOn)
    // Close all open position at the end if Day
    strategy.close_all(comment = "Close all entries at end of day.")