Chiến lược Long-Short dựa trên SMA


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

Chiến lược Long-Short dựa trên SMA

Tổng quan

Chiến lược này được xây dựng dựa trên chỉ số SMA để tạo ra một chiến lược đa lỗ đơn giản. Khi giá vượt qua SMA cao 20 chu kỳ, hãy làm nhiều và khi giá vượt qua SMA thấp 20 chu kỳ, hãy làm trống.

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

Chiến lược này sử dụng SMA cao nhất và thấp nhất trong 20 chu kỳ như là một chỉ số để đánh giá nhiều lỗ hổng. Khi giá vượt qua SMA cao nhất, nó được coi là hiện đang trong xu hướng tăng lên, và khi giá phá vỡ SMA thấp nhất, nó được coi là hiện đang trong xu hướng giảm, và khi đó nó được coi là trống.

Cụ thể, chiến lược này tính toán SMA 20 chu kỳ với giá cao nhất và giá thấp nhất, và vẽ đường chỉ số. Sau đó thiết lập logic giao dịch như sau:

Nhóm đầu vào nhiều đầu: giá đóng cửa trên đường SMA cao nhất Nhiều đầu ra sân: giá đóng cửa khi phá vỡ SMA cao nhất 0,99 lần

Đầu vào không: khi giá đóng cửa vượt SMA thấp nhất
Bước ra thị trường: giá đóng cửa khi giao dịch đạt 1,01 lần SMA thấp nhất

Do đó, một chiến lược đa không gian theo xu hướng đã được xây dự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 chỉ số SMA để xác định xu hướng đơn giản và thực tế
    1. HIGHEST SMA và LOWEST SMA đóng vai trò quan trọng của chỉ số như là đường kháng cự hỗ trợ
    2. Thiết kế giảm thiệt hại hợp lý, tránh thiệt hại lớn nhất
    3. Khả năng ứng dụng, có thể sử dụng trong nhiều khoảng thời gian và giống

Phân tích rủi ro

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

  1. Chỉ số SMA bị tụt hậu, có thể bỏ lỡ điểm chuyển hướng
  2. Các biện pháp phòng ngừa các sự kiện bất ngờ không liên quan đến thị trường
  3. Không tính đến chi phí giao dịch

Những rủi ro này có thể được kiểm soát và giảm bằng cách kết hợp với các chỉ số khác, thiết lập dừng lỗ, tham số tối ưu hóa và nhiều cách khác.

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

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

  1. Kết hợp với các chỉ số khác để đánh giá xu hướng, chẳng hạn như MACD, KDJ, v.v.
  2. Thêm các biện pháp phòng ngừa đối với các sự kiện bất ngờ, chẳng hạn như xử lý các trường hợp bất thường như đình chỉ, giới hạn giá
  3. Tối ưu hóa các tham số chu kỳ SMA, tìm các tham số kết hợp tốt nhất
  4. Xem xét các tham số tối ưu cho các giống khác nhau, các chu kỳ khác nhau
  5. Đánh giá tác động của chi phí giao dịch, thiết lập điểm dừng lỗ và điểm dừng tối ưu

Tóm tắt

Chiến lược này có ý tưởng tổng thể rõ ràng, dễ thực hiện, thông qua các chỉ số SMA để đánh giá xu hướng trống, thiết lập cơ chế xuất nhập hợp lý, có thể đạt được hiệu quả tốt. Có không gian để tối ưu hóa hơn nữa, nếu kết hợp với các chỉ số và kỹ thuật khác, có thể trở thành một chiến lược có tiềm năng tốt để theo dõi lâu dài.

Mã nguồn chiến lược
/*backtest
start: 2023-11-14 00:00:00
end: 2023-11-21 00:00:00
period: 10m
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/
// © AlanAntony

//@version=4


strategy("ma 20 high-low",overlay=true)

//compute the indicators

smaH = sma(high, 20)
smaL = sma(low, 20)


//plot the indicators
plot(smaH,title="smaHigh", color=color.green, linewidth=2)


plot(smaL,title="smaLow", color=color.red, linewidth=2)


//trading logic
enterlong = crossover(close,smaH) //positive ema crossover
exitlong = crossunder(close,0.99*smaH)  //exiting long


entershort = crossunder(close,smaL) //negative EMA Crossover
exitshort = crossover(close,1.01*smaH) //exiting shorts


notintrade = strategy.position_size<=0
bgcolor(notintrade ? color.red:color.green)

//execution logic

start = timestamp(2015,6,1,0,0)
//end = timestamp(2022,6,1,0,0)

if time >= start
    strategy.entry( "long", strategy.long,1, when = enterlong)
    strategy.entry( "short", strategy.short,1, when = entershort) 
    
    strategy.close("long", when = exitlong)
    strategy.close("short", when = exitshort)

//if time >= end
   // strategy.close_all()