
এটি একটি মাল্টি-ট্রেন্ড ট্রেডিং কৌশল যা ডাবল মিডল লাইন ব্রেক এবং ট্র্যাডিংয়ের বিশ্লেষণের সাথে মিলিত। কৌশলটি স্বল্পমেয়াদী এবং দীর্ঘমেয়াদী চলমান গড়ের ক্রস সিগন্যালের তুলনা করে এবং ট্র্যাডিংয়ের সূচকগুলিকে একত্রিত করে ট্রেডিংয়ের সিদ্ধান্ত নেয়। যখন স্বল্পমেয়াদী মিডল লাইনটি দীর্ঘমেয়াদী মিডল লাইন অতিক্রম করে এবং ট্র্যাডিং উল্লেখযোগ্যভাবে বৃদ্ধি পায়, তখন সিস্টেমটি একাধিক সংকেত দেয়। একই সাথে, কৌশলটি ঝুঁকি নিয়ন্ত্রণের জন্য একটি ক্ষতির ব্যবস্থাও স্থাপন করে।
কৌশলটির মূল যুক্তি নিম্নলিখিত মূল উপাদানগুলির উপর ভিত্তি করে:
ঝড়ের বাজার ঝুঁকিঃ ঘন ঘন মিডল লাইন ক্রসিং এর ফলে একাধিক ভুয়া ব্রেক হতে পারে। সমাধানঃ ট্রেন্ড নিশ্চিতকরণ সূচক যেমন ADX বা ট্রেন্ড শক্তি সূচক যোগ করা যেতে পারে।
স্লাইড পয়েন্টের ঝুঁকিঃ ট্র্যাফিকের পরিমাণ বেড়ে গেলে, স্লাইড পয়েন্টের বড় ক্ষতি হতে পারে। সমাধানঃ যুক্তিসঙ্গত স্লাইড পয়েন্ট সহনশীলতা সেট করার পরামর্শ দেওয়া হয় এবং পজিশন খোলার সময় সীমাবদ্ধ মূল্য তালিকা ব্যবহার করা হয়।
স্টপ লস ট্রিগার ঝুঁকিঃ ফিক্সড শতাংশ স্টপ লস বাজার ওঠানামা বাড়ার সময় খুব সংবেদনশীল হতে পারে। সমাধানঃ এটিআর ডায়নামিক স্টপ বা ওভাররাইডিংয়ের মাধ্যমে স্টপ করা যেতে পারে।
এই কৌশলটি মূল্যের প্রবণতা এবং লেনদেনের পরিমাণের পরিবর্তনের সাথে মিলিত হয়ে একটি অপেক্ষাকৃত সম্পূর্ণ ট্রেডিং সিস্টেম তৈরি করে। এই কৌশলটির সুবিধা হল একাধিক নিশ্চিতকরণ ব্যবস্থা এবং নিখুঁত ঝুঁকি নিয়ন্ত্রণ, তবে অস্থির বাজারে ভুয়া ব্রেকআউটের ঝুঁকি থাকতে পারে। গতিশীল প্যারামিটার অপ্টিমাইজেশন এবং সংকেত অপ্টিমাইজেশনের মাধ্যমে কৌশলটির আরও উন্নতির জন্য আরও অনেক জায়গা রয়েছে। সামগ্রিকভাবে, এটি একটি দৃঢ় ভিত্তি, যুক্তিসঙ্গতভাবে পরিষ্কার প্রবণতা ট্র্যাকিং কৌশল, যা স্পষ্ট প্রবণতা বাজারে প্রয়োগের জন্য উপযুক্ত।
/*backtest
start: 2024-02-18 00:00:00
end: 2025-02-17 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("MA Crossover with Volume (Long Only) + Stop Loss", overlay=true)
// Input settings for Moving Averages
shortMaLength = input.int(9, title="Short MA Length", minval=1)
longMaLength = input.int(21, title="Long MA Length", minval=1)
// Input settings for Volume
volumeMaLength = input.int(20, title="Volume MA Length", minval=1)
volumeThresholdMultiplier = input.float(1.5, title="Volume Multiplier (x times the average)", step=0.1)
// Input settings for Stop Loss
stopLossPercent = input.float(2.0, title="Stop Loss (%)", minval=0.1, step=0.1) / 100 // Stop loss in percentage
// Calculating Moving Averages
shortMa = ta.sma(close, shortMaLength)
longMa = ta.sma(close, longMaLength)
// Calculating Volume Metrics
volumeMa = ta.sma(volume, volumeMaLength) // Average volume
isVolumeAboveAverage = volume > (volumeMa * volumeThresholdMultiplier) // Volume above threshold
isVolumeIncreasing = volume > volume[1] // Volume increasing compared to the previous bar
// Plotting Moving Averages
plot(shortMa, color=color.blue, title="Short MA")
plot(longMa, color=color.orange, title="Long MA")
// Buy Condition with Volume
longCondition = ta.crossover(shortMa, longMa) and isVolumeAboveAverage and isVolumeIncreasing
exitCondition = ta.crossunder(shortMa, longMa) // Exit when the MAs cross downward
// Calculate Stop Loss Level
var float entryPrice = na // Variable to store entry price
if (strategy.position_size > 0 and na(entryPrice)) // Update entry price only when entering a new trade
entryPrice := strategy.position_avg_price
stopLossLevel = entryPrice * (1 - stopLossPercent) // Stop-loss level based on entry price
// Strategy Entry (Long Only)
if (longCondition)
strategy.entry("Long", strategy.long)
// Close position on Stop Loss or Exit Condition
if (strategy.position_size > 0)
if (low < stopLossLevel) // If the price drops below the stop-loss level
strategy.close("Long", comment="Stop Loss Hit")
if (exitCondition)
strategy.close("Long", comment="Exit Signal Hit")
// Debugging Plots
plot(volumeMa, color=color.purple, title="Volume MA", style=plot.style_area, transp=80)
hline(0, "Zero Line", color=color.gray)