Chiến lược giao dịch Swing


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

Tổng quan

Đây là một chiến lược theo dõi xu hướng dựa trên đường trung bình di chuyển, kết hợp với quản lý dừng lỗ và hiệu ứng đòn bẩy, nhằm xác định xu hướng trong nhiều thị trường và tối đa hóa lợi nhuận.

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

Chiến lược này sử dụng các đường chéo giữa các đường trung bình di chuyển nhanh và đường trung bình di chuyển chậm làm tín hiệu giao dịch. Vị trí đa đầu được thực hiện khi các đường trung bình di chuyển chậm đi qua đường trung bình di chuyển nhanh; Vị trí trống được thực hiện khi các đường trung bình di chuyển chậm đi qua đường trung bình di chuyển nhanh.

Để lọc ra các giao dịch tiếng ồn không phải là xu hướng chính, chiến lược cũng giới thiệu đường trung bình di chuyển 200 ngày làm bộ lọc xu hướng. Chỉ khi giá cao hơn hoặc thấp hơn đường trung bình di chuyển 200 ngày, tín hiệu giao dịch sẽ được phát ra.

Chiến lược này sử dụng chiến lược dừng lỗ giao dịch trong khoảng thời gian. Sau khi giao dịch, bạn sẽ đặt mức dừng lỗ và dừng lỗ theo tỷ lệ cố định, chẳng hạn như đặt mức dừng lỗ là 1%, dừng lỗ là 1%, và khi giá chạm mức dừng lỗ hoặc dừng lỗ, bạn sẽ thanh toán.

Để tăng lợi nhuận giao dịch, chiến lược sử dụng hiệu ứng đòn bẩy. Tùy thuộc vào đặc điểm của thị trường khác nhau, tỷ lệ đòn bẩy thích hợp có thể được chọn, ví dụ như đòn bẩy gấp 10 lần.

Phân tích lợi thế

  • Một trong những ưu điểm của chiến lược là có thể nhận ra xu hướng trong nhiều thị trường, bao gồm thị trường tiền điện tử, chứng khoán và tương lai, mở rộng khả năng áp dụng chiến lược.

  • Ứng dụng chéo đường trung bình nhanh và lọc xu hướng, có thể nhận ra hướng xu hướng tốt hơn, có tỷ lệ thắng tốt hơn trong tình huống xu hướng.

  • Sử dụng chiến lược dừng lỗ trong khoảng, bạn có thể kiểm soát tổn thất đơn trong một phạm vi khả thi, có lợi cho hoạt động ổn định của chiến lược.

  • Hiệu quả đòn bẩy có thể làm tăng lợi nhuận giao dịch, từ đó tận dụng tối đa lợi thế của chiến lược.

  • Thiết kế giao diện trực quan, sử dụng các biểu tượng màu nền khác nhau cho thị trường đa đầu và trống, người dùng có thể trực quan đánh giá tình hình thị trường hiện tại.

Phân tích rủi ro

  • Chiến lược dựa trên tư tưởng giao dịch theo xu hướng, hiệu quả giao dịch sẽ bị chiết khấu trong thị trường biến động.

  • Lệnh dừng lỗ tỷ lệ cố định có nguy cơ bị mạo hiểm, nên điều chỉnh mức dừng lỗ theo thị trường cụ thể.

  • Leverage làm tăng quy mô giao dịch, cũng làm tăng rủi ro giao dịch. Cần kiểm soát tỷ lệ đòn bẩy để tránh vượt quá phạm vi tổn thất chấp nhận được.

  • Đường trung bình di chuyển tự nó có độ trễ, có thể gây ra sự chậm trễ tín hiệu giao dịch.

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

  • Bạn có thể nghiên cứu hiệu suất của các chiến lược dưới các tổ hợp tham số khác nhau, chọn các tổ hợp tham số tốt hơn với độ dài đường trung bình nhanh chậm.

  • Có thể kết hợp các chỉ số hoặc mô hình khác làm tín hiệu lọc để tăng độ chính xác của chiến lược. Ví dụ: giới thiệu ATR Stop Loss, chỉ số RSI, v.v.

  • Có thể nghiên cứu các chỉ số nhận dạng xu hướng, chẳng hạn như chỉ số DC, để nâng cao hơn nữa khả năng phán đoán của chiến lược về xu hướng.

  • Có thể kết hợp mô hình học máy để tối ưu hóa tín hiệu chiến lược, xác định thời điểm giao dịch hiệu quả hơn.

  • Bạn có thể xem xét động điều chỉnh mức độ dừng lỗ và đặt một mức dừng lỗ hợp lý hơn tùy theo biến động và tình hình thị trường.

Tóm tắt

Chiến lược này sử dụng phương pháp theo dõi xu hướng của hệ thống khoa học hơn, đồng thời hỗ trợ ngăn chặn lỗ và đòn bẩy để kiểm soát rủi ro và tăng lợi nhuận. Chiến lược này có thể được áp dụng rộng rãi cho nhiều thị trường, hy vọng sẽ thu được lợi nhuận vượt trội ổn định. Tuy nhiên, vẫn cần chú ý đến các khía cạnh tối ưu hóa tham số, kiểm soát gió và cập nhật chiến lược để hoạt động hiệu quả lâu dài.

Mã nguồn chiến lược
/*backtest
start: 2023-09-10 00:00:00
end: 2023-10-10 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

////////////////////////////////////////////////////////////////////////////////
// Bozz Strategy
// Developed for Godstime
// Version 1.1
// 11/28/2021
////////////////////////////////////////////////////////////////////////////////

//@version=4
// strategy("Bozz Strategy", "", true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, margin_long=0, margin_short=0)

// ----------------------------- Inputs ------------------------------------- //
source_ma_type = input("EMA", "Source MA Type", options=["SMA", "EMA"])
source_ma_length = input(50, "Source MA Length")
fast_ma_length = input(20, "Fast MA Length")
slow_ma_length = input(50, "Slow MA Length")
use_trend_filter = input(true, "Trend Filter")
trend_filter_ma_type = input("EMA", "Trend Filter MA Type", options=["SMA", "EMA"])
trend_filter_ma_length = input(200, "Trend Filter MA Period")
show_mas = input(true, "Show MAs")
swing_trading_mode = input(false, "Swing Trading")

// -------------------------- Calculations ---------------------------------- //
fast_ma = ema(close, fast_ma_length)
slow_ma = ema(close, slow_ma_length)
source_ma = source_ma_type == "EMA"? ema(close, source_ma_length): 
                                     sma(close, source_ma_length)
trend_filter_ma = trend_filter_ma_type == "EMA"? ema(close, trend_filter_ma_length): 
                                                 sma(close, trend_filter_ma_length)

// --------------------------- Conditions ----------------------------------- //
uptrend = not use_trend_filter or close > trend_filter_ma
buy_cond = crossover(fast_ma, slow_ma) and uptrend

downtrend = not use_trend_filter or close < trend_filter_ma
sell_cond = crossunder(fast_ma, slow_ma) and downtrend

// ---------------------------- Plotting ------------------------------------ //
bgcolor(use_trend_filter and downtrend? color.red: use_trend_filter? color.green: na)
plot(show_mas? fast_ma: na, "Fast MA", color.green)
plot(show_mas? slow_ma: na, "Slow MA", color.red)
plot(show_mas? source_ma: na, "Source MA", color.purple)
plot(show_mas? trend_filter_ma: na, "Trend Filter MA", color.blue)


// ---------------------------- Trading  ------------------------------------ //
// Inputs
sl_perc = input(1.0, "Stop Loss (in %)", group="Backtest Control")/100
tp_perc = input(1.0, "Take Profit (in %)", group="Backtest Control")/100
leverage = input(10, "Leverage", maxval=100, group="Backtest Control")
bt_start_time = input(timestamp("2021 01 01"), "Backtest Start Time", input.time, group="Backtest Control")
bt_end_time = input(timestamp("2021 12 31"), "Backtest End Time", input.time, group="Backtest Control")

// Trading Window
in_trading_window = true
trade_qty = (strategy.equity * leverage) / close 

// Long Side
strategy.entry("Long Entry", strategy.long,  when=buy_cond and in_trading_window)
long_tp = strategy.position_avg_price * (1 + tp_perc)
long_sl = strategy.position_avg_price * (1 - sl_perc)
if not swing_trading_mode
    strategy.exit("Long Exit", "Long Entry", limit=long_tp, stop=long_sl)

// Short Side
strategy.entry("Short Entry", strategy.short, when=sell_cond and in_trading_window)
short_tp = strategy.position_avg_price * (1 - tp_perc)
short_sl = strategy.position_avg_price * (1 + sl_perc)
if not swing_trading_mode
    strategy.exit("Short Exit", "Short Entry", limit=short_tp, stop=short_sl)

// End of trading window close
strategy.close_all(when=not in_trading_window)