Chiến lược này sử dụng chỉ số MFI để xác định các khu vực mua quá mức và bán quá mức kết hợp với MA để lọc hướng đảo ngược giá.
Chiến lược này sử dụng chỉ số MFI để đánh giá các điều kiện mua quá mức và bán quá mức trên thị trường. Khi MFI giảm xuống dưới 20 vào vùng bán quá mức, nó báo hiệu rằng tài sản được định giá thấp và đáy đang hình thành, ngụ ý một tín hiệu dài. Khi MFI tăng trên 80 vào khu vực mua quá mức, nó cho thấy tài sản được định giá quá mức và có thể sẽ sớm điều chỉnh thấp hơn, kích hoạt tín hiệu ngắn.
Để tránh đảo ngược sai, chiến lược cũng sử dụng chỉ số MA để xác định hướng xu hướng.
Logic giao dịch cụ thể là:
Khi MFI phá vỡ dưới 20 vào khu vực bán quá mức và đóng cửa đứng trên đường MA, một tín hiệu mua được tạo ra.
Khi MFI vượt qua mức 80 vào vùng mua quá mức và kết thúc vượt qua đường MA, một tín hiệu bán được kích hoạt.
Với xác nhận hai chỉ số, chiến lược có thể xác định hiệu quả các cơ hội đảo ngược với các tín hiệu nhập cảnh đáng tin cậy.
Xác nhận hai chỉ số tránh sự đột phá sai và đảm bảo độ tin cậy tín hiệu cao.
Sử dụng các bước đảo ngược mua quá mức / bán quá mức là một kỹ thuật giao dịch cổ điển và đã được thử nghiệm trong thời gian.
Kết hợp lọc xu hướng làm cho tín hiệu chính xác và đáng tin cậy hơn.
Áp dụng trên nhiều thị trường khác nhau với khả năng thích nghi mạnh mẽ.
Thị trường có thể có xu hướng tăng hoặc giảm liên tục dẫn đến dừng lỗ.
Cần phải cảnh giác với những rủi ro có hệ thống trong điều kiện thị trường cực đoan gây ra các điểm đảo ngược bị bỏ lỡ.
Tần suất giao dịch cao có thể dẫn đến chi phí giao dịch tăng lên.
Hạn chế:
Cho phép dừng lỗ rộng hơn để cho chiến lược nhiều không gian hơn.
Tăng kích thước vị trí một cách thận trọng trong khi xem các biểu đồ khung thời gian cao hơn cho các tín hiệu rủi ro hệ thống.
Tối ưu hóa các thông số để tránh giao dịch không cần thiết.
Tối ưu hóa các thông số MA để phù hợp với các đặc điểm của công cụ giao dịch.
Điều chỉnh mức mua quá mức / bán quá mức dựa trên tinh thần thị trường thay đổi.
Bao gồm các quy tắc kích thước vị trí để kiểm soát lợi nhuận nhiều hơn.
Chiến lược này tích hợp các kỹ thuật phân tích cổ điển với các phương pháp lượng tử hiện đại.
/*backtest start: 2023-12-19 00:00:00 end: 2023-12-26 00:00:00 period: 1m basePeriod: 1m 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/ // © vikris //@version=4 strategy("[VJ]Thor for MFI", overlay=true, calc_on_every_tick = false,pyramiding=0) // ********** Strategy inputs - Start ********** // Used for intraday handling // Session value should be from market start to the time you want to square-off // your intraday strategy // Important: The end time should be at least 2 minutes before the intraday // square-off time set by your broker var i_marketSession = input(title="Market session", type=input.session, defval="0915-1455", confirm=true) // Make inputs that set the take profit % (optional) longProfitPerc = input(title="Long Take Profit (%)", type=input.float, minval=0.0, step=0.1, defval=1) * 0.01 shortProfitPerc = input(title="Short Take Profit (%)", type=input.float, minval=0.0, step=0.1, defval=1) * 0.01 // Set stop loss level with input options (optional) longLossPerc = input(title="Long Stop Loss (%)", type=input.float, minval=0.0, step=0.1, defval=0.5) * 0.01 shortLossPerc = input(title="Short Stop Loss (%)", type=input.float, minval=0.0, step=0.1, defval=0.5) * 0.01 i_MFI = input(3, title="MFI Length") OB=input(100, title="Overbought Level") OS=input(0, title="Oversold Level") barsizeThreshold=input(.5, step=.05, minval=.1, maxval=1, title="Bar Body Size, 1=No Wicks") i_MAFilter = input(true, title="Use MA Trend Filter") i_MALen = input(80, title="MA Length") // ********** Strategy inputs - End ********** // ********** Supporting functions - Start ********** // A function to check whether the bar or period is in intraday session barInSession(sess) => time(timeframe.period, sess) != 0 // Figure out take profit price longExitPrice = strategy.position_avg_price * (1 + longProfitPerc) shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc) // Determine stop loss price longStopPrice = strategy.position_avg_price * (1 - longLossPerc) shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc) // ********** Supporting functions - End ********** // ********** Strategy - Start ********** // See if intraday session is active bool intradaySession = true // Trade only if intraday session is active //=================Strategy logic goes in here=========================== MFI=mfi(close,i_MFI) barsize=high-low barbodysize=close>open?(open-close)*-1:(open-close) shortwicksbar=barbodysize>barsize*barsizeThreshold SMA=sma(close, i_MALen) MAFilter=close > SMA BUY = MFI[1] == OB and close > open and shortwicksbar and (i_MAFilter ? MAFilter : true) SELL = MFI[1] == OS and close < open and shortwicksbar and (i_MAFilter ? not MAFilter : true) //Final Long/Short Condition longCondition = BUY shortCondition = SELL //Long Strategy - buy condition and exits with Take profit and SL if (longCondition and intradaySession) stop_level = longStopPrice profit_level = longExitPrice strategy.entry("Buy", strategy.long) strategy.exit("TP/SL", "Buy", stop=stop_level, limit=profit_level) //Short Strategy - sell condition and exits with Take profit and SL if (shortCondition and intradaySession) stop_level = shortStopPrice profit_level = shortExitPrice strategy.entry("Sell", strategy.short) strategy.exit("TP/SL", "Sell", stop=stop_level, limit=profit_level) // Square-off position (when session is over and position is open) squareOff = (not intradaySession) and (strategy.position_size != 0) strategy.close_all(when = squareOff, comment = "Square-off") // ********** Strategy - End **********