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

Tác giả:ChaoZhang, Ngày: 2023-11-27 16:21:45
Tags:

img

Tổng quan

Chiến lược này tạo ra các tín hiệu nhập cảnh LONG hoặc SHORT khi trung bình di chuyển đơn giản nhanh 30 ngày và trung bình di chuyển đơn giản chậm 33 ngày của giá cổ phiếu giao nhau. Nó thoát khỏi vị trí ngay lập tức khi tín hiệu ngược lại xảy ra. Điều này có thể nắm bắt hiệu quả sự thay đổi của 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 MA nhanh 30 ngày và đường MA chậm 33 ngày. Đường nhanh có thể phản ứng với sự thay đổi giá nhanh hơn trong khi đường chậm có hiệu ứng lọc tốt hơn. Khi đường nhanh vượt qua đường chậm lên, một tín hiệu mua được tạo ra. Điều này cho thấy giá bắt đầu tăng và đường nhanh đã phản ứng trong khi đường chậm vẫn tụt hậu. Khi đường nhanh vượt qua đường chậm xuống, một tín hiệu bán được tạo ra. Điều này cho thấy giá bắt đầu giảm trong khi đường nhanh đã phản ứng nhưng đường chậm vẫn tụt hậu.

Thông qua thiết kế chéo MA nhanh và chậm như vậy, nó có thể tạo ra các tín hiệu giao dịch khi một xu hướng mới bắt đầu, và thoát ra ở các tín hiệu ngược lại, có hiệu quả nắm bắt xu hướng giá trung và dài hạn.

Phân tích lợi thế

Chiến lược có những lợi thế sau:

  1. Sử dụng trung bình di chuyển đơn giản, nó dễ hiểu và thực hiện
  2. Sự kết hợp của đường dây nhanh và đường dây chậm có thể phản ứng với sự thay đổi giá nhanh chóng và cũng có tác dụng lọc
  3. Các tín hiệu thập giá vàng và thập giá chết đơn giản và rõ ràng, dễ vận hành
  4. Có thể nắm bắt hiệu quả xu hướng trung và dài hạn
  5. Ra khỏi nhanh chóng ở các tín hiệu đối diện để kiểm soát rủi ro

Phân tích rủi ro

Ngoài ra còn có một số rủi ro cho chiến lược này:

  1. Nó có thể tạo ra nhiều tín hiệu sai khi giá được giới hạn trong phạm vi, gây ra quá giao dịch
  2. Không thể xử lý những biến động giá cực đoan do các sự kiện bất ngờ rất tốt
  3. Các thông số như thời gian MA có thể cần tối ưu hóa, cài đặt không đúng sẽ ảnh hưởng đến hiệu suất chiến lược
  4. Chi phí giao dịch ảnh hưởng đến lợi nhuận ở một mức độ nào đó

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

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

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

  1. Tối ưu hóa các khoảng thời gian MA và các loại chéo để tìm kết hợp tham số tối ưu
  2. Thêm các bộ lọc chỉ số kỹ thuật khác, ví dụ: khối lượng giao dịch, MACD vv để giảm tín hiệu sai
  3. Thêm cơ chế dừng mất mát thích nghi thay vì chỉ đơn giản là phản đối tín hiệu dừng mất mát
  4. Các bộ tham số thiết kế và các quy tắc dừng mất mát cho các sản phẩm khác nhau
  5. Kết hợp các phương pháp học máy để điều chỉnh các tham số một cách năng động

Thông qua 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 các tín hiệu giao dịch đáng tin cậy hơn trên các môi trường thị trường khác nhau.

Tóm lại

Tóm lại, chiến lược đột phá chéo MA kép này khá đơn giản và thực tế. Bằng cách kết hợp MA nhanh và MA chậm, nó có thể xác định hiệu quả sự bắt đầu của xu hướng trung và dài hạn và tạo ra các tín hiệu giao dịch tương đối đáng tin cậy. Ngoài ra, quy tắc dừng lỗ của nó rất dễ thực hiện. Với 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 dài hạn có giá trị.


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

Thêm nữa