Chiến lược đảo ngược giao cắt đường trung bình động kép


Ngày tạo: 2023-11-22 10:07:19 sửa đổi lần cuối: 2023-11-22 10:07:19
sao chép: 1 Số nhấp chuột: 605
1
tập trung vào
1617
Người theo dõi

Chiến lược đảo ngược giao cắt đường trung bình động kép

Tổng quan

Ý tưởng chính của chiến lược này là sử dụng đường trung bình di chuyển nhanh và đường trung bình di chuyển chậm để đánh giá xu hướng thị trường và tham gia vào khi đường trung bình ngắn và đường trung bình dài bị đảo ngược, để có hiệu quả theo dõi xu hướng.

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

  1. Cài đặt chu kỳ đường trung bình di chuyển nhanh shortma ((7 ngày mặc định) và chu kỳ đường trung bình di chuyển chậm longma ((77 ngày mặc định)
  2. Khi đường ngắn đi qua đường dài trên đường trung bình được đánh giá là tín hiệu mua, ghi barssince ((mabuy), đường dài có nghĩa là vào xu hướng; khi đường ngắn đi qua đường dài dưới đường trung bình được đánh giá là tín hiệu bán, ghi barssince ((masell), đường dài có nghĩa là kết thúc xu hướng
  3. So sánh kích thước của barssince, số bar của đường trung bình ngắn xuyên qua từ trên xuống cho thấy thời gian kéo dài của xu hướng; ngược lại, số hốc của đường trung bình ngắn xuyên qua từ dưới lên cho thấy tín hiệu đảo ngược mạnh hơn
  4. Tín hiệu mua được phát ra khi số bar của tín hiệu bán lớn hơn số bar của tín hiệu mua; tín hiệu bán được phát ra khi số bar của tín hiệu mua lớn hơn số bar của tín hiệu bán
  5. such là một chiến lược đảo ngược hai đường trung bình, đánh giá điểm thay đổi xu hướng bằng cách đảo ngược đường trung bình nhanh và đường trung bình chậm

Lợi thế chiến lược

  1. Sử dụng phán đoán hai chiều bằng nhau, lọc một số tín hiệu giao dịch nhiễu
  2. Tăng so sánh barssince, tránh các tín hiệu sai dẫn đến phá giá sai và giá đóng
  3. Dễ hiểu và dễ thực hiện
  4. Các tham số trung bình di chuyển có thể tùy chỉnh cho các chu kỳ và thị trường khác nhau

Rủi ro chiến lược

  1. Chiến lược hai đường đồng nhất dễ tạo ra nhiều tín hiệu hơn, giao dịch thường xuyên
  2. Thiết lập tham số đường trung bình di chuyển không đúng có thể bỏ lỡ cơ hội xu hướng dài hơn
  3. Khi phá vỡ đường trung bình dài hạn, điểm dừng có thể rất xa và có sự rút lui lớn
  4. Không thể lọc thành công các biến động và biến động của thị trường

Hướng tối ưu hóa chiến lược

  1. Thêm bộ lọc cho các chỉ số khác để tránh bị mắc kẹt trong cơn động đất
  2. Tăng hệ thống chống thiệt hại
  3. Tối ưu hóa các tham số đường trung bình di chuyển
  4. Các tham số đường trung bình di chuyển được điều chỉnh theo động lực chu kỳ thị trường

Tóm tắt

Chiến lược nói chung là logic rõ ràng và dễ hiểu, thông qua đường trung bình nhanh và đường trung bình chậm để đánh giá điểm biến đổi xu hướng thị trường, theo lý thuyết có thể theo dõi xu hướng hiệu quả. Tuy nhiên, trong ứng dụng thực tế, vẫn cần tối ưu hóa cho thuật toán chiến lược và cài đặt tham số để làm cho nó ổn định hơn và thực tế.

Mã nguồn chiến lược
/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Up Down", "Up Down", precision = 6, pyramiding = 1, default_qty_type = strategy.percent_of_equity, default_qty_value = 99, commission_type = strategy.commission.percent, commission_value = 0.0, initial_capital = 1000, overlay = true)

buy = close > open and open > close[1]
sell = close < open and open < close[1]

longma = input(77,"Long MA Input")
shortma = input(7,"Short MA Input")
long = sma(close,longma)
short = sma(close, shortma)
mabuy = crossover(short,long) or buy and short > long
masell = crossunder(short,long) or sell and short > long

num_bars_buy = barssince(mabuy)
num_bars_sell = barssince(masell)
//plot(num_bars_buy, color = teal)
//plot(num_bars_sell, color = orange)

xbuy = crossover(num_bars_sell, num_bars_buy)
xsell = crossunder(num_bars_sell, num_bars_buy)
plotshape(xbuy,"Buy Up Arrow", shape.triangleup, location.belowbar, white, size = size.tiny)
plotshape(xsell,"Sell Down Arrow", shape.triangledown, location.abovebar, white, size = size.tiny)
plot(long,"Long MA", fuchsia, 2)

// Component Code Start
// Example usage:
// if testPeriod()
//   strategy.entry("LE", strategy.long)
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(7, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop

if testPeriod()
    strategy.entry("buy", true, when = xbuy, limit = close)
    strategy.close("buy", when = xsell)