Ý tưởng cốt lõi của chiến lược này là sử dụng hình dạng K-line trong chu kỳ để xác định hướng xu hướng và sử dụng nó như một tín hiệu đầu vào. Khi hình dạng K-line trong chu kỳ xuất hiện, chúng ta có thể suy luận rằng hiện tại là thời điểm chuyển đổi xu hướng, tại thời điểm này chúng ta có thể chọn làm nhiều hơn khi phá vỡ đỉnh trước hoặc làm trống khi phá vỡ thấp trước và đặt lệnh dừng và dừng.
Đánh giá xem có hình dạng K-đường xuất hiện giữa các chu kỳ bên trong hay không. Lý luận phán đoán cụ thể là: điểm cao của dòng K hiện tại thấp hơn điểm cao của dòng K trước và điểm thấp của dòng K hiện tại cao hơn điểm thấp của dòng K trước.
Xác định sự giảm giá của dòng K trước đó. Nếu giá đóng cửa cao hơn giá mở cửa, thì là tăng; Nếu giá đóng cửa thấp hơn giá mở cửa, thì là giảm.
Nếu đường K trước đó là xu hướng tăng và có một hình thức giữa các chu kỳ trong đó, chúng tôi đặt lệnh dừng mua trong phạm vi 10% của điểm cao của đường K trước đó.
Nếu đường K trước là giảm và có một hình thức giữa các chu kỳ bên trong, chúng tôi đặt lệnh dừng bán trong phạm vi 10% của điểm thấp của đường K trước.
Một khi lệnh dừng được kích hoạt để tạo vị trí, chúng tôi sẽ thiết lập lệnh dừng lỗ và lệnh dừng chân. Khoảng cách dừng lỗ và khoảng cách dừng chân cụ thể là tỷ lệ của bước K trước đó.
Nếu một lần nữa có một hình thức giữa các chu kỳ bên trong, chúng tôi sẽ ưu tiên thanh toán, sau đó thiết lập lại một danh sách mới.
Những lợi thế của chiến lược này là:
Sử dụng logic nội bộ của K-line, thời gian nhập chính xác. Hình dạng trong khoảng thời gian thường có nghĩa là xu hướng sắp đảo ngược hoặc tăng tốc, điều này cung cấp cho chúng tôi một thời gian nhập tốt hơn.
Quy tắc chiến lược rõ ràng, dễ hiểu và dễ thực hành.
Kiểm soát rủi ro bằng cách sử dụng các điểm cao và thấp của chu kỳ trước để đặt điểm dừng lỗ.
Mỗi lần xuất hiện lại phù hợp với hình thức, nó sẽ thiết lập lại một danh sách mới, có thể theo dõi xu hướng mới.
Chiến lược này cũng có một số rủi ro:
Hình dạng trong chu kỳ không nhất thiết phải dẫn đến xu hướng đảo ngược hoặc tăng tốc, có một số rủi ro tín hiệu sai.
Khoảng cách dừng thiệt hại có thể được thiết lập quá nhỏ, không thể chịu được những cú sốc lớn trong hành động.
Khoảng cách dừng có thể được thiết lập quá lớn và không thể kiếm được lợi nhuận kịp thời.
Chiến lược này phụ thuộc nhiều hơn vào xu hướng, và có rất ít cơ hội để kiếm lợi nhuận trong một sự kiện tổng hợp.
Các giao dịch có thể quá thường xuyên và chi phí giao dịch cao.
Phản ứng:
Có thể kết hợp với các chỉ số khác trong bộ lọc chứa các tín hiệu xác nhận hình dạng giữa các chu kỳ, giảm tỷ lệ tín hiệu giả.
Khoảng cách dừng có thể được nới lỏng một cách thích hợp, nhưng không được vượt quá 50% cường độ của dòng K trước đó.
Có thể giảm khoảng cách dừng đến khoảng 50% của tần số K trước đó.
Tối ưu hóa quản lý vốn, giảm vị trí đơn vị, đối phó với tình trạng cân bằng.
Nới lỏng các điều kiện tham gia và giảm số lần giao dịch.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Kết hợp các chỉ số xu hướng để xác định xu hướng, tránh giao dịch thường xuyên trong việc điều chỉnh. Ví dụ, tham gia xu hướng phán đoán MACD, chỉ xem xét tham gia khi MACD đồng hướng.
Tối ưu hóa chiến lược dừng lỗ, sử dụng các phương pháp như dừng lỗ di động hoặc dừng lỗ bảo vệ lợi nhuận, để dừng lỗ trở nên linh hoạt hơn.
Kiểm tra các thiết lập tỷ lệ dừng lỗ khác nhau để tìm ra sự kết hợp tham số tối ưu.
Tham gia vào cơ chế tái nhập để bắt lại xu hướng sau khi dừng lỗ.
Tối ưu hóa quản lý vị trí, điều chỉnh vị trí đơn theo mức độ biến động của thị trường.
Tối ưu hóa quản lý vốn, ví dụ như tỷ lệ sử dụng vốn cố định.
Kiểm tra hiệu quả của chiến lược trên các giống và thời gian khác nhau.
Nói tóm lại, đây là một chiến lược sử dụng các điểm biến động xu hướng định hình trong và giữa các chu kỳ, thiết lập bảng xếp hạng để bắt được xu hướng đảo ngược. Nó có lợi thế về thời gian nhập cảnh rõ ràng, quy tắc chiến lược đơn giản, rủi ro có thể kiểm soát được, nhưng cũng có một số rủi ro tín hiệu giả và không gian tối ưu hóa. Chúng ta có thể nâng cao hơn nữa sự ổn định và khả năng lợi nhuận của chiến lược bằng cách kết hợp các chỉ số xu hướng, tối ưu hóa điểm dừng lỗ, điều chỉnh vị trí.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
// Inside Bar Momentum Strategy
// As defined on Babypips.com
// https://www.babypips.com/trading/forex-inside-bar-20170113
// strategy("Babypips: Inside Bar Momentum Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=5)
From_Year = input(defval = 2018, title = "From Year")
From_Month = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
From_Day = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
To_Year = input(defval = 9999, title = "To Year")
To_Month = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
To_Day = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
Start = timestamp(From_Year, From_Month, From_Day, 00, 00) // backtest start window
Finish = timestamp(To_Year, To_Month, To_Day, 23, 59) // backtest finish window
Window = true
Stop_Buy_Perc = input(10, "Stop Buy Order Percentage From Previous Candle's Range")/100
Stop_Loss_Perc = input(20, "Stop Loss Distance from High/Low of Previous Candle")/100
Take_Prof_Perc = input(80, "Take Profit Distance from High/Low of Previous Candle")/100
Risk = input(2, "Percentage Of EQUITY to risk per trade", step=0.1, minval=0, maxval=100)/100
Inside_Bar = high[1] > high[0] and low[1] < low[0]
Prev_Range = high[1] - low[1]
Bullish = open[1] < close[1]
Bearish = open[1] > close[1]
// Get Key Levels
Long_Stop_Buy_Level = high[1] + (Prev_Range * Stop_Buy_Perc)
Short_Stop_Buy_Level = low[1] - (Prev_Range * Stop_Buy_Perc)
Long_Stop_Loss_Level = high[1] - (Prev_Range * Stop_Loss_Perc)
Short_Stop_Loss_Level = low[1] + (Prev_Range * Stop_Loss_Perc)
Long_Take_Prof_Level = high[1] + (Prev_Range * Take_Prof_Perc)
Short_Take_Prof_Level = low[1] - (Prev_Range * Take_Prof_Perc)
// Position Sizing
long_qty = floor((strategy.equity * Risk) / (Long_Stop_Buy_Level - Long_Stop_Loss_Level))
short_qty = floor((strategy.equity * Risk) / (Short_Stop_Loss_Level - Short_Stop_Buy_Level))
// -------------------------- LONG CONDITIONS --------------------------------//
// The first candlestick must be bullish (green or white) and if the second
// candlestick is completely contained by the first, set a buy stop order at
// the first candle’s high plus 10% of its range (high minus low).
// Place the stop loss at the first candle’s high minus 20% of its range
// and set the target at the first candle’s high plus 80% of its range
// If another inside bar pattern forms, the current position should be closed
// or the pending buy/sell order must be canceled and entry orders must be
// updated to the latest candles.
Long_Condition = Window and Inside_Bar and Bullish
if (Long_Condition)
// Incase we still have a buy stop order in the market
strategy.cancel_all()
// Close any existing positions according to the rules
strategy.close_all()
strategy.entry("Bullish IB", strategy.long, stop=Long_Stop_Buy_Level)
strategy.exit("Bullish Exit","Bullish IB", stop=Long_Stop_Loss_Level, limit=Long_Take_Prof_Level)
// -------------------------- SHORT CONDITIONS -------------------------------//
// The first candlestick must be bearish (red or black) and if the second
// candlestick is completely contained by the first, set a sell stop order at
// the first candle’s low minus 10% of its range (high minus low).
// Place the stop loss at the first candle’s low plus 20% of its range and
// set the target at the first candle’s low minus 80% of its range.
// If another inside bar pattern forms, the current position should be closed
// or the pending buy/sell order must be canceled and entry orders must be
// updated to the latest candles.
Short_Condition = Window and Inside_Bar and Bearish
if (Short_Condition)
// Incase we still have a buy stop order in the market
strategy.cancel_all()
// Close any existing positions according to the rules
strategy.close_all()
strategy.entry("Bearish IB", strategy.short, stop=Short_Stop_Buy_Level)
strategy.exit("Bearish Exit","Bearish IB", stop=Short_Stop_Loss_Level, limit=Short_Take_Prof_Level)
// ----------------------------- PLOTTING ------------------------------------//
plotshape(Inside_Bar, style=shape.arrowdown, location=location.abovebar, color=purple)