কৌশলটি চলমান গড় (এমএ) এর ঢাল এবং এমএ-র সাথে দামের আপেক্ষিক অবস্থানের উপর ভিত্তি করে ট্রেডিং সিদ্ধান্ত নেয়। যখন এমএ ঢাল সর্বনিম্ন ঢালের প্রান্তিকের চেয়ে বড় এবং দাম এমএ-র উপরে থাকে, তখন কৌশলটি একটি দীর্ঘ অবস্থান শুরু করে। উপরন্তু, কৌশলটি ঝুঁকি পরিচালনা করতে একটি ট্রেলিং স্টপ লস ব্যবহার করে এবং নির্দিষ্ট অবস্থার অধীনে পুনরায় প্রবেশের অনুমতি দেয়। কৌশলটি গতিশীল স্টপ-লস এবং পুনরায় প্রবেশের প্রক্রিয়াগুলির মাধ্যমে রিটার্ন এবং ঝুঁকিগুলি অনুকূল করার সময় উত্থানের প্রবণতাগুলিতে সুযোগগুলি ক্যাপচার করার লক্ষ্য রাখে।
কৌশলটি চলমান গড়ের ঢাল এবং চলমান গড়ের সাথে দামের আপেক্ষিক অবস্থানের উপর ভিত্তি করে প্রবণতা নির্ধারণ করে। এটি ট্রেডগুলি পরিচালনা করতে একটি ট্রেইলিং স্টপ লস এবং শর্তসাপেক্ষ পুনরায় প্রবেশের প্রক্রিয়া ব্যবহার করে। কৌশলটির শক্তিগুলি এর প্রবণতা অনুসরণ করার ক্ষমতা, গতিশীল স্টপ-লস সুরক্ষা এবং পুনরায় প্রবেশের সুযোগগুলি ক্যাপচার করার মধ্যে রয়েছে। তবে কৌশলটির সম্ভাব্য অসুবিধা যেমন প্যারামিটার সংবেদনশীলতা, প্রবণতা স্বীকৃতির ত্রুটি, স্টপ-লস ফ্রিকোয়েন্সি এবং পুনরায় প্রবেশের ঝুঁকি রয়েছে। অপ্টিমাইজেশনের দিকনির্দেশগুলিতে প্রবণতা স্বীকৃতি, স্টপ-লস পদ্ধতি, পুনরায় প্রবেশের শর্ত এবং অবস্থান আকার অন্তর্ভুক্ত রয়েছে। অনুশীলনে কৌশলটি প্রয়োগ করার সময়, নির্দিষ্ট বাজারের বৈশিষ্ট্য এবং ট্রেডিং স্টাইলের উপর ভিত্তি করে এটি সাবধানে মূল্যায়ন এবং সামঞ্জস্য করা গুরুত্বপূর্ণ।
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("MA Incline Strategy with Trailing Stop-Loss and Conditional Re-Entry", overlay=true, calc_on_every_tick=true) // Input parameters windowSize = input.int(10, title="Window Size") maLength = input.int(150, title="Moving Average Length") minSlope = input.float(0.001, title="Minimum Slope") trailingStopPercentage = input.float(2.8, title="Trailing Stop Percentage (%)") / 100 reEntryPercentage = input.float(4.2, title="Re-Entry Percentage Above MA (%)") / 100 // Calculate the moving average ma = ta.sma(close, maLength) // Calculate the slope of the moving average over the window size previousMa = ta.sma(close[windowSize], maLength) slopeMa = (ma - previousMa) / windowSize // Check conditions isAboveMinSlope = slopeMa > minSlope isAboveMa = close > ma // Variables to track stop loss and re-entry condition var bool stopLossOccurred = false var float trailStopPrice = na // Buy condition buyCondition = isAboveMinSlope and isAboveMa and ((not stopLossOccurred) or (stopLossOccurred and low < ma * (1 + reEntryPercentage))) // Execute strategy if (buyCondition and strategy.opentrades == 0) if (stopLossOccurred and close < ma * (1 + reEntryPercentage)) strategy.entry("Long", strategy.long) stopLossOccurred := false else if (not stopLossOccurred) strategy.entry("Long", strategy.long) // Trailing stop-loss if (strategy.opentrades == 1) // Calculate the trailing stop price trailStopPrice := close * (1 - trailingStopPercentage) // Use the built-in strategy.exit function with the trailing stop strategy.exit("Trail Stop", "Long", stop=close * (1 - trailingStopPercentage)) // Exit condition sellCondition = ta.crossunder(close, ma) if (sellCondition and strategy.opentrades == 1) strategy.close("Long") // Check if stop loss occurred if (strategy.closedtrades > 0) lastExitPrice = strategy.closedtrades.exit_price(strategy.closedtrades - 1) if (not na(trailStopPrice) and lastExitPrice <= trailStopPrice) stopLossOccurred := true // Reset stop loss flag if the price crosses below the MA if (ta.crossunder(close, ma)) stopLossOccurred := false