
এই কৌশলটি একটি স্বয়ংক্রিয় ট্রেডিং সিস্টেম যা মূলত ওভারসোল্ড অঞ্চলে সম্পদের পারফরম্যান্স সনাক্ত করে সম্ভাব্য বিপরীতমুখী সুযোগগুলি ক্যাপচার করার জন্য ক্যাপিটাল ফ্লো ইনডিকেটর (এমএফআই) এর উপর ভিত্তি করে। কৌশলটির মূল অংশটি হল যখন এমএফআই সূচকটি ওভারসোল্ড অঞ্চল থেকে (ডিফল্ট 20 এর নীচে) ফিরে আসে তখন একটি কেনার সংকেত তৈরি করা হয় এবং সীমিত মূল্যের আদেশ, স্টপ লস এবং লাভের সমাপ্তি ইত্যাদির মতো একাধিক ব্যবস্থার মাধ্যমে ট্রেডিং ঝুঁকি এবং উপার্জন পরিচালনা করা হয়। এই কৌশলটি বিশেষত বাজারের ওভারসোল্ড বিপর্যয়ের সময় মোতায়েন করার জন্য উপযুক্ত।
এই কৌশলটি নিম্নলিখিত কয়েকটি মূল পদক্ষেপের উপর ভিত্তি করে কাজ করেঃ
এটি একটি স্বয়ংক্রিয় ট্রেডিং কৌশল যা যুক্তিসঙ্গতভাবে এবং যুক্তিসঙ্গতভাবে ডিজাইন করা হয়েছে। এমএফআই সূচকগুলির নমনীয় ব্যবহারের মাধ্যমে, একটি ভাল অর্ডার পরিচালনার ব্যবস্থা সহ, বাজারের ওভারসেলের পরে প্রতিক্রিয়াশীল সুযোগগুলি কার্যকরভাবে ক্যাপচার করা যায়। কৌশলটি শক্তিশালী কনফিগারযোগ্য, বিভিন্ন বাজার পরিবেশের সাথে অনুকূলিতকরণ করা সহজ। যদিও কিছু ঝুঁকি রয়েছে, তবে প্রস্তাবিত অপ্টিমাইজেশনের দিকটি কৌশলটির স্থিতিশীলতা এবং লাভজনকতাকে আরও বাড়িয়ে তুলতে পারে। এটি মাঝারি থেকে দীর্ঘমেয়াদী বিনিয়োগের জন্য উপযুক্ত, বিশেষত যারা উদ্বেগজনক বাজারে ওভারডাউন রিবাউন্ডের সুযোগ খুঁজছেন তাদের জন্য।
/*backtest
start: 2024-11-04 00:00:00
end: 2024-12-04 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © traderhub
//@version=5
strategy("MFI Strategy with Oversold Zone Exit and Averaging", overlay=true)
// Strategy parameters
mfiPeriod = input.int(title="MFI Period", defval=14) // Period for calculating MFI
mfiOS = input.float(title="MFI Oversold Level", defval=20.0) // Oversold level for MFI
longEntryPercentage = input.float(title="Long Entry Percentage (%)", minval=0.0, step=0.1, defval=0.1) // Percentage for the buy limit order
stopLossPercentage = input.float(title="Stop Loss Percentage (%)", minval=0.0, step=0.1, defval=1.0) // Percentage for the stop-loss
exitGainPercentage = input.float(title="Exit Gain Percentage (%)", minval=0.0, step=0.1, defval=1.0) // Percentage gain for the take-profit
cancelAfterBars = input.int(title="Cancel Order After # Bars", minval=1, defval=5) // Cancel order after a certain number of bars
// Calculate MFI
mfi = ta.mfi(close, mfiPeriod) // MFI with specified period
// Variables for tracking state
var bool inOversoldZone = false // Flag for being in the oversold zone
var float longEntryPrice = na // Price for long entry
var int barsSinceEntryOrder = na // Counter for bars after placing an order
// Define being in the oversold zone
if (mfi < mfiOS)
inOversoldZone := true // Entered oversold zone
// Condition for exiting the oversold zone and placing a limit order
if (inOversoldZone and mfi > mfiOS)
inOversoldZone := false // Leaving the oversold zone
longEntryPrice := close * (1 - longEntryPercentage / 100) // Calculate limit price for entry
strategy.entry("Long Entry", strategy.long, limit=longEntryPrice) // Place a limit order
barsSinceEntryOrder := 0 // Reset counter for bars after placing the order
// Increase the bar counter if the order has not yet been filled
if (not na(barsSinceEntryOrder))
barsSinceEntryOrder += 1
// Cancel order if it hasn’t been filled within the specified number of bars
if (not na(barsSinceEntryOrder) and barsSinceEntryOrder >= cancelAfterBars and strategy.position_size == 0)
strategy.cancel("Long Entry")
barsSinceEntryOrder := na // Reset bar counter
// Set stop-loss and take-profit for filled positions
if (strategy.position_size > 0)
stopLossPrice = longEntryPrice * (1 - stopLossPercentage / 100) // Calculate stop-loss level
takeProfitPrice = longEntryPrice * (1 + exitGainPercentage / 100) // Calculate take-profit level
strategy.exit("Exit Long", from_entry="Long Entry", limit=takeProfitPrice, stop=stopLossPrice)
// Visualize oversold and overbought zones
bgcolor(mfi < mfiOS ? color.new(color.green, 90) : na) // Background in oversold zone
plot(mfi, title="MFI", color=color.blue) // MFI plot
hline(mfiOS, "Oversold Level", color=color.red) // Oversold level line