এটি দ্বৈত সুপারট্রেন্ড সূচকগুলির উপর ভিত্তি করে একটি বহু-পদক্ষেপের ট্রেইলিং লাভ গ্রহণের কৌশল। কৌশলটি বাজারের প্রবণতা নির্ধারণ এবং সেই অনুযায়ী দীর্ঘ বা সংক্ষিপ্ত বাণিজ্য সম্পাদন করার জন্য বিভিন্ন পরামিতি সহ দুটি সুপারট্রেন্ড সূচক ব্যবহার করে। কৌশলটির মূলটি এর বহু-পদক্ষেপের ট্রেইলিং লাভ গ্রহণের প্রক্রিয়াতে রয়েছে, যা লাভের ধীরে ধীরে লক করার জন্য একাধিক লাভের লক্ষ্য নির্ধারণ করে। বৃহত্তর বাজারের চলাচল ক্যাপচার করার জন্য অবস্থানের একটি অংশ খোলা রাখা। এই পদ্ধতির লক্ষ্য হ'ল ঝুঁকি হ্রাস করা এবং লাভের সম্ভাবনা সর্বাধিক করা।
ডুয়াল সুপারট্রেন্ড সূচকঃ কৌশলটি প্রবণতা সনাক্ত করতে বিভিন্ন পরামিতি সেটিং সহ দুটি সুপারট্রেন্ড সূচক ব্যবহার করে। উভয় সূচক যখন একটি আপট্রেন্ড দেখায় তখন একটি দীর্ঘ সংকেত ট্রিগার হয়, যখন উভয়ই একটি ডাউনট্রেন্ড নির্দেশ করে তখন একটি সংক্ষিপ্ত সংকেত ট্রিগার হয়। এই দ্বৈত নিশ্চিতকরণ প্রক্রিয়া কার্যকরভাবে মিথ্যা সংকেত হ্রাস করে।
মাল্টি-স্টেপ ট্রেইলিং টেক-লাভঃ কৌশলটি 4 টি সামঞ্জস্যযোগ্য লাভের লক্ষ্য নির্ধারণ করে। প্রতিটি লক্ষ্যের একটি সংশ্লিষ্ট মুনাফা শতাংশ এবং অবস্থান বন্ধের অনুপাত রয়েছে। উদাহরণস্বরূপ, প্রথম লক্ষ্যটি 6% মুনাফায় অবস্থানের 12% বন্ধ করতে পারে, দ্বিতীয়টি 12% মুনাফায় 8% বন্ধ করতে পারে, ইত্যাদি। এই প্রক্রিয়াটি ধীরে ধীরে মুনাফার লকিংয়ের অনুমতি দেয় যখন অবস্থানের একটি অংশকে অব্যাহত বাজারের আন্দোলনের থেকে উপকৃত হওয়ার জন্য উন্মুক্ত রাখে।
নমনীয় ট্রেডিং দিকনির্দেশনাঃ ব্যবহারকারীরা বিভিন্ন বাজারের পরিবেশ এবং ট্রেডিং পছন্দ অনুসারে কেবল দীর্ঘ, স্বল্প বা উভয় দিকই ট্রেড করতে পারেন।
ডায়নামিক স্টপ-লসঃ যদিও কোডটিতে স্টপ-লস সেটিং নেই, তবে সুপারট্রেন্ড সূচকগুলি বিপরীত হলে কৌশলটি স্বয়ংক্রিয়ভাবে অবস্থানগুলি বন্ধ করে দেয়, কার্যকরভাবে একটি গতিশীল স্টপ-লস হিসাবে কাজ করে।
অপ্টিমাইজড রিস্ক ম্যানেজমেন্টঃ মাল্টি-স্টেপ ট্রেইলিং লাভ নেওয়ার প্রক্রিয়াটি কৌশলটির ঝুঁকি-প্রতিদান অনুপাতকে ব্যাপকভাবে উন্নত করে। লাভের ধীরে ধীরে লক করে, কৌশলটি আপসাইড সম্ভাব্যতা বজায় রেখে ড্রাউনডাউন ঝুঁকি হ্রাস করতে পারে।
মিথ্যা সংকেত হ্রাসঃ দ্বৈত সুপারট্রেন্ড সূচকগুলির ব্যবহার মিথ্যা সংকেতগুলির প্রভাবকে উল্লেখযোগ্যভাবে হ্রাস করে, ট্রেডিংয়ের নির্ভুলতা এবং নির্ভরযোগ্যতা উন্নত করে।
উচ্চ অভিযোজনযোগ্যতাঃ কৌশলটি ব্যবহারকারীর পছন্দ এবং বাজারের অবস্থার উপর ভিত্তি করে ট্রেডিং দিক এবং লাভের পরামিতিগুলি নমনীয়ভাবে সামঞ্জস্য করতে পারে, যা এটি বিভিন্ন ট্রেডিং যন্ত্র এবং সময়সীমার জন্য উপযুক্ত করে তোলে।
স্বয়ংক্রিয়তার উচ্চ স্তরঃ কৌশলটি প্রবেশ থেকে লাভ এবং প্রস্থান পর্যন্ত সম্পূর্ণ স্বয়ংক্রিয়, আবেগ এবং অপারেশনাল ত্রুটির প্রভাবকে হ্রাস করে।
নমনীয় মূলধন ব্যবস্থাপনাঃ বিভিন্ন লাভের অনুপাত নির্ধারণ করে, কৌশলটি নমনীয় মূলধন ব্যবস্থাপনা অর্জন করে, দ্রুত আংশিক মুনাফা অর্জনের নিশ্চয়তা দেয় এবং অবশিষ্ট অবস্থানকে বাজারের গতিবিধি থেকে উপকৃত হতে দেয়।
পরামিতি সংবেদনশীলতাঃ কৌশলটির কর্মক্ষমতা সুপারট্রেন্ড সূচক এবং লাভের পরামিতিগুলির সেটিংসের উপর নির্ভর করে। অনুপযুক্ত পরামিতিগুলি অত্যধিক ট্রেডিং বা গুরুত্বপূর্ণ সুযোগগুলি মিস করতে পারে।
প্রবণতা নির্ভরতাঃ প্রবণতা অনুসরণকারী কৌশল হিসাবে, এটি প্রায়শই অস্থির বাজারে প্রবেশ এবং প্রস্থান করতে পারে, যা অপ্রয়োজনীয় ট্রেডিং খরচ সৃষ্টি করে।
স্লিপিং ঝুঁকিঃ দ্রুত গতিতে চলমান বাজারে, মাল্টি-স্টেপ টেক লাভের কার্যকরকরণ স্লিপিং দ্বারা প্রভাবিত হতে পারে, যার ফলে প্রকৃত কার্যকর মূল্য প্রত্যাশার থেকে বিচ্যুত হয়।
অতিরিক্ত অপ্টিমাইজেশান ঝুঁকিঃ একাধিক সামঞ্জস্যযোগ্য পরামিতিগুলির সাথে, কৌশলটি অতিরিক্ত অপ্টিমাইজেশান প্রবণ, যা সম্ভাব্যভাবে ব্যাকটেস্টিং ফলাফল এবং লাইভ ট্রেডিং পারফরম্যান্সের মধ্যে উল্লেখযোগ্য পার্থক্যের দিকে পরিচালিত করে।
অস্থিরতা ফিল্টারিং প্রবর্তন করুনঃ কম অস্থিরতার সময় ট্রেডিং ফ্রিকোয়েন্সি হ্রাস করার জন্য ATR বা অন্যান্য অস্থিরতা সূচক অন্তর্ভুক্ত করার বিষয়টি বিবেচনা করুন, বিভিন্ন বাজারের অবস্থার সাথে কৌশলটির অভিযোজনযোগ্যতা উন্নত করুন।
ডায়নামিক প্যারামিটার সমন্বয়ঃ বাজারের পরিবর্তনের সাথে আরও ভাল অভিযোজন করার জন্য সুপারট্রেন্ড প্যারামিটার এবং লাভের লক্ষ্যমাত্রা গতিশীলভাবে সামঞ্জস্য করার জন্য অভিযোজনশীল অ্যালগরিদম ব্যবহার করে অন্বেষণ করুন।
স্টপ-লস মেকানিজম উন্নত করুন: সুপারট্রেন্ড বিপরীতমুখী কিছু স্টপ-লস কার্যকারিতা প্রদান করে, ঝুঁকি নিয়ন্ত্রণের জন্য আরও নমনীয় স্টপ-লস মেকানিজম যোগ করার কথা বিবেচনা করুন, যেমন ট্রেলিং স্টপ।
অতিরিক্ত প্রযুক্তিগত সূচক একীভূত করুন: একাধিক সূচকের সংমিশ্রণের মাধ্যমে প্রবেশ এবং প্রস্থান নির্ভুলতা উন্নত করতে আরএসআই বা এমএসিডির মতো অন্যান্য প্রযুক্তিগত সূচক অন্তর্ভুক্ত করার বিষয়টি বিবেচনা করুন।
মূলধন ব্যবস্থাপনা অপ্টিমাইজ করাঃ ঝুঁকি ও উপকারের মধ্যে আরও সুষম ভারসাম্য বজায় রাখার জন্য অ্যাকাউন্টের পারফরম্যান্সের উপর ভিত্তি করে গতিশীলভাবে অবস্থান আকারের সমন্বয় করার মতো আরও পরিশীলিত মূলধন ব্যবস্থাপনা কৌশলগুলি অনুসন্ধান করা।
ব্যাকটেস্টিং অপ্টিমাইজেশনঃ কৌশলটির সর্বোত্তম অ্যাপ্লিকেশন দৃশ্যকল্প এবং প্যারামিটার সেটিংস সনাক্ত করতে বিভিন্ন সময়সীমা এবং বাজারের অবস্থার উপর পারফরম্যান্স বিশ্লেষণ সহ আরও বিস্তৃত ব্যাকটেস্ট পরিচালনা করুন।
এই মাল্টি-স্টেপ ট্রেইলিং লাভ গ্রহণের কৌশল, দ্বৈত সুপারট্রেন্ড সূচকগুলির উপর ভিত্তি করে, এর নমনীয় মাল্টি-স্টেপ লাভ গ্রহণের প্রক্রিয়াটির মাধ্যমে ঝুঁকি এবং পুরষ্কারের মধ্যে ভারসাম্য অর্জন করে। কৌশলটির প্রধান সুবিধা হ'ল এর দুর্দান্ত ঝুঁকি ব্যবস্থাপনা ক্ষমতা এবং প্রবণতার প্রতি সংবেদনশীলতা। তবে, ব্যবহারকারীদের এটি প্রয়োগ করার সময় প্যারামিটার সেটিংস এবং বাজার পরিবেশের প্রভাবগুলিতে মনোযোগ দিতে হবে। আরও অপ্টিমাইজেশন এবং পরিমার্জন করার মাধ্যমে, এই কৌশলটির একটি শক্তিশালী এবং নির্ভরযোগ্য স্বয়ংক্রিয় ট্রেডিং সিস্টেম হওয়ার সম্ভাবনা রয়েছে। ব্যবহারিক প্রয়োগে, ব্যবসায়ীদের পুঙ্খানুপুঙ্খ ব্যাকটেস্টিং এবং পেপার ট্রেডিং পরিচালনা করার এবং নির্দিষ্ট ট্রেডিং যন্ত্র এবং বাজারের অবস্থার উপর ভিত্তি করে উপযুক্ত প্যারামিটার সমন্বয় করার পরামর্শ দেওয়া হয়।
/*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))