Chiến lược SMA thoát kênh

Tác giả:ChaoZhang, Ngày: 2023-10-23 17:08:51
Tags:

img

Tổng quan

Chiến lược này dựa trên việc phá vỡ kênh và sử dụng đường chéo trung bình động như tín hiệu thoát.

Chiến lược logic

  1. Tính toán mức cao nhất và thấp nhất trong một khoảng thời gian nhất định để xây dựng kênh trên và dưới.

  2. Đi dài khi giá phá vỡ trên kênh trên; đi ngắn khi giá phá vỡ dưới kênh dưới.

  3. Tính toán đường SMA nhanh và chậm.

  4. Nếu dài, đóng dài khi SMA nhanh vượt qua SMA chậm; Nếu ngắn, đóng ngắn khi SMA nhanh vượt qua SMA chậm.

Phân tích lợi thế

  1. Kết hợp kênh và hệ thống trung bình động có thể cải thiện lợi nhuận.

  2. Kênh đánh giá luân chuyển và SMA đánh giá sự cạn kiệt của xu hướng.

  3. Bộ lọc SMA tránh các whipsaws và giảm các giao dịch không cần thiết.

  4. Phạm vi kênh điều chỉnh phù hợp với các giai đoạn và biến động khác nhau.

Phân tích rủi ro

  1. Phạm vi kênh không chính xác có thể bỏ lỡ đột phá hoặc tạo ra đột phá sai.

  2. Các thông số SMA không đúng có thể thoát sớm hoặc muộn.

  3. Cần có kích thước vị trí hợp lý để hạn chế tổn thất đơn lẻ.

  4. Cẩn thận để không bị phá vỡ, tránh theo đuổi giá cao / bán thấp.

Tối ưu hóa

  1. Các thông số thử nghiệm để tối ưu hóa phạm vi kênh và thời gian SMA.

  2. Thêm bộ lọc xu hướng để cải thiện tỷ lệ thành công.

  3. Thêm kích thước vị trí như phần cố định và Martingale.

  4. Thêm stop loss để kiểm soát single loss.

Tóm lại

Chiến lược này tận dụng kênh và SMA để đạt được lợi nhuận ổn định trong các xu hướng mạnh. Nhưng phải tránh tổn thất cưa cưa và kích thước vị trí là rất quan trọng. Các cải tiến hơn nữa về điều chỉnh tham số, lọc tín hiệu và quản lý rủi ro sẽ cải thiện độ bền.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-13 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © anshuanshu333

//@version=4

// strategy("ChBrkOutStrategySMA", overlay=true, initial_capital = 200000)
length = input(title="Length", type=input.integer, minval=1, maxval=1000, defval=7)
     
fastSMA = sma(close,9)
slowSMA = sma(close,21)

upBound = highest(high, length)
downBound = lowest(low, length)

boundLongEntry = ((close >= upBound) or (high >= upBound)) and fastSMA>slowSMA and (close > open)
boundShortEntry =((close <= downBound) or (low <= downBound)) and fastSMA<slowSMA and (close <open)

u=plot(upBound, title = "Upper Bound",color=color.blue, linewidth=1)
l=plot(downBound, title = "Lower Bound",color=color.red, linewidth=1)
plot(fastSMA,title = "Fast SMA", color = color.red, linewidth =2)
plot(slowSMA,title = "Slow SMA" ,color = color.green, linewidth =1)
fill(u,l, transp=95)
plot(avg(upBound,downBound), title = "Avg", color=color.gray,linewidth =1)

     
if (boundLongEntry )
    strategy.entry("LE", long = true)
    
if (boundShortEntry)
    strategy.entry("SE", long = false)
    
SmaLongExit = crossunder(fastSMA,slowSMA)
SmaShortExit = crossover(fastSMA,slowSMA)

    
//Close TRades   
if (strategy.position_size > 0)
    strategy.close(id="LE",when= SmaLongExit)
if (strategy.position_size < 0)
    strategy.close(id="SE",when= SmaShortExit)

Thêm nữa