Chiến lược dừng lỗ trung bình động được làm mịn


Ngày tạo: 2024-01-31 14:25:29 sửa đổi lần cuối: 2024-01-31 14:25:29
sao chép: 0 Số nhấp chuột: 656
1
tập trung vào
1617
Người theo dõi

Chiến lược dừng lỗ trung bình động được làm mịn

Tổng quan

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

Nguyên tắc chiến lược

  1. Tính phạm vi biến động giá thực trung bình của n chu kỳ gần nhấtatr và làm mịn bằng phương pháp RMA
  2. Giá dừng nhiều đầu là giá cao nhất trừatr, giá dừng đầu rỗng là giá thấp nhất cộngatr
  3. Cắt lỗ khi giá phá vỡ đường dừng lên và tăng khi phá vỡ đường dừng xuống
  4. Dòng dừng lỗ sẽ được cập nhật liên tục để theo dõi động theo giá.

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

Phân tích lợi thế

  1. Dễ dàng di chuyển dây dừng, hiệu quả lọc tiếng ồn, tránh tín hiệu sai
  2. Động thái theo dõi điểm dừng lỗ, có thể khóa hầu hết các xu hướng lợi nhuận
  3. Các tham số ổn định, phù hợp với các vị trí trung và dài
  4. Giao dịch hoàn toàn tự động, không cần sự can thiệp của con người

Phân tích rủi ro

  1. Lệnh dừng có thể quá lớn, nên điều chỉnh chu kỳ ATR và số nhân thích hợp
  2. Có thể có nhiều lần thanh toán khi xu hướng không rõ ràng
  3. Cần chú ý thiết lập các điều kiện nhập cảnh hợp lý, tránh theo đuổi đợt giảm giá

Có thể thu hẹp mức dừng lỗ bằng cách rút ngắn chu kỳ ATR hoặc giảm bớt ATR, hoặc thêm các điều kiện lọc khác để giảm bớt việc mở vị trí không cần thiết. Hãy chú ý kiểm soát mức độ đòn bẩy thực tế và kích thước vị trí để đối phó với sự thay đổi mạnh mẽ của thị trường.

Hướng tối ưu hóa

  1. Dựa trên tham số ATR, bạn có thể thêm các chỉ số khác để đánh giá xu hướng
  2. Tối ưu hóa logic mở kho, đặt các điều kiện lọc phá vỡ nghiêm ngặt hơn
  3. Thêm chức năng dừng di động
  4. Tối ưu hóa dây dừng kết hợp với thuật toán học máy

Tích hợp các chỉ số dao động khác để xác định hướng xu hướng, tránh mở lệnh không hiệu lực trong thời gian chấn động. Tối ưu hóa logic đầu vào, đảm bảo giá có thể tiếp tục hoạt động ở một mức độ nhất định sau khi phá vỡ đường dừng.

Tóm tắt

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

Mã nguồn chiến lược
/*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)