Stop-Loss-Strategie mit geglättetem gleitenden Durchschnitt


Erstellungsdatum: 2024-01-31 14:25:29 zuletzt geändert: 2024-01-31 14:25:29
Kopie: 0 Klicks: 656
1
konzentrieren Sie sich auf
1617
Anhänger

Stop-Loss-Strategie mit geglättetem gleitenden Durchschnitt

Überblick

Die Strategie nutzt einen glatten Moving Average und eine durchschnittliche reale Preisspanne, um zwei Stop-Loss-Preise zu berechnen, um bei einem Durchbruch der Stop-Loss-Preise eine Rückwärtsöffnung zu betreiben und Trends zu verfolgen. Die Strategie eignet sich für den Handel mit digitalen Währungen mit hoher Volatilität und kann effektiv Gewinne einsperren, um Verluste zu vermeiden.

Strategieprinzip

  1. Berechnen Sie die mittlere reale Preisspanneatr für die letzten n Zyklen und glatten Sie sie mit der RMA-Methode aus
  2. Der Mehrköpfer-Stopppreis ist der höchste Preis abzüglichatr, der Leerköpfer-Stopppreis plusatr zum niedrigsten Preis
  3. Wenn der Preis die Stop-Line nach oben durchbricht, machen Sie einen Short, wenn er die Stop-Line nach unten durchbricht, machen Sie einen Long.
  4. Die Stop-Loss-Linie wird mit dem Preis fortlaufend aktualisiert und ermöglicht eine dynamische Verfolgung.

Die Strategie ermittelt einen angemessenen Stop-Range durch Berechnung der ATR und, in Kombination mit der RMA-Methode, die Stop-Line ausgleicht, um zu vermeiden, dass ein Stop-Loss durch kleine Preisschwankungen ausgelöst wird. Wenn ein Trendwechsel eintritt, kann das Signal schnell erkannt werden, um eine Position aufzubauen, indem der umgekehrte Preis die Stop-Line durchbricht.

Analyse der Stärken

  1. Glatte mobile Stop-Line, um Geräusche effektiv zu filtern und falsche Signale zu vermeiden
  2. Dynamische Tracking-Stopps, die einen Großteil des Trendgewinns abschließen
  3. Die Parameter sind stabil und geeignet für mittlere und lange Positionen.
  4. Vollständig automatisierte Transaktionen ohne menschliche Intervention

Risikoanalyse

  1. Die Stop-Loss-Grenze könnte zu hoch sein und die ATR-Zyklen und -Modalitäten sollten entsprechend angepasst werden.
  2. Wenn die Tendenz nicht sichtbar ist, kann es zu einer größeren Anzahl von Schließungen kommen.
  3. Es sollte darauf geachtet werden, angemessene Einstiegsbedingungen zu schaffen, um eine Nachkriegslage zu vermeiden.

Die Stop-Loss-Marge kann durch eine angemessene Verkürzung des ATR-Zyklus oder eine Verringerung des ATR-Multipliziers verringert werden, oder andere Filterbedingungen können hinzugefügt werden, um unnötige Positionen zu verringern. Achten Sie darauf, die tatsächliche Leverage und die Größe der Position zu kontrollieren, um auf starke Marktveränderungen zu reagieren.

Optimierungsrichtung

  1. Auf der Grundlage der ATR-Parameter können weitere Indikatoren hinzugefügt werden, um Trends zu bestimmen
  2. Optimierung der Lageröffnungslogik mit strengeren Durchbruchfilterbedingungen
  3. Hinzugefügt wird ein Mobile Stop-Feature
  4. Stop-Line-Optimierung in Kombination mit maschinellen Lernalgorithmen

Integration mit anderen Oszillator-Indikatoren, um die Richtung des Trends zu bestimmen, um zu vermeiden, dass Positionen in der Zeit der Erschütterung ungültig sind. Optimierung der Einstiegslogik, um sicherzustellen, dass der Preis nach dem Durchbruch der Stop-Line eine gewisse Bandbreite aufrechterhalten kann.

Zusammenfassen

Die Strategie ermöglicht eine effiziente Risikokontrolle durch Berechnung einer glatten Moving Average Stop-Line und ermöglicht die dynamische Verfolgung von Stop-Losses in einem sehr volatilen Kryptowährungsmarkt. Die Strategie-Parameter sind relativ stabil und eignen sich für den automatisierten Handel. Auf dieser Basis können mehrdimensionale Optimierungen durchgeführt werden, die in Kombination mit mehr Indikatoren und Algorithmen die Wirksamkeit verbessern.

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

//@version=4
//
//  作品: [LunaOwl] 超級趨勢2
//
////////////////////////////////
//     ~~!!*(๑╹◡╹๑) **       //
//  製作: @LunaOwl 彭彭       //
//  第1版: 2019年05月29日     //
//  第2版: 2019年06月12日     //
//  微調:  2019年10月26日     //
//  第3版: 2020年02月12日     //
////////////////////////////////
//
//
//超級趨勢的缺點:
//--1.止損距離可能相當大, 請自己調整週期
//--2.市場沒有存在明顯趨勢的時候表現不佳
//
//超級趨勢的優點:
//--1.具有可以參考的移動止損線, 適合新手
//--2.市場存在明顯趨勢的時候表現會很不錯
//
//使用須知:
//--1.每筆交易都需要下移動止損單, 絕對要下
//--2.中途被針掃出場時不要急著再進去
//--3.當錯失機會不要追高追低, 等待下次機會
//--4.實質槓桿比率不要太高, 不要輕忽市場變化
//--5.訂單進出場都建議分成五份、十份區間掛單
//--6.不要妄圖賺到市場上的每一分錢
//
//稍做更新:
//--1.平均真實區間利用了遞迴均線減少雜訊
//--2.針對高波動率的小幣市場,中期順勢策略應該以減少雜訊為重點
//--3.研究國外交易策略後,它們常用平滑因子過濾隨機走勢
//--4.績效上和其它平均法比較並沒有突出,但優點是參數變動穩定性
//--5.我選擇四小時線回測小幣市場,並且選擇經歷過牛熊市的以太坊

//==設定研究==//

//study(title = "[LunaOwl] 超級趨勢2", shorttitle = "[LunaOwl] 超級趨勢2", overlay = true)

//==設定策略==//

strategy(
     title               = "[LunaOwl] 超級趨勢2",
     shorttitle          = "[LunaOwl] 超級趨勢2",
     format              = format.inherit,
     overlay             = true,
     calc_on_order_fills = true,
     calc_on_every_tick  = false,
     pyramiding          =  0,      
     currency            = currency.USD,    
     initial_capital     = 10000,
     slippage            = 10,
     default_qty_value   = 100,
     default_qty_type    = strategy.percent_of_equity,
     commission_value    = 0.1
     )

//==設定參數==//

src = input(close, "數據來源")

length = input(
     title  = "ATR 周期", 
     type   = input.integer,
     minval = 1,
     maxval = 4,
     defval = 1
     )

//可以設定的精度為小數點後三位

mult = input(
     title  = "ATR 乘數", 
     type   = input.float,
     minval = 1.000, 
     maxval = 9.000,
     defval = 2.618,
     step   = 0.001
     )
     
atr = mult * atr(length) 
atr_rma = rma(atr, 14)  //平均真實區間添加遞回均線

//==算法邏輯==//

LongStop      = hl2 - atr_rma
LongStopPrev  = nz(LongStop[1], LongStop)
LongStop     := close[1] > LongStopPrev ? max(LongStop, LongStopPrev) : LongStop
 
ShortStop     = hl2 + atr_rma
ShortStopPrev = nz(ShortStop[1], ShortStop)
ShortStop    := close[1] < ShortStopPrev ? min(ShortStop, ShortStopPrev) : ShortStop

dir  = 1
dir := nz(dir[1], dir)
dir := dir == -1 and close > ShortStopPrev ? 1 :
       dir ==  1 and close < LongStopPrev ? -1 : 
       dir

LongStop_data  = dir == 1 ? LongStop : na
ShortStop_data = dir == 1 ? na : ShortStop

LongMark  = dir ==  1 and dir[1] == -1 ? LongStop : na
ShortMark = dir == -1 and dir[1] == 1 ? ShortStop : na

LongColor  = #0D47A1  //普魯士藍
ShortColor = #B71C1C  //酒紅色

//==設置止損線==//

plot(LongStop_data,
     title     = "移動止損線",
     style     = plot.style_linebr,
     color     = LongColor,
     linewidth = 1
     )
     
plot(ShortStop_data,
     title     = "移動止損線",
     style     = plot.style_linebr,
     color     = ShortColor,
     linewidth = 1 
     )

//==設定K線顏色==//

barcolor(dir == 1 ? LongColor : ShortColor, title = "K線顏色")

//==設定快訊通知==//

alertcondition(LongMark,
     title   = "多頭標記", 
     message = "多頭標記: 行情可能出現潛在變化,請注意個人的對沖或空頭部位,留意風險。")
     
alertcondition(ShortMark,
     title   = "空頭標記", 
     message = "空頭標記: 行情可能出現潛在變化,請注意個人的現貨或多單持倉狀況,留意風險。")

// - 設定日期範圍 - //

test_Year   = input(2017, title = "設定範圍:年", minval = 1, maxval = 2140) 
test_Month  = input(  11, title = "_____月", minval = 1, maxval =   12)
test_Day    = input(  01, title = "_____日", minval = 1, maxval =   31)
test_Period = timestamp( test_Year, test_Month, test_Day, 0, 0)

// - 買賣條件 - //

Long = src > LongStop_data
strategy.entry("多頭進場", strategy.long, when = Long)
strategy.close("多頭出場", when = Long) 

Short = src < ShortStop_data
strategy.entry("空頭進場", strategy.short, when = Short)
strategy.close("空頭回補", when = Short)