
এটি একটি ডাবল সুপারট্রেন্ড সূচকের উপর ভিত্তি করে একাধিক ধাপে চলমান স্টপ কৌশল। এই কৌশলটি বাজারের প্রবণতা নির্ধারণের জন্য দুটি প্যারামিটারযুক্ত সুপারট্রেন্ড সূচক ব্যবহার করে এবং প্রবণতার দিকনির্দেশের উপর ভিত্তি করে মাল্টি-স্পেড ট্রেডিং করে। কৌশলটির মূলটি হ’ল একাধিক স্টপ লক্ষ্যমাত্রা নির্ধারণের মাধ্যমে লাভের জন্য ধাপে ধাপে লকিং করার জন্য একটি মাল্টি-স্টেপ চলমান স্টপ পদ্ধতি ব্যবহার করা, যখন বৃহত্তর পরিস্থিতির উপর নজর রাখার জন্য কিছু অবস্থান রাখা হয়। এই পদ্ধতিটি ঝুঁকি হ্রাস করে এবং লাভের সম্ভাবনা সর্বাধিক করে তোলে।
দ্বৈত সুপারট্রেন্ড সূচকঃ কৌশলটি প্রবণতা নির্ধারণের জন্য দুটি প্যারামিটার সেট করে বিভিন্ন সুপারট্রেন্ড সূচক ব্যবহার করে। যখন দুটি সূচক একই সাথে উত্থানের প্রবণতা দেখায়, তখন একাধিক সংকেত ট্রিগার করে; যখন দুটি সূচক একই সাথে পতনের প্রবণতা দেখায়, তখন একটি ফাঁকা সংকেত ট্রিগার করে। এই দ্বৈত নিশ্চিতকরণ প্রক্রিয়াটি কার্যকরভাবে মিথ্যা সংকেত হ্রাস করতে পারে।
একাধিক ধাপে চলমান স্টপঃ কৌশলটি 4 টি সামঞ্জস্যযোগ্য স্টপ টার্গেট সেট করে। প্রতিটি লক্ষ্যের সাথে সম্পর্কিত স্টপ শতাংশ এবং শান্তিপূর্ণ অবস্থানের অনুপাত রয়েছে। উদাহরণস্বরূপ, প্রথম স্টপ টার্গেটটি 6% মুনাফা হলে 12% পজিশন সমতল করা হতে পারে, দ্বিতীয় লক্ষ্যটি 12% মুনাফা হলে 8% পজিশন সমতল করা হতে পারে, এবং তাই। এই প্রক্রিয়াটি লাভের ধাপে ধাপে লক করতে পারে এবং কিছু পজিশন উপভোগ করতে পারে।
নমনীয় লেনদেনের দিকনির্দেশনাঃ কৌশলটি ব্যবহারকারীদের বিভিন্ন বাজার পরিবেশ এবং লেনদেনের পছন্দ অনুসারে কেবলমাত্র ওভার, ওভার বা দ্বি-মুখী লেনদেনের বিকল্প দেয়।
ডায়নামিক স্টপ লসঃ যদিও কোডটিতে কোনও স্পষ্ট স্টপ লস সেটিং নেই, তবে কৌশলটি স্বয়ংক্রিয়ভাবে সুপারট্রেন্ড সূচকটি বিপরীত হওয়ার সময় প্লেইন করে, যা প্রকৃতপক্ষে ডায়নামিক স্টপ লস হিসাবে কাজ করে।
ঝুঁকি ব্যবস্থাপনার অপ্টিমাইজেশানঃ মাল্টি-স্টেপ মোবাইল স্টপ মেকানিজম কৌশলটির ঝুঁকি-লাভের অনুপাতকে উল্লেখযোগ্যভাবে উন্নত করে। লাভের ধাপে ধাপে লকিংয়ের মাধ্যমে, কৌশলটি আপেক্ষিক স্থান সংরক্ষণ করার সময় প্রত্যাহারের ঝুঁকি হ্রাস করতে পারে।
ভুয়া সংকেত কমানোঃ ডাবল সুপারট্রেন্ড সূচক ব্যবহারের ফলে ভুয়া সংকেতের প্রভাব উল্লেখযোগ্যভাবে হ্রাস পেয়েছে এবং ব্যবসায়ের নির্ভুলতা এবং নির্ভরযোগ্যতা বৃদ্ধি পেয়েছে।
অভিযোজনযোগ্যতা: কৌশলটি ব্যবহারকারীর পছন্দ এবং বাজারের অবস্থার উপর নির্ভর করে ট্রেডিংয়ের দিকনির্দেশ এবং স্টপ প্যারামিটারগুলিকে নমনীয়ভাবে সামঞ্জস্য করতে পারে, যা বিভিন্ন ট্রেডিং জাত এবং সময়কালের জন্য প্রযোজ্য।
উচ্চ স্বয়ংক্রিয়তাঃ কৌশল সম্পূর্ণ স্বয়ংক্রিয়, প্রবেশ, স্টপ এবং আউট করার জন্য কোনও মানুষের হস্তক্ষেপের প্রয়োজন নেই, যা আবেগগত প্রভাব এবং অপারেশন ত্রুটির সম্ভাবনা হ্রাস করে।
ফান্ড ম্যানেজমেন্টের নমনীয়তাঃ বিভিন্ন স্টপ-অফ অনুপাত সেট করে, কৌশলটি নমনীয় তহবিল পরিচালনা করতে পারে, যা লাভের কিছু অংশ দ্রুত লক করার গ্যারান্টি দেয় এবং অবশিষ্ট অবস্থানগুলিকে লাভজনক হতে দেয়।
প্যারামিটার সংবেদনশীলতাঃ কৌশলটির কার্যকারিতা সুপারট্রেন্ড সূচক এবং স্টপ-অফ প্যারামিটারগুলির সেটিংয়ের উপর নির্ভর করে। অনুপযুক্ত প্যারামিটারগুলি অত্যধিক লেনদেন বা গুরুত্বপূর্ণ সুযোগগুলি মিস করতে পারে।
প্রবণতা নির্ভরতাঃ একটি প্রবণতা অনুসরণ কৌশল হিসাবে, প্রবণতা বজায় রাখার জন্য বাজারে প্রবণতা ঘন ঘন প্রবেশ করে এবং অপ্রয়োজনীয় লেনদেনের খরচ সৃষ্টি করে।
স্লাইড পয়েন্টের ঝুঁকিঃ দ্রুত চলমান পরিস্থিতিতে, মাল্টি-স্টেপ স্টপ এক্সিকিউশন স্লাইড পয়েন্ট দ্বারা প্রভাবিত হতে পারে, এবং প্রকৃত এক্সিকিউশন মূল্য প্রত্যাশার থেকে বিচ্যুত হতে পারে।
অতিরিক্ত অপ্টিমাইজেশনের ঝুঁকিঃ কৌশলটিতে একাধিক সামঞ্জস্যযোগ্য প্যারামিটার রয়েছে, যা অতিমাত্রায় অপ্টিমাইজেশনের ফাঁদে পড়তে পারে, যার ফলে রিটার্নের ফলাফল বাস্তব ডিস্কের সাথে বড় পার্থক্য দেখা দেয়।
উর্ধ্বমুখীতা ফিল্টার প্রবর্তন করুনঃ এটিআর বা অন্যান্য উর্ধ্বমুখীতা সূচকগুলির সাথে মিলিত বিবেচনা করুন, নিম্ন উর্ধ্বমুখীতার সময় ট্রেডিং ফ্রিকোয়েন্সি হ্রাস করুন এবং বিভিন্ন বাজারের পরিবেশে কৌশলগুলির অভিযোজনযোগ্যতা উন্নত করুন।
ডায়নামিক প্যারামিটার অ্যাডজাস্টমেন্টঃ সুপারট্রেন্ড প্যারামিটার এবং স্টপ-অফ টার্গেটগুলিকে ডায়নামিকভাবে সামঞ্জস্য করার জন্য একটি অভিযোজিত অ্যালগরিদম ব্যবহার করে অন্বেষণ করা যেতে পারে যাতে বাজারের পরিবর্তনের সাথে আরও ভালভাবে সামঞ্জস্য করা যায়।
অতিরিক্ত স্টপ-অফ ব্যবস্থাঃ সুপারট্রেন্ডে কিছু স্টপ-অফ ফাংশন রয়েছে, তবে স্টপ-অফ ব্যবস্থা যেমন স্টপ-অফ ট্র্যাকিং এবং ঝুঁকি নিয়ন্ত্রণের মতো আরও নমনীয়তা যুক্ত করার কথা বিবেচনা করা যেতে পারে।
অন্যান্য প্রযুক্তিগত সূচকগুলির সাথে মিলিতঃ আরএসআই, এমএসিডি ইত্যাদির মতো অন্যান্য প্রযুক্তিগত সূচকগুলি প্রবর্তন করার বিষয়টি বিবেচনা করা যেতে পারে, মাল্টি-ইনডিকেটর রেজোনেন্সের মাধ্যমে প্রবেশ এবং প্রস্থানের নির্ভুলতা বাড়ানোর জন্য।
অপ্টিমাইজড ফান্ড ম্যানেজমেন্টঃ আপনি আরও জটিল ফান্ড ম্যানেজমেন্ট কৌশলগুলি অন্বেষণ করতে পারেন, যেমন অ্যাকাউন্টের মুনাফার উপর ভিত্তি করে পজিশনের আকারকে গতিশীলভাবে সামঞ্জস্য করা, যাতে ঝুঁকি এবং উপার্জনকে আরও ভালভাবে ভারসাম্য দেওয়া যায়।
প্রতিক্রিয়া অনুকূলিতকরণঃ কৌশলটির সর্বোত্তম প্রয়োগের পরিস্থিতি এবং প্যারামিটার সেটিংগুলি খুঁজে বের করার জন্য বিভিন্ন সময়কাল এবং বিভিন্ন বাজার অবস্থার অধীনে পারফরম্যান্স বিশ্লেষণ সহ আরও বিস্তৃত প্রতিক্রিয়া।
ডাবল সুপারট্রেন্ড সূচকের উপর ভিত্তি করে এই মাল্টি-স্টেপ মোবাইল স্টপ কৌশলটি ঝুঁকি এবং উপার্জনের ভারসাম্যকে একটি নমনীয় মাল্টি-স্টেপ স্টপ মেশিনের মাধ্যমে অর্জন করে। কৌশলটির প্রধান সুবিধা হ’ল এর দুর্দান্ত ঝুঁকি পরিচালনার ক্ষমতা এবং প্রবণতার সংবেদনশীলতা। তবে, ব্যবহারকারীদের প্রয়োগের সময় প্যারামিটার সেটিং এবং বাজারের পরিবেশের প্রভাবের দিকে মনোযোগ দেওয়া দরকার। আরও অপ্টিমাইজেশন এবং পরিমার্জনের মাধ্যমে, কৌশলটি একটি স্থিতিশীল এবং নির্ভরযোগ্য স্বয়ংক্রিয় ট্রেডিং সিস্টেম হওয়ার সম্ভাবনা রয়েছে। বাস্তবিক প্রয়োগে, ব্যবসায়ীদের পর্যাপ্ত পরিমাণে ফিডব্যাক এবং সিমুলেশন ট্রেডিং করার পরামর্শ দেওয়া হয় এবং নির্দিষ্ট ট্রেডিং প্রকার এবং বাজারের অবস্থার উপর ভিত্তি করে উপযুক্ত প্যারামিটার সমন্বয় করা হয়।
/*backtest
start: 2024-05-21 00:00:00
end: 2024-06-20 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Strategic Multi-Step Supertrend Trader - Strategy [presentTrading]", overlay=true )
// this strategy utilizes a double Supertrend indicator to determine entry and exit conditions for both long and short trades, with user-configurable take profit levels and trade direction settings.
// The strategy dynamically updates highest and lowest prices during trades and exits positions based on multi-step profit targets or opposing Supertrend signals.
// User inputs for take profit settings
// Grouping Take Profit settings
useTakeProfit = input.bool(true, title="Use Take Profit", group="Take Profit Settings")
takeProfitPercent1 = input.float(6.0, title="Take Profit % Step 1", group="Take Profit Settings")
takeProfitPercent2 = input.float(12.0, title="Take Profit % Step 2", group="Take Profit Settings")
takeProfitPercent3 = input.float(18.0, title="Take Profit % Step 3", group="Take Profit Settings")
takeProfitPercent4 = input.float(50.0, title="Take Profit % Step 4", group="Take Profit Settings")
takeProfitAmount1 = input.float(12, title="Take Profit Amount % Step 1", group="Take Profit Settings")
takeProfitAmount2 = input.float(8, title="Take Profit Amount % Step 2", group="Take Profit Settings")
takeProfitAmount3 = input.float(4, title="Take Profit Amount % Step 3", group="Take Profit Settings")
takeProfitAmount4 = input.float(0, title="Take Profit Amount % Step 4", group="Take Profit Settings")
numberOfSteps = input.int(3, title="Number of Take Profit Steps", minval=1, maxval=4, group="Take Profit Settings")
// Grouping Trade Direction
tradeDirection = input.string("Both", title="Trade Direction", options=["Long", "Short", "Both"], group="Trade Direction")
// Grouping Supertrend settings
atrPeriod1 = input(10, title="ATR Length for Supertrend 1", group="Supertrend Settings")
factor1 = input.float(3.0, title="Factor for Supertrend 1", step=0.01, group="Supertrend Settings")
atrPeriod2 = input(5, title="ATR Length for Supertrend 2", group="Supertrend Settings")
factor2 = input.float(4.0, title="Factor for Supertrend 2", step=0.01, group="Supertrend Settings")
// Function to calculate Supertrend
supertrend(factor, atrPeriod) =>
[a, direction] = ta.supertrend(factor, atrPeriod)
direction
// Calculate Double Supertrend
supertrend1 = supertrend(factor1, atrPeriod1)
supertrend2 = supertrend(factor2, atrPeriod2)
// Entry conditions
longCondition = (supertrend1 < 0 and supertrend2 < 0) and (tradeDirection == "Long" or tradeDirection == "Both")
shortCondition = (supertrend1 > 0 and supertrend2 > 0) and (tradeDirection == "Short" or tradeDirection == "Both")
// Exit conditions
longExitCondition = (supertrend1 > 0 and supertrend2 > 0) and (tradeDirection == "Long" or tradeDirection == "Both")
shortExitCondition = (supertrend1 < 0 and supertrend2 < 0) and (tradeDirection == "Short" or tradeDirection == "Both")
// Variables to store the highest and lowest prices during the trade
var float highestPrice = na
var float lowestPrice = na
// Get the entry price from open trades
entryPrice = strategy.opentrades.entry_price(strategy.opentrades - 1)
// Reset highestPrice or lowestPrice when entering new trades
if (longCondition and strategy.position_size <= 0)
highestPrice := na // Reset the highest price
strategy.entry("My Long Entry Id", strategy.long) // Enter long position
strategy.close("My Short Entry Id", "Short Exit") // Close short position if any
if (shortCondition and strategy.position_size >= 0)
lowestPrice := na // Reset the lowest price
strategy.entry("My Short Entry Id", strategy.short) // Enter short position
strategy.close("My Long Entry Id", "Long Exit") // Close long position if any
// Exit trades based on conditions
if (longExitCondition and strategy.position_size > 0)
strategy.close("My Long Entry Id", "Long Exit") // Exit long position
if (shortExitCondition and strategy.position_size < 0)
strategy.close("My Short Entry Id", "Short Exit") // Exit short position
if (strategy.position_size > 0)
// Update the highest price for long positions
highestPrice := na(highestPrice) ? high : math.max(highestPrice, high)
// Step 1
if (useTakeProfit and numberOfSteps >= 1)
strategy.exit("Take Profit 1", from_entry="My Long Entry Id", qty_percent=takeProfitAmount1, limit=entryPrice * (1 + takeProfitPercent1 / 100))
// Step 2
if (useTakeProfit and numberOfSteps >= 2)
strategy.exit("Take Profit 2", from_entry="My Long Entry Id", qty_percent=takeProfitAmount2, limit=entryPrice * (1 + takeProfitPercent2 / 100))
// Step 3
if (useTakeProfit and numberOfSteps >= 3)
strategy.exit("Take Profit 3", from_entry="My Long Entry Id", qty_percent=takeProfitAmount3, limit=entryPrice * (1 + takeProfitPercent3 / 100))
// Step 4
if (useTakeProfit and numberOfSteps == 4)
strategy.exit("Take Profit 4", from_entry="My Long Entry Id", qty_percent=takeProfitAmount4, limit=entryPrice * (1 + takeProfitPercent4 / 100))
if (strategy.position_size < 0)
// Update the lowest price for short positions
lowestPrice := na(lowestPrice) ? low : math.min(lowestPrice, low)
// Step 1
if (useTakeProfit and numberOfSteps >= 1)
strategy.exit("Take Profit 1", from_entry="My Short Entry Id", qty_percent=takeProfitAmount1, limit=entryPrice * (1 - takeProfitPercent1 / 100))
// Step 2
if (useTakeProfit and numberOfSteps >= 2)
strategy.exit("Take Profit 2", from_entry="My Short Entry Id", qty_percent=takeProfitAmount2, limit=entryPrice * (1 - takeProfitPercent2 / 100))
// Step 3
if (useTakeProfit and numberOfSteps >= 3)
strategy.exit("Take Profit 3", from_entry="My Short Entry Id", qty_percent=takeProfitAmount3, limit=entryPrice * (1 - takeProfitPercent3 / 100))
// Step 4
if (useTakeProfit and numberOfSteps == 4)
strategy.exit("Take Profit 4", from_entry="My Short Entry Id", qty_percent=takeProfitAmount4, limit=entryPrice * (1 - takeProfitPercent4 / 100))