এটি গতিশীল ট্রেন্ডলাইন এবং ভলিউম নিশ্চিতকরণের উপর ভিত্তি করে একটি দীর্ঘ-শুধুমাত্র ব্রেকআউট ট্রেডিং কৌশল। কৌশলটি রিয়েল-টাইমে দামের চলাচল ট্র্যাক করে এবং গতিশীলভাবে প্রবণতা তৈরি করে মূল সুইং উচ্চতা সনাক্ত করে। যখন মূল্য উল্লেখযোগ্য ভলিউমের সাথে উপরের প্রবণতা রেখার উপরে ভঙ্গ করে, তখন কৌশলটি শতাংশ ভিত্তিক লাভ গ্রহণ, স্টপ-লস এবং ট্রেলিং স্টপ প্রক্রিয়াগুলির মাধ্যমে ঝুঁকি পরিচালনা করার সময় একটি দীর্ঘ অবস্থানে প্রবেশ করে।
মূল যুক্তি তিনটি প্রধান স্তম্ভের উপর নির্মিতঃ গতিশীল ট্রেন্ডলাইন নির্মাণ, ভলিউম নিশ্চিতকরণ এবং ঝুঁকি ব্যবস্থাপনা সিস্টেম। প্রথমত, কৌশলটি গতিশীলভাবে মূল্য সুইং উচ্চতা সনাক্ত করতে ta.pivothigh ফাংশন ব্যবহার করে এবং দুটি সাম্প্রতিক সুইং উচ্চতা থেকে গণনা করা ঢাল এবং ছেদ উপর ভিত্তি করে উপরের প্রবণতা লাইন তৈরি করে। দ্বিতীয়ত, প্রবেশ সংকেতগুলি ব্রেকআউট বৈধতা নিশ্চিত করার জন্য 20-অবধি গড়ের তুলনায় 1.5 গুণ বেশি ভলিউম সহগামী হতে হবে। অবশেষে, কৌশলটি মুনাফা লক করার জন্য 1% ট্রেলিং স্টপ সহ স্থির শতাংশের লাভ (2%) এবং স্টপ-লস (1%) ব্যবহার করে।
এটি একটি শক্তিশালী যুক্তি সহ একটি ভাল ডিজাইন করা প্রবণতা অনুসরণকারী কৌশল। গতিশীল প্রবণতা লাইন এবং ভলিউম নিশ্চিতকরণের সংমিশ্রণের মাধ্যমে, একটি বিস্তৃত ঝুঁকি ব্যবস্থাপনা সিস্টেমের সাথে, কৌশলটি ভাল অভিযোজনযোগ্যতা এবং নির্ভরযোগ্যতা প্রদর্শন করে। যদিও এটির কিছু বাজার নির্ভরতা রয়েছে, প্রস্তাবিত অপ্টিমাইজেশান দিকগুলির মাধ্যমে উন্নতির জন্য উল্লেখযোগ্য জায়গা রয়েছে। ব্যবসায়ীরা লাইভ বাস্তবায়নের আগে পুঙ্খানুপুঙ্খ পরামিতি অপ্টিমাইজেশন এবং ব্যাকটেস্টিং পরিচালনা করার পরামর্শ দেওয়া হয়।
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-09 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Long Only Strategy with Dynamic Trend Lines, Fixed TP/SL, and Trailing SL+", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, pyramiding=0, // Prevent multiple entries calc_on_order_fills=true, calc_on_every_tick=true) // === Parameters === swingThreshold = input.int(5, title="Swing Detection Threshold") tpPercent = input.float(2.0, title="Take Profit (%)") slPercent = input.float(1.0, title="Stop Loss (%)") trailPercent = input.float(1.0, title="Trailing Stop (%)") volumeThresholdMultiplier = input.float(1.5, title="Volume Spike Threshold (x MA)") // === Volume Indicator === avgVolume = ta.sma(volume, 20) volumeSpike = volume > (avgVolume * volumeThresholdMultiplier) // === Detect Swing High === isSwingHigh = ta.pivothigh(high, swingThreshold, swingThreshold) // Variables to store swing highs var float swingHigh1 = na var float swingHigh2 = na var int swingHighBar1 = na var int swingHighBar2 = na // Update swing highs if (isSwingHigh) swingHigh2 := swingHigh1 swingHighBar2 := swingHighBar1 swingHigh1 := high[swingThreshold] swingHighBar1 := bar_index - swingThreshold // === Calculate Upper Trend Line === var float upperSlope = na var float upperIntercept = na // Calculate slope and intercept for upper trend line if there are two swing highs if (not na(swingHigh1) and not na(swingHigh2)) deltaX = swingHighBar1 - swingHighBar2 if (deltaX != 0) upperSlope := (swingHigh1 - swingHigh2) / deltaX upperIntercept := swingHigh1 - (upperSlope * swingHighBar1) else upperSlope := 0 upperIntercept := swingHigh1 // Calculate trend line price for the current bar var float upperTrendPrice = na if (not na(upperSlope) and not na(upperIntercept)) upperTrendPrice := upperSlope * bar_index + upperIntercept // Calculate trend line price for the previous bar var float upperTrendPrice_prev = na if (not na(upperSlope) and not na(upperIntercept)) upperTrendPrice_prev := upperSlope * (bar_index - 1) + upperIntercept // === Buy Condition Based on Trend Line Breakout === // Buy Signal: Price breaks above Upper Trend Line with volume spike breakoutBuyCondition = (not na(upperTrendPrice)) and (close > upperTrendPrice) and (not na(upperTrendPrice_prev)) and (close[1] <= upperTrendPrice_prev) and volumeSpike // === Manage Single Position === // Calculate Take Profit and Stop Loss levels based on percentage longTakeProfit = close * (1 + tpPercent / 100) longStopLoss = close * (1 - slPercent / 100) // Calculate Trailing Stop as trail_offset (in price) trail_offset = close * (trailPercent / 100) // Execute Trade with Single Position Management if (breakoutBuyCondition) // Close existing short position if any if (strategy.position_size < 0) strategy.close("Sell") // Open long position strategy.entry("Buy", strategy.long) // Set Take Profit, Stop Loss, and Trailing Stop Loss for long position strategy.exit("Take Profit Buy", from_entry="Buy", limit=longTakeProfit, stop=longStopLoss, trail_offset=trail_offset) // Plot Buy Signal plotshape(breakoutBuyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")