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

Tác giả:ChaoZhang, Ngày: 2023-11-14 11:29:12
Tags:

img

Tổng quan

Đây là một chiến lược giao dịch ngắn hạn sử dụng khối lượng giao dịch cuối tuần tăng của Bitcoin bằng cách sử dụng đòn bẩy 10 lần. Ý tưởng chính là ghi lại giá đóng cửa thứ Sáu, so sánh giá đóng cửa hàng ngày vào thứ Bảy và Chủ nhật với giá đóng cửa thứ Sáu, và mua dài hoặc ngắn nếu ngưỡng vượt quá. Các vị trí sẽ được đóng cửa vào thứ Hai.

Chiến lược logic

Chiến lược đầu tiên ghi lại giá đóng cửa thứ sáu, sau đó tính toán số ngày kể từ thứ sáu. Vào thứ bảy và chủ nhật, nếu giá đóng cửa hàng ngày cao hơn 4,5% so với giá đóng cửa thứ sáu, hãy bán ngắn; nếu giá đóng cửa hàng ngày thấp hơn 4,5% so với giá đóng cửa thứ sáu, hãy mua dài. Mỗi giao dịch sử dụng đòn bẩy 10 lần. Nếu lợi nhuận đạt 10% vốn ban đầu, hãy đóng tất cả các vị trí. Vào thứ Hai, hãy đóng tất cả các vị trí bất kể.

Cụ thể, chiến lược lấy giá đóng cửa thứ sáu, sau đó so sánh giá đóng cửa hiện tại với thứ sáu vào thứ Bảy và Chủ nhật.strategy.short; nếu giá đóng cửa hiện tại thấp hơn 4,5% so với thứ sáu, mua dài quastrategy.longĐòn bẩy được thiết lập thành 10x thông qualeverageNếu lợi nhuận đạt 10% vốn ban đầu, đóng tất cả các vị trí thông quastrategy.close_all()Vào thứ hai, đóng tất cả các vị trí thông quastrategy.close_all().

Phân tích lợi thế

  • Sử dụng khối lượng giao dịch cuối tuần tăng của Bitcoin để giao dịch ngắn hạn, nắm bắt xu hướng cuối tuần
  • 10x đòn bẩy tăng lợi nhuận
  • Điều kiện lợi nhuận giúp khóa lợi nhuận và ngăn chặn tổn thất mở rộng
  • Đóng các vị trí vào thứ Hai tránh rủi ro từ các buổi mở ngày thứ Hai biến động

Phân tích rủi ro

  • Giá Bitcoin biến động vào cuối tuần, nguy cơ thua lỗ
  • 10x đòn bẩy tăng lỗ
  • Đặt lệnh dừng lỗ không đúng có thể dẫn đến tổn thất lớn
  • Mở ngày thứ Hai biến động có thể ngăn chặn lợi nhuận đầy đủ

Các cải tiến tiềm năng để giảm thiểu rủi ro:

  1. Thiết lập stop loss để kiểm soát lỗ cho mỗi giao dịch.
  2. Điều chỉnh đòn bẩy để giảm rủi ro.
  3. Tối ưu hóa điểm lợi nhuận, lấy lợi nhuận theo lô sau khi đạt đến mức lợi nhuận nhất định.
  4. Đặt khối lượng hoặc thời gian lấy lợi nhuận trước khi mở vào thứ Hai để tránh biến động.

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

Chiến lược có thể được cải thiện trong các khía cạnh sau:

  1. Thêm các chỉ số khác để có thời gian nhập tốt hơn.

  2. Tối ưu hóa chiến lược dừng lỗ và lấy lợi nhuận. Sử dụng dừng lại, lấy lợi nhuận theo giai đoạn vv để khóa lợi nhuận và kiểm soát rủi ro.

  3. Điều chỉnh kích thước đòn bẩy để giảm rủi ro. Thực hiện điều chỉnh đòn bẩy năng động, giảm đòn bẩy trong quá trình rút tiền.

  4. Thêm tiền điện tử khác. Giao dịch tiền điện tử bổ sung với các mô hình cuối tuần để điều chỉnh đa tài sản.

  5. Sử dụng máy học để tối ưu hóa các tham số. Thu thập các bộ dữ liệu lịch sử lớn và sử dụng ML để tự động tối ưu hóa điều chỉnh tham số động.

Tóm lại

Đây là một chiến lược giao dịch ngắn hạn điển hình sử dụng khối lượng cuối tuần tăng của Bitcoin. Nó tận dụng khối lượng cuối tuần bằng cách đánh giá xu hướng vào thứ Bảy và Chủ nhật, đi dài hoặc ngắn. Chiến lược có những lợi thế như khuếch đại lợi nhuận và kiểm soát rủi ro, nhưng cũng có một số rủi ro.


/*backtest
start: 2023-10-14 00:00:00
end: 2023-11-13 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=false)
leverage = input(10,"Leverage")
profitTakingPercentThreshold = input(0.10,"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()
 






Thêm nữa