Chiến lược TTM bước đột phá

Tác giả:ChaoZhang, Ngày: 2023-11-21 15:07:38
Tags:

img

Tổng quan

Đây là một chiến lược giao dịch đột phá tùy chọn nhị phân sử dụng chỉ số động lực RSI kết hợp với chỉ số Bollinger Bands BB. Về tính kịp thời, chỉ số TTM được sử dụng để xác định xem thị trường có đang trong trạng thái hợp nhất hay không, do đó cải thiện độ tin cậy của việc nhập cảnh.

Nguyên tắc

Chiến lược này được sử dụng để xác định hướng đột phá dựa trên các dải Bollinger và chỉ số RSI với điều kiện rằng bộ chỉ số TTM tạo thành một bước đột phá. Cụ thể, chiến lược sử dụng 20 giai đoạn BB và 30 giai đoạn RSI. Khi thị trường vượt qua sự ép buộc, nó xác định hướng mở khi RSI nằm trong phạm vi biến động nhất định (30-70) và BB có bước đột phá lớn (0,15 lần phạm vi biến động). Ngoài ra, chiến lược cũng kiểm tra hướng mở của đường K trước đó trước khi mở một vị trí để tránh mở lặp lại không cần thiết.

Ưu điểm

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

  1. Sử dụng chỉ số TTM để đánh giá tình trạng giao dịch của thị trường và tránh giao dịch vô nghĩa trong thị trường hợp nhất.

  2. Sự kết hợp của chỉ số RSI và BB có thể làm cho các vị trí mở ra đáng tin cậy hơn. Chỉ số RSI đánh giá liệu giá có bị mua quá mức hay bán quá mức; trong khi chỉ số BB đánh giá liệu giá có xảy ra đột phá lớn hay không. Sự kết hợp của cả hai làm cho chiến lược có lợi từ xu hướng hướng mạnh.

  3. Lý thuyết chiến lược xem xét một số tối ưu hóa như tránh mở lặp đi lặp lại. Điều này có thể giảm một số mức độ chuyển đổi lợi nhuận và lỗ không cần thiết.

Phân tích rủi ro

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

  1. Rủi ro thất bại phá vỡ. Khi chỉ số TTM không đánh giá chính xác xu hướng, RSI và BB vẫn có thể có sự phá vỡ sai. Tại thời điểm này, chiến lược mở các vị trí dựa trên các chỉ số, và cuối cùng có thể bị mắc kẹt. Để kiểm soát rủi ro này, hãy xem xét giảm kích thước vị trí.

  2. Khi thị trường dao động, rất dễ bị mất. Khi thị trường đang trong trạng thái dao động, hiệu suất của chỉ số TTM không phải là lý tưởng. Chỉ số RSI và BB cũng có thể cung cấp nhiều tín hiệu sai. Vào thời điểm này, rất dễ tạo ra lỗ. Để kiểm soát rủi ro này, tránh sử dụng chiến lược này trong các thị trường dao động rõ ràng.

Tối ưu hóa

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

  1. Tối ưu hóa các tham số của chỉ số TTM để điều chỉnh chiều dài và các nhân của chỉ số.

  2. Tối ưu hóa các thông số RSI và BB. Việc rút ngắn đúng số chu kỳ có thể thu được các tín hiệu đột phá kịp thời và chính xác hơn. Đồng thời, băng thông của kênh BB cũng có thể kiểm tra các giá trị khác nhau.

  3. Tăng logic stop loss. Vì chiến lược không đặt stop loss, để ngăn chặn một lỗ duy nhất quá lớn, hãy xem xét thêm stop loss di chuyển hoặc stop loss dự kiến.

  4. Các biến thể khác nhau của các tham số có thể được thử nghiệm. Chiến lược hiện tại chạy trên biểu đồ 1 phút. Đối với các biến thể khác của các tham số (như 5 phút), các tham số chỉ số có thể được thử nghiệm lại và tối ưu hóa để có được kết hợp các tham số tốt hơn.

Kết luận

Chiến lược này sử dụng TTM để xác định độ chính xác của xu hướng và sử dụng RSI và BB để xác định hướng đột phá. So với các chiến lược đột phá đơn giản, thời gian vào và tối ưu hóa tham số chỉ số của nó có lợi hơn, có thể làm tăng lợi nhuận. Nhưng chiến lược này cũng đặt ra một số rủi ro thất bại và các vấn đề thích nghi trong thị trường dao động. Điều này đòi hỏi chúng ta phải điều chỉnh kích thước vị trí trong khi sử dụng và tránh sử dụng nó trong thị trường dao động. Với các tham số và tối ưu hóa dừng lỗ hơn nữa, chiến lược này có thể trở thành một chiến lược giao dịch tùy chọn đáng tin cậy.


/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy (title="EA_Binary Option Spfrat Strategy", shorttitle="Spyfrate_Binary Option 5min", overlay=false, pyramiding=1999, initial_capital=60000, currency=currency.USD)

// TTM Squeeze code
lengthttm = input(title="Length",  defval=20, minval=0) 
bband(lengthttm, mult) =>
	sma(close, lengthttm) + mult * stdev(close, lengthttm)
keltner(length, mult) =>
	ema(close, lengthttm) + mult * ema(tr, lengthttm)

e1 = (highest(high, lengthttm) + lowest(low, lengthttm)) / 2 + sma(close, lengthttm)
osc = linreg(close - e1 / 2, lengthttm, 0)
diff = bband(lengthttm, 2) - keltner(lengthttm, 1)
osc_color = osc[1] < osc[0] ? osc[0] >= 0 ? #00ffff : #cc00cc : osc[0] >= 0 ? #009b9b : #ff9bff
mid_color = diff >= 0 ? green : red
conso = diff >= 0?1:0

//plot(osc, color=osc_color, style=histogram, linewidth=2)
//plot(0, color=mid_color, style=circles, linewidth=3)

// BB Init
source = close
length = input(50, minval=1)
mult = input(0.2, title="Mult Factor", minval=0.001, maxval=50)
alertLevel=input(0.1)
impulseLevel=input(0.75)
showRange = input(false, type=bool)

//RSI CODE
src = close, 
up = rma(max(change(src), 0), 30)
down = rma(-min(change(src), 0), 30)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))

//BB CODE
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev
bbr = source>upper?(((source-upper)/(upper-lower))/10): source<lower?(((source-lower)/(upper-lower))/10) : 0.05
bbi = bbr - nz(bbr[1]) 
//Rule
long1 = rsi>50.5 and rsi<70 and  bbi>0.15  and osc>0.00100 and conso>0
short1 = rsi<49.5 and rsi>30 and  bbi<-0.15 and osc<-0.00100 and conso>0
//
long = long1[1] == 0 and long1 == 1
short = short1[1] == 0 and short1 == 1
longclose = long[5] == 1
shortclose = short[5] == 1

//Alert

strategy.entry("short", strategy.short, when=short)
strategy.entry("long", strategy.long, when=long)
plot(long,"long",color=green,linewidth=1)
plot(short,"short",color=red,linewidth=1)
strategy.close("long",when=longclose)
strategy.close("short",when=shortclose)

//strategy.exit(id="long",qty = 100000,when=longclose)
//strategy.exit(id="short",qty = 100000,when=shortclose)
plot(longclose,"close",color=blue,linewidth=1)
plot(shortclose,"close",color=orange,linewidth=1)
//strategy.exit(id="Stop", profit = 20, loss = 100)

Thêm nữa