Chiến lược giao dịch đường trung bình động kép nhanh và chậm


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

Chiến lược giao dịch đường trung bình động kép nhanh và chậm

Tổng quan

Chiến lược giao dịch song song bằng cách tính toán đường trung bình di chuyển nhanh và đường trung bình di chuyển chậm và tạo ra tín hiệu giao dịch dựa trên sự giao nhau của hai đường trung bình di chuyển. Chiến lược đa đầu được sử dụng khi đi qua đường trung bình di chuyển chậm trên đường trung bình di chuyển nhanh; chiến lược không đầu được sử dụng khi đi qua đường trung bình di chuyển chậm dưới đường trung bình di chuyển nhanh.

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

Chiến lược này bắt đầu bằng cách thiết lập độ dài của đường trung bình di chuyển nhanh (maFastLength) và đường trung bình di chuyển chậm (maSlowLength). Sau đó, tính toán đường trung bình di chuyển nhanh (fastMA) và đường trung bình di chuyển chậm (slowMA).

Khi di chuyển nhanh trên đường trung bình di chuyển chậm, hãy thực hiện nhiều chiến lược, tạo ra tín hiệu goLong (). Khi di chuyển chậm dưới đường trung bình di chuyển nhanh, hãy làm nhiều đầu, tạo ra tín hiệu killLong ().

Bạn có thể chọn chỉ longonly, chỉ shorting, hoặc swapping hai chiều.

Khi thực hiện nhiều chiến lược, hãy mở nhiều vị trí khi tín hiệu goLong ((() xuất hiện; khi tín hiệu killLong ((() xuất hiện, hãy giữ vị trí thấp.

Khi thực hiện chiến lược tháo lỗ, hãy tháo lỗ khi tín hiệu killLong () xuất hiện; thanh toán khi tín hiệu goLong () xuất hiện.

Khi giao dịch hai chiều, mở nhiều vị trí khi tín hiệu goLong () xuất hiện; giảm nhiều vị trí và mở vị trí trống khi tín hiệu killLong () xuất hiện.

Ngoài ra, các chiến lược cũng có các chức năng như dừng lỗ, theo dõi dừng lỗ và thông báo giao dịch, cho phép lựa chọn linh hoạt.

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

  1. Chiến lược này rất đơn giản, dễ hiểu và dễ thực hiện.

  2. Bạn có thể tự do lựa chọn giao dịch ngoại hối, ngoại hối hoặc giao dịch hai chiều.

  3. Có thể lựa chọn một cách linh hoạt sử dụng các chức năng quản lý rủi ro như dừng lỗ, theo dõi dừng lỗ.

  4. Có thể tùy chỉnh thông báo giao dịch, nhắc nhở giao dịch trong thời gian thực.

  5. Chiến lược đường trung bình nhanh chậm nhạy cảm với sự thay đổi của xu hướng thị trường và có thể nắm bắt xu hướng mạnh hơn.

  6. Các tham số chiến lược có thể điều chỉnh, có thể điều chỉnh tham số cho các thị trường khác nhau, có khả năng thích ứng.

Rủi ro chiến lược

  1. Khi thị trường không có xu hướng rõ ràng, có thể có nhiều tín hiệu sai lệch, dẫn đến giao dịch quá mức.

  2. Hệ thống đường trung bình không nhạy cảm với các sự kiện bất ngờ, có thể bỏ lỡ cơ hội bất ngờ.

  3. Cần lựa chọn hợp lý các tham số đường trung bình, lựa chọn tham số không đúng có thể ảnh hưởng đến hiệu quả của chiến lược.

  4. Cần tuân thủ nghiêm ngặt các tín hiệu chiến lược để tránh các giao dịch tùy ý.

  5. Cần chú ý đến ảnh hưởng của chi phí giao dịch đối với lợi nhuận chiến lược.

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

  1. Các chỉ số khác như RSI có thể được đưa vào để xác minh tín hiệu giao dịch, tránh phát ra tín hiệu sai.

  2. Bạn có thể thiết lập chức năng tối ưu hóa tham số để tự động tìm kiếm sự kết hợp tham số tối ưu nhất.

  3. Có thể thiết lập dừng động để khóa lợi nhuận và điều chỉnh điểm dừng khi thích hợp.

  4. Các mô hình học máy có thể được sử dụng để xác định xu hướng.

  5. Bạn có thể tối ưu hóa các thông báo để phù hợp với thói quen giao dịch của mình.

Tóm tắt

Chiến lược giao dịch hai đường thẳng nói chung là đơn giản hơn, nhạy cảm hơn với sự thay đổi xu hướng thị trường, có thể nắm bắt cơ hội giao dịch từ xu hướng mạnh hơn. Tuy nhiên, cũng cần chú ý đến việc ngăn ngừa giao dịch sai trong thị trường không có xu hướng và điều chỉnh các tham số thích hợp để thích ứng với môi trường thị trường khác nhau. Ngoài ra, việc bổ sung các chỉ số kỹ thuật phụ trợ và chức năng tối ưu hóa thích hợp có thể tăng cường sự ổn định và thích ứng của chiến lược.

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

//@version=4

strategy("SMA Strategy", shorttitle="SMA Strategy", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === Inputs ===
// short ma
maFastSource = input(defval=close, title="Fast MA Source")
maFastLength = input(defval=3, title="Fast MA Period", minval=1)

// long ma
maSlowSource = input(defval=close, title="Slow MA Source")
maSlowLength = input(defval=9, title="Slow MA Period", minval=1)

// Trade direction
shorting = input(defval=false, title="Short only?")
longonly = input(defval=true, title="Long only?")
swapping = input(defval=false, title="Swap orders?")
// risk management
useStop = input(defval=false, title="Use Initial Stop Loss?")
slPoints = input(defval=25, title="Initial Stop Loss Points", minval=1)
useTS = input(defval=false, title="Use Trailing Stop?")
tslPoints = input(defval=120, title="Trail Points", minval=1)
useTSO = input(defval=false, title="Use Offset For Trailing Stop?")
tslOffset = input(defval=20, title="Trail Offset Points", minval=1)

// Messages for buy and sell
message_long_entry  = input("Long entry message", title="Long entry message")
message_long_exit   = input("Long exit message", title="Long exit message")
message_short_entry = input("Short entry message", title="Short entry message")
message_short_exit  = input("Short exit message", title="Short exit message")

// Calculate start/end date and time condition
startDate  = input(timestamp("2021-01-01T00:00:00"), type = input.time)
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time)
 
time_cond  = true
// === Vars and Series ===
fastMA = sma(maFastSource, maFastLength)
slowMA = sma(maSlowSource, maSlowLength)

plot(fastMA, color=color.blue)
plot(slowMA, color=color.purple)

goLong() =>
    crossover(fastMA, slowMA)
killLong() =>
    crossunder(fastMA, slowMA)
    
// Long only
if longonly
    strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_long_entry)
    strategy.close("Buy", when=killLong() and time_cond, alert_message = message_long_exit)

// Short only
if shorting
    strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_short_entry)
    strategy.close("Sell", when=goLong() and time_cond, alert_message = message_short_exit)
    
// Order Swapping
if swapping
    strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_long_entry)
    strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_short_entry)

if useStop
    strategy.exit("XLS", from_entry="Buy", stop=strategy.position_avg_price / 1.08, alert_message = message_long_exit)
    strategy.exit("XSS", from_entry="Sell", stop=strategy.position_avg_price * 1.08, alert_message = message_short_exit)