Chiến lược đột phá xu hướng trong ngày

Tác giả:ChaoZhang, Ngày: 2023-09-18 13:11:51
Tags:

Tổng quan

Đây là một xu hướng ngắn hạn trong ngày sau chiến lược dựa trên chỉ số Supertrend. Người dùng có thể xác định phiên giao dịch trong ngày mà trong đó chiến lược sẽ chạy.

Chiến lược đảo ngược vị trí bằng cách sử dụng số lượng gấp đôi khi tín hiệu thay đổi.

Chiến lược logic

  1. Tính toán chỉ số Supertrend dựa trên nhân được xác định bởi người dùng và thời gian ATR.

  2. Chụp đường siêu xu hướng như là hỗ trợ và kháng cự.

  3. Xác định các điều kiện dài / ngắn. Gần trên đường siêu xu hướng là điều kiện dài. Gần dưới đường siêu xu hướng là điều kiện ngắn.

  4. Kiểm tra xem thanh hiện tại có nằm trong phiên trong ngày do người dùng xác định không.

  5. Chỉ phát ra tín hiệu dài / ngắn khi phiên trong ngày hoạt động và các điều kiện dài / ngắn được đáp ứng.

  6. Quay lại vị trí bằng cách giao dịch đối diện với số lượng gấp đôi khi hướng Supertrend thay đổi.

  7. Xếp ngang các vị trí mở khi hướng Supertrend không thay đổi và phiên nội ngày kết thúc.

Phân tích lợi thế

  1. Supertrend xác định xu hướng và giảm các tín hiệu sai.

  2. Kết hợp Supertrend với giá gần tránh được dừng lại sớm.

  3. Trở lại vị trí kịp thời làm giảm tổn thất.

  4. Phiên bản trong ngày tránh rủi ro qua đêm.

  5. Bị ép ra khỏi phòng tránh nguy cơ quên bỏ phòng.

Phân tích rủi ro

  1. Các thông số Supertrend không chính xác có thể dẫn đến hiệu suất chiến lược kém.

  2. Việc đảo ngược vị trí làm tăng tần suất giao dịch và chi phí.

  3. Việc buộc phải rời khỏi buổi họp có thể dẫn đến tổn thất.

  • Nguy cơ 1 có thể được giảm thiểu thông qua tối ưu hóa tham số.

  • Rủi ro 2 có thể được kiểm soát bằng cách dừng lỗ.

  • Rủi ro 3 có thể được tránh bằng cách sử dụng stop loss hoặc bộ lọc xu hướng.

Cơ hội gia tăng

  1. Kiểm tra các chỉ số xu hướng khác nhau như MA, KDJ v.v.

  2. Thêm logic dừng lỗ.

  3. Thêm bộ lọc xu hướng để tránh tổn thất thoát buộc.

  4. Tối ưu hóa các thông số nhân và thời gian ATR.

  5. Thử nghiệm trên các dụng cụ khác nhau.

Kết luận

Chiến lược này kết hợp Supertrend và quản lý phiên trong ngày để tận dụng các sự phá vỡ xu hướng ngắn hạn.


/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Pritesh-StocksDeveloper

//@version=4
strategy("Supertrend - Intraday", overlay=true, calc_on_every_tick = true)

// ********** Strategy inputs - Start **********

// Used for intraday handling
// Session value should be from market start to the time you want to square-off 
// your intraday strategy
// Important: The end time should be at least 2 minutes before the intraday
// square-off time set by your broker
var i_marketSession = input(title="Market session", type=input.session, 
     defval="0915-1455", confirm=true)

var float i_multiplier = input(title = "Multiplier", type = input.float, 
     defval = 4, confirm=true)

var int i_atrPeriod = input(title = "ATR Period", type = input.integer, 
     defval = 14, confirm=true)

// ********** Strategy inputs - End **********


// ********** Supporting functions - Start **********

// A function to check whether the bar or period is in intraday session
barInSession(sess) => time(timeframe.period, sess) != 0

// ********** Supporting functions - End **********


// ********** Strategy - Start **********

[superTrend, dir] = supertrend(i_multiplier, i_atrPeriod)

colResistance = dir == 1 and dir == dir[1] ? color.new(color.red, 0) : color.new(color.red, 100)
colSupport = dir == -1 and dir == dir[1] ? color.new(color.green, 0) : color.new(color.green, 100)

plot(superTrend, color = colResistance, linewidth=2)
plot(superTrend, color = colSupport, linewidth=2)

// Long/short condition
longCondition = close > superTrend
shortCondition = close < superTrend

// See if intraday session is active
bool intradaySession = barInSession(i_marketSession)

// Trade only if intraday session is active
 
// Long position
// When longCondition and intradaySession both are true
strategy.entry(id = "Long", long = strategy.long, 
     when = longCondition and intradaySession)
 
// Short position
// When shortCondition and intradaySession both are true
strategy.entry(id = "Short", long = strategy.short, 
     when = shortCondition and intradaySession)
 
// Square-off position (when session is over and position is open)
squareOff = (not intradaySession) and (strategy.position_size != 0)
strategy.close_all(when = squareOff, comment = "Square-off")

// ********** Strategy - End **********

Thêm nữa