Chiến lược này được sử dụng đặc biệt cho các biến động giá vào cuối tuần, và được định hướng theo chiều dọc theo một phạm vi tăng/tăng được đặt trước. Đây là một chiến lược giao dịch sốc điển hình.
Nguyên tắc chiến lược:
Ví dụ, nếu giá đóng cửa vào thứ Sáu tuần trước, bạn có thể thiết lập một phạm vi tăng hoặc giảm, giới hạn là giá đóng cửa tăng 4,5%.
Khi giá vượt quá giới hạn trên của phạm vi, thực hiện giao dịch ngắn; khi giá dưới giới hạn dưới, thực hiện giao dịch nhiều hơn.
Trong trường hợp đã có vị trí, tiếp tục đặt cược dựa trên khoảng cách vượt quá một tầng mới, chẳng hạn như bỏ trống hoặc tăng thêm.
Khi thu nhập tích lũy đạt đến một tỷ lệ nhất định, vị thế dừng lại, ví dụ 10%
Các vị trí có tối đa hai hướng tại một thời điểm. Tất cả các vị trí đều được xóa trước khi mở cửa vào thứ Hai.
Những lợi thế của chiến lược này:
Thiết lập một dải nhấp nháy cố định để thực hiện các hoạt động cơ khí.
Các nhà đầu tư có thể tăng giá bán hàng bằng cách gia tăng cổ phiếu theo từng giai đoạn.
Quy luật chu kỳ ổn định, không bị ảnh hưởng cơ bản.
Rủi ro của chiến lược này:
Không có giới hạn về mức độ tổn thất đơn lẻ, có nguy cơ tổn thất đơn lẻ lớn.
Các tham số cố định không thể thích ứng với biến động của thị trường trong các khoảng thời gian khác nhau.
Có thể thay đổi quy luật định kỳ, dẫn đến nguy cơ thất bại của mô hình.
Tóm lại, chiến lược này sử dụng quy luật chu kỳ để giao dịch thường xuyên, nhưng có một số khó khăn trong việc khóa lợi nhuận. Cần cảnh giác về các tham số không hiệu quả và rủi ro mất mát đơn lẻ quá lớn, hành động thận trọng.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-12 00:00:00
period: 2d
basePeriod: 1d
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,)
strategy.initial_capital=50000
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 = security(syminfo.ticker,'D',close[days_since_friday])
plot(fridaycloseprice)
// 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
if ((close<strategy.position_avg_price*0.955))
strategy.entry("Adding to Long Entry",strategy.long,leverage)
// On Monday, if we have any open positions, close them
if (dayofweek==2.0)
strategy.close_all()