Chiến lược dừng lỗ trung bình di chuyển trơn tru

Tác giả:ChaoZhang, Ngày: 2024-01-31 14:25:29
Tags:

img

Tổng quan

Chiến lược này sử dụng đường trung bình di chuyển trơn tru và phạm vi trung bình thực để tính toán hai mức giá dừng lỗ. Nó mở các vị trí ngược khi giá vượt qua mức dừng lỗ để đạt được việc dừng lỗ theo dõi xu hướng. Chiến lược này phù hợp với giao dịch tiền điện tử biến động cao và có thể khóa lợi nhuận và tránh thua lỗ một cách hiệu quả.

Chiến lược logic

  1. Tính toán dải giá trung bình thực sự atr của n giai đoạn gần đây và làm mịn nó bằng phương pháp RMA
  2. Mức giá dừng lỗ dài là giá cao nhất trừ atr, và mức giá dừng lỗ ngắn là giá thấp nhất cộng với atr
  3. Khi giá vượt qua đường dừng lỗ phía trên, đi ngắn; khi nó vượt qua đường dừng lỗ phía dưới, đi dài
  4. Các đường dừng lỗ được cập nhật liên tục khi giá di chuyển để đạt được động trailing

Chiến lược này xác định phạm vi dừng lỗ hợp lý thông qua tính toán ATR và sau đó sử dụng phương pháp RMA để làm mịn các đường dừng lỗ để tránh kích hoạt dừng bởi các biến động giá nhỏ. Khi một sự đảo ngược xu hướng xảy ra, nó có thể nhanh chóng xác định các tín hiệu và thiết lập các vị trí bằng cách phá vỡ các đường dừng lỗ theo hướng ngược lại.

Phân tích lợi thế

  1. Đường dừng mất mát di chuyển trơn tru lọc hiệu quả tiếng ồn và tránh tín hiệu sai
  2. Các điểm dừng lỗ theo dõi động có thể khóa hầu hết lợi nhuận xu hướng
  3. Các thông số ổn định, phù hợp với các hoạt động kinh doanh trung bình và dài hạn
  4. Đạt được giao dịch hoàn toàn tự động mà không cần can thiệp bằng tay

Phân tích rủi ro

  1. Phạm vi dừng lỗ có thể quá lớn và thời gian ATR và nhân nên được điều chỉnh phù hợp
  2. Có thể đóng cửa các vị trí thường xuyên hơn khi xu hướng không rõ ràng
  3. Các điều kiện nhập cảnh thích hợp nên được thiết lập để tránh đuổi theo sự gia tăng và giảm

Phạm vi dừng lỗ có thể được giảm bằng cách rút ngắn đúng thời gian ATR hoặc giảm nhân ATR, hoặc các bộ lọc bổ sung có thể được thêm để giảm việc mở các vị trí không cần thiết.

Hướng dẫn tối ưu hóa

  1. Các chỉ số khác có thể được thêm vào dựa trên các thông số ATR để xác định xu hướng
  2. Tối ưu hóa logic mở và đặt bộ lọc breakout nghiêm ngặt hơn
  3. Thêm các chức năng lấy lợi nhuận di chuyển
  4. Tối ưu hóa các đường dừng lỗ bằng các thuật toán học máy

Đánh giá hướng xu hướng với các chỉ số dao động khác có thể tránh việc mở không hiệu quả trong quá trình hợp nhất. Tối ưu hóa logic đầu vào để đảm bảo giá có thể tiếp tục chạy trong một phạm vi nhất định sau khi vượt qua đường dừng lỗ. Thêm các đường dẫn chuyển động để lấy lợi nhuận để khóa nhiều lợi nhuận hơn. Sử dụng máy học để đào tạo các chức năng dừng lỗ tốt hơn.

Tóm lại

Chiến lược này theo dõi các thị trường tiền điện tử biến động cao với các đường dừng lỗ trung bình di chuyển mượt mà để kiểm soát hiệu quả rủi ro. Các thông số chiến lược tương đối ổn định, làm cho nó phù hợp với giao dịch tự động. Nó có thể được tối ưu hóa trên nhiều chiều bằng cách kết hợp nhiều chỉ số và thuật toán để cải thiện hiệu suất.


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

Thêm nữa