Chiến lược giao dịch Swing cuối tuần


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

Chiến lược giao dịch Swing cuối tuần

Tổng quan

Chiến lược này đặt ra các điều kiện nhập cảnh cho vị trí dài và vị trí trống theo giá đóng cửa thứ Sáu, giảm giá nhiều hơn khi mở cửa vào thứ Bảy và Chủ nhật, giảm giá trước khi mở cửa vào thứ Hai. Chiến lược này tạo ra lợi nhuận bằng cách nắm bắt biến động giá gần giá đóng cửa thứ Sáu.

Nguyên tắc

  1. Giá đóng cửa vào thứ Sáu được ghi lại như là giá tham chiếu
  2. Vào ngày thứ Bảy và Chủ nhật, giờ mở cửa:
    • Nếu giá cao hơn 4,5% so với giá đóng cửa hôm thứ Sáu, hãy giảm giá.
    • Nếu giá thấp hơn 4,5% giá đóng cửa hôm thứ Sáu, hãy làm nhiều hơn
  3. Cài đặt Stop Loss là 3% vốn đầu tư.
  4. Tất cả các vị trí đã bị xóa trước khi mở cửa vào thứ Hai.

Phân tích lợi thế

  1. Sử dụng biến động giá do khối lượng giao dịch thấp vào thứ Bảy và Chủ nhật để giảm rủi ro thị trường
  2. Điều kiện nhập cảnh và xuất cảnh rõ ràng, giảm khó khăn trong việc thực hiện chiến lược
  3. Hoạt động ngắn hạn, theo đuổi lợi nhuận nhỏ ổn định
  4. Chu kỳ ngắn, chuyển tiền nhanh

Phân tích rủi ro

  1. Các nhà đầu tư có thể sẽ không mở được các vị trí giao dịch vì giá sẽ dao động ít hơn dự kiến vào thứ Bảy và Chủ nhật.
  2. Sự biến động quá lớn dẫn đến mất mát
  3. Sự kiện lớn hôm thứ Hai khiến giá tăng cao, không thể dừng lại kịp thời

Giải pháp rủi ro:

  1. Chuyển động của điều kiện nhập học
  2. Đặt điểm dừng hợp lý
  3. Hoàn thành các khoản thanh toán trước, không giữ các khoản đầu tư vào cuối tuần

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

  1. Chuyển đổi mức độ tham gia tùy theo đặc điểm của các giống khác nhau
  2. Tối ưu hóa các điều kiện trục trặc dựa trên kết quả kiểm tra lại
  3. Lựa chọn mức độ khác nhau tùy theo quy mô vốn
  4. Bộ lọc kết hợp chỉ số đường bằng nhau vào thời gian

Tóm tắt

Chiến lược này là một chiến lược giao dịch ngắn hạn, có logic giao dịch rất rõ ràng và các biện pháp kiểm soát rủi ro. Bằng cách thiết lập tham số hợp lý và kiểm tra liên tục, có thể đạt được lợi nhuận đầu tư ổn định.

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

//@version=3
//Copyright Boris Kozak 
strategy("XBT Weekend Trade Strategy", overlay=true, default_qty_type=strategy.percent_of_equity,initial_capital=20000)
leverage = input(1,"Leverage")
profitTakingPercentThreshold = input(0.03,"Profit Taking Percent Threshold")

//****Code used for setting up backtesting.****///
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(12, "Backtest Start Month")
testStartDay = input(10, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2025, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FFFF : na
bgcolor(testPeriodBackgroundColor, transp=50)

testPeriod() => true
    
//****END Code used for setting up backtesting.****///


//*** Main entry point is here***//
// Figure out how many days since the Friday close 
days_since_friday = if dayofweek == 6
    0
else 
    if dayofweek == 7
        1
    else
        if dayofweek == 1
            2
        else
            if dayofweek == 2
                3
            else
                if dayofweek == 3
                    4
                else
                    if dayofweek == 4
                        5
                    else
                        6
    
// Grab the Friday close price
fridaycloseprice = request.security(syminfo.tickerid,'D',close[days_since_friday])
plot(fridaycloseprice)
strategy.initial_capital = 50000
// Only perform backtesting during the window specified 
if testPeriod()
    // If we've reached out profit threshold, exit all positions 
    if ((strategy.openprofit/strategy.initial_capital) > profitTakingPercentThreshold)
        strategy.close_all()
    // Only execute this trade on saturday and sunday (UTC)
    if (dayofweek == 7.0 or dayofweek == 1.0)
        // Begin - Empty position (no active trades)
        if (strategy.position_size == 0)
            // If current close price > threshold, go short 
            if ((close>fridaycloseprice*1.045))
                strategy.entry("Short Entry", strategy.short, leverage)
            else
                // If current close price < threshold, go long
                if (close<(fridaycloseprice*0.955))
                    strategy.entry("Long Entry",strategy.long, leverage)
        // Begin - we already have a position
        if (abs(strategy.position_size) > 0)
            // We are short 
            if (strategy.position_size < 0)
                if ((close>strategy.position_avg_price*1.045))
                    // Add to the position
                    strategy.entry("Adding to Short Entry", strategy.short, leverage)
            else
                strategy.entry("Long Entry",strategy.long,leverage)
    // On Monday, if we have any open positions, close them 
    if (dayofweek==2.0)
        strategy.close_all()