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


Ngày tạo: 2023-11-27 16:21:45 sửa đổi lần cuối: 2023-11-27 16:21:45
sao chép: 0 Số nhấp chuột: 553
1
tập trung vào
1617
Người theo dõi

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

Tổng quan

Chiến lược này thực hiện LONG hoặc SHORT nhập vào khi chúng xảy ra Gold Fork hoặc Dead Fork bằng cách tính toán các đường trung bình di chuyển đơn giản 30 ngày nhanh và đường trung bình di chuyển đơn giản 33 ngày chậm của cổ phiếu. Chấm dứt ngay lập tức khi có tín hiệu ngược lại. Điều này có thể nắm bắt hiệu quả các thay đổi trong xu hướng.

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

Cốt lõi của chiến lược này là tính toán đường trung bình 30 ngày nhanh và đường trung bình 33 ngày chậm. Đường nhanh phản ứng nhanh hơn với sự thay đổi của giá trong khi đường chậm có hiệu quả sóng tốt hơn.

Bằng cách thiết kế chéo đường trung bình nhanh chậm như vậy, có thể tạo ra tín hiệu giao dịch khi xu hướng bắt đầu và dừng lại khi tín hiệu ngược lại xuất hiện, có hiệu quả trong việc nắm bắt xu hướng giá của đường dài và trung bình. Đồng thời tránh bị xáo trộn bởi quá nhiều biến động của thị trường.

Phân tích lợi thế

Chiến lược này có một số ưu điểm:

  1. Sử dụng trung bình di chuyển đơn giản, dễ hiểu và thực hiện
  2. Kết hợp giữa đường nhanh và đường chậm có thể phản ứng nhanh với sự thay đổi giá cả và có hiệu ứng sóng.
  3. Các tín hiệu Gold Forks và Dead Forks đơn giản, rõ ràng và dễ sử dụng
  4. Có thể nắm bắt được xu hướng trung bình và dài
  5. Tốc độ dừng nhanh khi có tín hiệu đảo ngược, có thể kiểm soát rủi ro

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Một số tín hiệu sai có thể xảy ra khi giá đang trong trạng thái dao động, dẫn đến giao dịch quá thường xuyên
  2. Không thể đối phó tốt với sự biến động giá mạnh do sự kiện bất ngờ
  3. Các tham số được chọn có thể cần được tối ưu hóa, chẳng hạn như chu kỳ trung bình, và nếu không được thiết lập đúng sẽ ảnh hưởng đến hiệu suất của chiến lược
  4. Chi phí giao dịch ảnh hưởng đến lợi nhuận

Những rủi ro này có thể được kiểm soát và giảm thiểu bằng các phương pháp như tối ưu hóa tham số, thiết lập điểm dừng lỗ và giao dịch chỉ khi có xu hướng rõ ràng.

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

Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Tối ưu hóa chu kỳ đường trung bình và loại chéo để tìm ra sự kết hợp tham số tối ưu
  2. Thêm bộ lọc cho các chỉ số kỹ thuật khác, chẳng hạn như khối lượng giao dịch, MACD, v.v., để giảm tín hiệu giả
  3. Thêm cơ chế dừng lỗ thích ứng thay vì chỉ đơn giản là dừng tín hiệu ngược
  4. Cấu hình và luật dừng lỗ cho các tham số thiết kế khác nhau
  5. Các tham số điều chỉnh động của các phương pháp kết hợp với học máy

Bằng cách thử nghiệm và tối ưu hóa, các quy tắc chiến lược có thể được cải thiện liên tục để có được tín hiệu giao dịch đáng tin cậy hơn trong các môi trường thị trường khác nhau.

Tóm tắt

Chiến lược phá vỡ chéo hai đường trung bình này khá đơn giản và thực tế, thông qua sự kết hợp của đường trung bình nhanh và đường trung bình chậm, có thể xác định hiệu quả sự bắt đầu của xu hướng đường trung bình dài, tạo ra tín hiệu giao dịch đáng tin cậy hơn. Ngoài ra, quy tắc dừng lỗ của nó cũng dễ thực hiện. Bằng cách tối ưu hóa hơn nữa, chiến lược này có thể trở thành một hệ thống định lượng đáng giá để nắm giữ lâu dài.

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

//@version=3
//future strategy
//strategy(title = "es1!_1minute_hull", default_qty_type = strategy.fixed, initial_capital=250000,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2, calc_on_order_fills=false, calc_on_every_tick=false,pyramiding=0)
//strategy.risk.max_position_size(2)
//stock strategy
strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital=1000000, overlay = false)//, calc_on_order_fills=true, calc_on_every_tick=true)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true,initial_capital=250000, default_qty_type = strategy.percent_of_equity)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true, commission_type=strategy.commission.percent,commission_value=.005,default_qty_value=10000)
//strategy.risk.allow_entry_in(strategy.direction.long) // There will be no short entries, only exits from long.




testStartYear = 2010
testStartMonth = 1
testStartDay = 1
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testEndYear = 2039
testEndMonth = 1
testEndDay = 1
testPeriodEnd = timestamp(testEndYear,testEndMonth,testEndDay,0,0)


testPeriod() =>
    //true
    time >= testPeriodStart and time <= testPeriodEnd ? true : false

fast_length = 30
slow_length = 33

ema1 = 0.0
ema2 = 0.0

volumeSum1 = sum(volume, fast_length)
volumeSum2 = sum(volume, slow_length)

//ema1 := (((volumeSum1 - volume) * nz(ema1[1]) + volume * close) / volumeSum1)
ema1 :=  ema(close,fast_length)
//ema2 := (((volumeSum2 - volume) * nz(ema2[1]) + volume * close) / volumeSum2)
ema2 :=  ema(close,slow_length)



plot(ema1,color=#00ff00, linewidth=3)
plot(ema2, color=#ffff00, linewidth=3)

go_long = crossover(ema1,ema2)
go_short = crossunder(ema1,ema2)

if testPeriod()
    strategy.entry("long_ride", strategy.long, when=go_long)
    strategy.entry("short_ride", strategy.short,when=go_short)
    
        
    strategy.close("long_ride",when=go_short)
    strategy.close("short_ride",when=go_long)