Ngày trước kết thúc với chiến lược theo dõi xu hướng ATR

Tác giả:ChaoZhang, Ngày: 2024-01-31 14:39:09
Tags:

img

Tổng quan

Chiến lược này thiết lập mức giá đầu vào dài và ngắn và mức giá dừng lỗ dựa trên giá đóng cửa ngày trước và chỉ số ATR để theo dõi xu hướng.

Chiến lược logic

Chiến lược này sử dụng giá đóng cửa, giá cao, giá thấp và chỉ số ATR của ngày trước để tính mức giá đầu vào và mức dừng lỗ.

Mức giá đầu vào dài TPup = Khóa ngày trước + ATR * 0.8
Mức giá nhập cảnh ngắn TPdown = Khóa ngày trước - ATR * 0.8

Mức stop-loss dài giảm = Mức đóng cửa ngày trước + ATR * 0.2
Mức dừng lỗ ngắn sldown = Chiết thúc ngày trước - ATR * 0.2

Mức lợi nhuận mua dàimức lợi nhuận tăng = Mức thấp ngày trước + ATR * 1.7
Mức lợi nhuận ngắn (Short Take Profit Level) Mức lợi nhuận giảm (Profit Level Down) = Tối cao ngày trước - ATR * 1.7

Khi giá vượt qua TPup, mua dài 10 lot. Khi giá vượt qua TPdown, mua ngắn 10 lot. Sau đó đặt dừng lỗ và lấy lợi nhuận.

Phân tích lợi thế

Những lợi thế chính của chiến lược này là:

  1. Sử dụng chỉ số ATR để thiết lập mức giá nhập cảnh năng động và mức dừng lỗ dựa trên sự biến động của thị trường, làm cho các giao dịch thích nghi hơn với điều kiện thị trường.

  2. Sử dụng ngày gần trước để xác định hướng và kết hợp với chỉ số ATR để xác định mức giao dịch cụ thể, tránh bị đánh lừa bởi quá nhiều tiếng ồn giá thời gian thực.

  3. Thiết lập cả cơ chế dừng lỗ và lấy lợi nhuận để kiểm soát hiệu quả rủi ro của mỗi giao dịch.

Phân tích rủi ro

Những rủi ro chính của chiến lược này là:

  1. Các mức giá được thiết lập bởi ATR có thể quá lý tưởng để phản ánh thực sự điều kiện thị trường, dẫn đến các kích hoạt dừng lỗ thường xuyên. Các thông số của ATR có thể được điều chỉnh hoặc phạm vi dừng lỗ có thể được mở rộng.

  2. Các chỉ số khác có thể được kết hợp để xác nhận xu hướng.

  3. Stop loss và take profit có thể được thao túng để kích hoạt, không thực sự dừng lỗ.

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

Chiến lược này có thể được tối ưu hóa trong các khía cạnh sau:

  1. Tối ưu hóa các thông số ATR để làm cho mức thương mại phù hợp hơn với sự biến động của thị trường.

  2. Thêm các cơ chế đánh giá xu hướng để tránh đảo ngược giao dịch, ví dụ như kết hợp với các chỉ số MA.

  3. Điều chỉnh phạm vi lấy lợi nhuận, giữ lợi nhuận trong khi giảm xác suất lợi nhuận lấy kích hoạt.

  4. Thiết lập lô dừng lỗ và lấy lợi nhuận để giảm xác suất bị mắc kẹt hoặc mất.

  5. Thêm cơ chế định kích thước vị trí để tăng vị trí trong các giai đoạn xu hướng.

Kết luận

Chiến lược này thiết lập các mức giao dịch năng động dựa trên ngày trước đóng cửa và ATR để theo dõi hiệu quả xu hướng. Nó cũng sử dụng dừng lỗ và lấy lợi nhuận để kiểm soát rủi ro giao dịch duy nhất. Các hướng tối ưu hóa bao gồm điều chỉnh tham số, tăng cường cơ chế đánh giá, điều chỉnh lợi nhuận và kích thước vị trí vv. Nói chung, chiến lược này đạt được hiệu ứng theo xu hướng tốt.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("PC with ATR Strategy (by Zhipengcfel)", shorttitle="PC_ATR", pyramiding=1, overlay=true)

// Zhipengcfel's Previous day's close with ATR Strategy
//
// Version 1.0
// @copyright Idea by Zhipengcfel on June 29, 2017.

//Previous day's close plus ATR strategy. 
//Buy (if breaking PC+ATR*0.8) or sell (if breaking PC-0.8*ATR). 

//This is just a demo vision and can not be used for real auto trading



///////////// ATR value
ATRlength = input(14, minval=1, title="lookback length of ATR")
//ATR = atr(ATRlength)
ATR = request.security(syminfo.tickerid, 'D', atr(ATRlength))

///////////// Entry levels and target levels
entr = input(0.8, minval=0.1, step = 0.05, title="Entry level for ATR")
tplevel = input(1.7, minval=0.1, step = 0.05, title="Exit level for ATR")
yesterday = request.security(syminfo.tickerid, 'D', close[1])
dl = request.security(syminfo.tickerid, 'D', low[1])
dh = request.security(syminfo.tickerid, 'D', high[1])
TPup = yesterday+entr*ATR
TPdown = yesterday-entr*ATR
profitlevelup = dl+tplevel*ATR
profitleveldown = dh-tplevel*ATR

///////////// Stop loss level
sl = input( 0.2  ,minval=0.01, step = 0.05, title="Stop loss level for ATR") //82 for 2, 83 for 3 and more positions
slup = yesterday+sl*ATR
sldown = yesterday-sl*ATR

///////////// Starting year to backtest
yer = input( 2014  , title="Backtest Starting year")


///////////// strategy: PC + ATR
if (close > TPup) and (close < profitlevelup)
    strategy.entry("LONG", strategy.long, 10, comment="Buy", when = year > yer, oca_name="My oca")
    strategy.exit("Stopped", "LONG",  stop = slup, limit= profitlevelup, oca_name="My oca")
            

if (close < TPdown) and (close > profitleveldown)
    strategy.entry("SHORT", strategy.short, 10, comment="Sell", when = year > yer, oca_name="My oca")
    strategy.exit("Stopped", "SHORT", stop = sldown, limit= profitleveldown, oca_name="My oca")
 

Thêm nữa