Chiến lược thoái lui động lượng


Ngày tạo: 2023-12-12 16:34:52 sửa đổi lần cuối: 2023-12-12 16:34:52
sao chép: 0 Số nhấp chuột: 837
1
tập trung vào
1621
Người theo dõi

Chiến lược thoái lui động lượng

Tổng quan

Chiến lược rút lui động lực (Momentum Pullback Strategy) là một chiến lược ngắn hạn và dài hạn để xác định các giá trị cực đoan của RSI như một tín hiệu động lực. Không giống như hầu hết các chiến lược RSI, chiến lược này tìm kiếm lần rút lui đầu tiên để tham gia vào hướng đọc RSI cực kỳ.

Nó thực hiện tăng/giảm tại điểm quay trở lại đầu tiên của 5 ngày EMA (giá thấp) / 5 ngày EMA (giá cao) và trượt lên vị trí cao nhất/thấp nhất của 12 đường K. Cơ chế trượt cao nhất/thấp nhất này có nghĩa là nếu giá đi vào một trục trặc dài hạn, mục tiêu dừng sẽ giảm theo mỗi đường K mới xuất hiện.

Khoảng cách dừng lỗ được đề xuất là X lần ATR của giá nhập cảnh (có thể điều chỉnh trong tham số nhập của người dùng).

Chiến lược này có tính ổn định mạnh mẽ đối với các chu kỳ thời gian và thị trường, tỷ lệ thắng nằm trong khoảng 60-70% và quy mô giao dịch lợi nhuận lớn. Cần tránh tạo ra tín hiệu trong sự biến động do tin tức kinh tế quan trọng gây ra.

Nguyên tắc chiến lược

  1. Tính RSI 6 ngày, tìm điểm cực cao hơn 90 (thay quá) và dưới 10 (thay quá)

  2. Khi RSI mua quá mức, kéo trở lại 5 ngày EMA (đường thấp) trong 6 đường K

  3. Khi RSI bán quá mức, kéo trở lại 5 ngày EMA (đường cao nhất) trong 6 đường K

  4. Chiến lược xuất phát là di chuyển dừng lại, Long Position sử dụng điểm cao nhất của 12 đường K trước đây làm mục tiêu xuất phát đầu tiên, sau đó được cập nhật thành điểm cao nhất 12 đường K mới khi một đường K mới xuất hiện, để thực hiện xuất phát cuộn. Ngược lại, trục trặc, dừng lỗ bằng cách cuộn 12 đường K thấp nhất.

  5. Khoảng cách dừng lỗ là X lần ATR giá vào cửa, có thể tùy chỉnh.

Phân tích lợi thế

Chiến lược này kết hợp các cực RSI như một tín hiệu động lực và kéo trở lại để nắm bắt các điểm đảo ngược tiềm năng trong xu hướng, có tỷ lệ thắng cao hơn.

Cơ chế chặn di động được kích hoạt, có thể khóa một phần lợi nhuận dựa trên biến động thực tế của giá, giảm sự rút lui.

ATR Stop Loss có thể kiểm soát hiệu quả tổn thất đơn lẻ.

Khả năng mạnh mẽ, có thể áp dụng cho các thị trường khác nhau và kết hợp các tham số, dễ dàng sao chép đĩa cứng.

Phân tích rủi ro

Nếu giá trị ATR được đặt quá lớn, có thể gây ra khoảng cách dừng quá xa và tổn thất đơn lẻ mở rộng.

Nếu xảy ra ██ trục trặc, cơ chế dừng di động sẽ thu hẹp không gian lợi nhuận.

Nếu kéo lại quá sâu hơn 6 đường K, bạn sẽ bỏ lỡ thời gian vào sân.

Nếu xảy ra một sự kiện kinh tế quan trọng, giao dịch có thể bị trượt hoặc phá vỡ giả.

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

Có thể thử nghiệm rút ngắn số gốc nhập học, ví dụ như từ 6 đến 4 đường K, để tăng tỷ lệ thành công nhập học.

Có thể thử nghiệm tăng ATR để kiểm soát thêm lỗ hổng đơn.

Có thể kết hợp các chỉ số năng lượng, tránh thiệt hại gây ra bởi việc sắp xếp đùi.

Có thể quay trở lại sau khi vượt qua vòng 60 phút, có thể lọc một số tiếng ồn.

Tóm tắt

Chiến lược kéo lùi động lực nói chung là một chiến lược bắt đường ngắn rất thực tế. Nó kết hợp xu hướng, đảo ngược, dừng nhiều khía cạnh, có thể hoạt động dễ dàng và có một số Alpha.

Mã nguồn chiến lược
/*backtest
start: 2022-12-05 00:00:00
end: 2023-12-11 00:00:00
period: 1d
basePeriod: 1h
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/
// © Marcns_

//@version=5
strategy("M0PB", commission_value = 0.0004, slippage = 1, initial_capital=30000)
// commision is equal to approx $3.8 per round trip which is accurate for ES1! futures and slippage per trade is conservatively 1 tick in and 1 tick out. 

// *momentum pull back* //

// long / short strategy that identifies extreme readings on the rsi as a *momentum signal*
//Strategy buys/ sells a pullback to the 5ema(low)/ 5ema(high) and exits at rolling 12 bar high/ low. The rolling high/ low feature means that 
//if price enters into a pronlonged consolidation the profit target will begin to reduce with each new bar. The best trades tend to work within 2-6 bars
// hard stop is X atr's from postion average price. This can be adjusted in user inputs.
// built for use on 5 min & 1min intervals on: FX, Indexes, Crypto
// there is a lot of slack left in entries and exits but the overall strategy is fairly robust across timeframes and markets and has between 60%-70% winrate with larger winners.
// signals that occur from economic news volatility are best avoided.  


// define rsi
r = ta.rsi(close,6) 

// find rsi > 90
b = 0.0

if r >= 90
    b := 1.0
else
    na

// find rsi < 10
s = 0.0

if r <= 10
    s := -1.0
else
    na

// plot rsi extreme as painted background color
bgcolor(b ? color.rgb(255, 82, 82, 49): na)
bgcolor(s? color.rgb(76, 175, 79, 51): na)



// exponential moving averages for entries. note that source is high and low (normally close is def input) this creates entry bands
//entry short price using high as a source ta.ema(high,5)
es = ta.ema(high,5)

//entry long price using low as a source ta.ema(low,5)
el = ta.ema(low,5)


// long pullback entry trigger: last period above ema and current low below target ema entry 
let = 0.0

if low[1] > el[1] and low <= el
    let := 1.0
else
    na
//short entry trigger ""
set = 0.0

if high[1] < es[1] and high >= es
    set := -1.0
else
    na

// create signal "trade_l" if RSI > 90 and price pulls back to 5ema(low) within 6 bars
trade_l = 0.0

if ta.barssince(b == 1.0) < 6 and let == 1.0
    trade_l := 1.0
else
    na

plot(trade_l, "l_entry", color.green)

//create short signal "trade_s" if rsi < 10 and prices pullback to 5em(high) wihthin 6 bars
trade_s = 0.0

if ta.barssince(s == -1.0) < 6 and set == -1.0
    trade_s := -1.0
else
    na

plot(trade_s, "s_entry", color.purple)

// define price at time of trade_l signal and input value into trade_p to use for stop parems later
trade_p = strategy.position_avg_price

//indentify previous 12 bar high as part of long exit strat
// this creates a rolling 12 bar high target... a quick move back up will exit at previous swing high but if a consolidation occurs system will exit on a new 12 bar high which may be below prev local high
ph = ta.highest(12)

// inverse of above for short exit strat - previous lowest low of 12 bars as exit (rolling)
pl = ta.lowest(12)


// 1.5 atr stop below entry price (trade_p defined earlier) as part of exit strat
atr_inp = input.float(2.75, "atr stop", minval = 0.1, maxval = 6.0)

atr = ta.atr(10)

stop_l = trade_p - (atr* atr_inp)
stop_s = trade_p + (atr* atr_inp)

//strat entry long

strategy.entry("EL", strategy.long, 2, when = trade_l == 1.0)

//strat entry short

strategy.entry("ES", strategy.short, 2, when = trade_s == -1.0)   
    
//strat long exit

if strategy.position_size == 2
    strategy.exit(id = "ph", from_entry = "EL", qty = 2, limit = ph)
    if strategy.position_size == 2
        strategy.close_all(when = low[1] > stop_l[1] and low <= stop_l)

// strat short exit

if strategy.position_size == -2
    strategy.exit(id = "pl", from_entry = "ES", qty = 2, limit =pl)
    if strategy.position_size == -2
        strategy.close_all(when = high[1] < stop_s[1] and high >= stop_s)




// code below to trail remaining 50% of position //

 //if strategy.position_size == 1 
        //strategy.exit(id ="trail", from_entry = "EL", qty = 1, stop = el)