Stratégie de stop loss à moyenne mobile lissée


Date de création: 2024-01-31 14:25:29 Dernière modification: 2024-01-31 14:25:29
Copier: 0 Nombre de clics: 656
1
Suivre
1617
Abonnés

Stratégie de stop loss à moyenne mobile lissée

Aperçu

La stratégie utilise une moyenne mobile lisse et une gamme de prix réels moyens pour calculer deux arrêts de perte, ouvrir des positions inversées lorsque le prix de la perte est dépassé, pour réaliser un arrêt de suivi de la tendance. La stratégie convient aux transactions de crypto-monnaie à forte volatilité et permet de verrouiller efficacement les bénéfices et d’éviter l’expansion des pertes.

Principe de stratégie

  1. Calculer la moyenne des variations réelles de prix atr pour les n périodes les plus récentes et lisser avec la méthode RMA
  2. le prix de stop multiple est le prix le plus élevé moins atr, le prix de stop à vide est le prix le plus bas plus atr
  3. Faites une prise de position lorsque le prix dépasse la ligne de stop-loss vers le haut et une prise de position lorsque le prix dépasse la ligne de stop-loss vers le bas.
  4. Les lignes de stop-loss sont mises à jour au fur et à mesure que les prix évoluent, permettant un suivi dynamique.

La stratégie consiste à déterminer une plage de stop raisonnable en calculant l’ATR, puis en l’associant à la méthode RMA pour aplanir la ligne de stop et éviter que la rupture ne soit déclenchée par une petite fluctuation des prix. Lorsque la tendance se retourne, la stratégie est capable d’identifier rapidement les signaux et d’établir une position de manière à ce que la rupture de la ligne de stop soit inversée.

Analyse des avantages

  1. Ligne d’arrêt mobile lisse, filtre efficacement le bruit et évite les faux signaux
  2. Le suivi dynamique des arrêts de perte permet de localiser la plupart des tendances à la hausse
  3. Les paramètres sont stables et conviennent à la tenue de positions sur les lignes moyennes et longues.
  4. La transaction est entièrement automatisée, sans intervention humaine.

Analyse des risques

  1. Le stop-loss peut être trop élevé et les cycles et les multiples de l’ATR doivent être ajustés en conséquence.
  2. Il peut y avoir plus de liquidations lorsque la tendance n’est pas évidente
  3. Attention à la mise en place de conditions d’entrée raisonnables pour éviter les chutes de chasse.

Il est possible de réduire la marge d’arrêt en raccourcissant de manière appropriée le cycle ATR ou en réduisant le multiplicateur ATR, ou en ajoutant d’autres conditions de filtrage pour réduire les prises de position inutiles. Veillez à contrôler l’effet de levier et la taille de la position pour faire face aux fortes fluctuations du marché.

Direction d’optimisation

  1. D’autres indicateurs peuvent être ajoutés à la base des paramètres ATR pour juger de la tendance
  2. Optimisation de la logique d’ouverture de la position et mise en place de conditions de filtrage de rupture plus strictes
  3. Ajout d’une fonction d’arrêt mobile
  4. Optimisation de la ligne de stop-loss combinée à des algorithmes d’apprentissage automatique

L’intégration d’autres indicateurs d’oscillateur pour juger de la direction de la tendance, éviter de prendre des positions sans effet pendant les périodes de choc. Optimiser la logique d’entrée, assurer que le prix peut continuer à fonctionner après la rupture de la ligne de stop-loss. Ajouter une marge.

Résumer

La stratégie permet de contrôler efficacement les risques en calculant des lignes de stop-loss à moyenne mobile lisse, en réalisant un stop-loss de suivi dynamique sur les marchés de crypto-monnaie à forte volatilité. Les paramètres de la stratégie sont relativement stables et conviennent aux transactions automatisées. Une optimisation multidimensionnelle peut être effectuée sur cette base, combinée à plus d’indicateurs et d’algorithmes pour améliorer l’efficacité.

Code source de la stratégie
/*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)