Chiến lược Big Surge Big Fall

Tác giả:ChaoZhang, Ngày: 2023-11-06 15:48:22
Tags:

img

Tổng quan

Chiến lược Big Surge Big Fall phát hiện ra những ngọn nến tăng và giảm rất lớn để tham gia vào các vị trí. Nó đi ngắn khi phát hiện ra một ngọn nến tăng rất lớn và đi dài khi phát hiện ra một ngọn nến giảm rất lớn. Stop loss được đặt dưới mức thấp của ngọn nến tín hiệu (trái ngược lại cho dài), và lấy lợi nhuận được đặt ở mức gấp 1 lần stop loss. Người dùng có thể xác định kích thước tối thiểu của các ngọn nến tăng / giảm, và số nhân của phạm vi thanh trung bình trong một số thời gian nhất định.

Chiến lược logic

Logic cốt lõi của chiến lược này là:

  1. Tính toán phạm vi nến hiện tại (cao - thấp) và kích thước thân nến (tích cực nếu đóng > mở, âm nếu đóng < mở)

  2. Tính toán phạm vi trung bình trong quá khứ N nến

  3. Kiểm tra xem ngọn nến hiện tại có đáp ứng: phạm vi >= phạm vi trung bình x nhiều lần và kích thước cơ thể >= phạm vi x hệ số kích thước cơ thể phút

  4. Nếu các điều kiện trên được đáp ứng, một tín hiệu được kích hoạt: đi ngắn trên nến tăng, đi dài trên nến giảm

  5. Tùy chọn cho phép dừng lỗ và lấy lợi nhuận: dừng lỗ ở mức thấp cộng với hệ số dừng lỗ x phạm vi; lấy lợi nhuận ở mức dừng lỗ 1 x

Bộ lọc kích thước cơ thể không bao gồm doji. Phạm vi trung bình động thích nghi với những thay đổi của thị trường.

Ưu điểm

Ưu điểm lớn nhất của chiến lược này là bắt tín hiệu đảo ngược xu hướng chất lượng cao, dựa trên hai phán đoán:

  1. Đèn nến tăng / giảm khổng lồ có thể chỉ ra một xu hướng đã cạn kiệt sau khi di chuyển kéo dài

  2. Phạm vi lớn bất thường vượt quá trung bình động xác nhận tầm quan trọng

Ngoài ra, cài đặt dừng lỗ và lấy lợi nhuận là hợp lý, cho phép kiểm soát lỗ hiệu quả trong khi không theo đuổi.

Nhìn chung, chiến lược này thành công trong việc xác định các bước ngoặt cấu trúc chất lượng cao, cho phép thực hiện hiệu quả.

Rủi ro

Những rủi ro chính xuất phát từ hai khía cạnh:

  1. Các thanh khổng lồ có thể là đánh dấu, tạo ra tín hiệu sai

  2. Stop loss có thể quá rộng để kiểm soát hiệu quả lỗ

Đối với rủi ro đầu tiên, việc thêm bộ lọc kích thước tối thiểu có thể làm giảm tín hiệu sai nhưng cũng bỏ lỡ cơ hội.

Đối với rủi ro thứ hai, điều chỉnh hệ số dừng lỗ có thể tối ưu hóa các điểm dừng gần các hỗ trợ mà không quá chặt chẽ.

Cơ hội gia tăng

Có một số cách để cải thiện thêm chiến lược này:

  1. Thêm bộ lọc hướng xu hướng để tránh giao dịch ngược xu hướng

  2. Tối ưu hóa các thông số thông qua backtesting để tìm kết hợp tốt nhất

  3. Thêm bộ lọc âm lượng để đảm bảo âm lượng cao trên những ngọn nến lớn

  4. Xem xét các bộ lọc bổ sung như trung bình động, Bollinger Bands để giảm tín hiệu sai

  5. Các tham số thử nghiệm trên các sản phẩm khác nhau để tối ưu hóa

  6. Thêm stop loss sau để điều chỉnh động dựa trên hành động giá

  7. Xem xét các cơ hội nhập lại sau khi dừng lỗ ban đầu

Với những cải tiến trên, chiến lược này có thể trở nên hiệu quả hơn nhiều và cải thiện xác suất lợi nhuận.

Kết luận

Chiến lược Big Surge Big Fall có lợi từ những bước đảo ngược nến khổng lồ với quản lý dừng lỗ và lấy lợi nhuận. Nó xác định thành công các điểm chuyển đổi cấu trúc chất lượng cao, cung cấp thông tin có giá trị cho các nhà giao dịch xu hướng. Với các thông số và tối ưu hóa logic, chiến lược này có thể trở thành một công cụ quyết định thực tế.


/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 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/
// © tweakerID

// This strategy detects and uses big bars to enter a position. When the Big Bar 
// is bearish (red candle) the position will be long and viceversa
// for short positions. The stop loss (optional) is placed on the low of the 
// candle used to trigger the position and user inputs allow you to modify the
// size of the SL. Take profit is placed on a reward ratio of 1. User can also modify 
// the size of the bar body used to determine if we have a real Big Bar and
// filter out Doji bars. Big Bars are determined relative to the previous X period size, 
// which can also be modified, as well as the required size of the Big Bar relative to this period average.

//@version=4
strategy("Big Bar Strategy", overlay=false)

direction = input(0, title = "Direction (Long=1, Both=0, Short=-1 ", type=input.integer, minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

//Inputs
barsizemult=input(1, step=.1, title="SL Mult")
TPbarsizemult=input(1, step=.1, title="TP Mult")
barsizeThreshold=input(.5, step=.1, minval=.5, maxval=.9, title="Bar Body Size")
period=input(10)
mult=input(2, step=.2, title="Big Size Avg Mult to determine Big Bar")
i_reverse=input(false, title="Reverse Trades")
SLon=input(false, title="Use SL / TP")

//Calculations
barsize=high-low
barbodysize=close>open?(open-close)*-1:(open-close)
barsizeavg=sum(barsize, period)/period
bigbar=barsize >= barsizeavg*mult and barbodysize>barsize*barsizeThreshold

//Entry Logic
longCondition = close < open and bigbar //and strategy.position_size==0
shortCondition = close > open and bigbar //and strategy.position_size==0

//SL & TP Calculations
longTP=strategy.position_avg_price + (valuewhen(longCondition,barsize,0)*TPbarsizemult)
longSL=strategy.position_avg_price - (valuewhen(longCondition,barsize,0)*barsizemult)
shortTP=strategy.position_avg_price - (valuewhen(shortCondition,barsize,0)*TPbarsizemult)
shortSL=strategy.position_avg_price + (valuewhen(shortCondition,barsize,0)*barsizemult)
TP=strategy.position_size>0?longTP:shortTP
SL=strategy.position_size>0?longSL:shortSL

//Entries
if (longCondition)
    strategy.entry("long", long=not i_reverse?true:false)
    alert("Big Bar")
if (shortCondition)
    strategy.entry("short", long=not i_reverse?false:true)
    alert("Big Bar")
if SLon
    strategy.exit("SL & TP", "long", stop=SL, limit=TP)
    strategy.exit("SL & TP", "short", stop=SL, limit=TP)
    
// Plots
barcolor(bigbar ? color.white : na)
plot(barsizeavg, transp=100, title="Barsize Avg")
plot(barsize, transp=100, title="Bar Size")
plot(barbodysize, transp=100, title="Bar Body Size")
plot(SLon?TP:na, color=color.green, style=plot.style_cross, title="TP")
plot(SLon?SL:na, color=color.red, style=plot.style_cross, title="SL")
plotshape(longCondition ? 1 : na, style=shape.triangleup, location=location.belowbar, color=color.green, title="Bullish Setup")
plotshape(shortCondition ? 1 : na, style=shape.triangledown, location=location.abovebar, color=color.red, title="Bearish Setup")



Thêm nữa