اسٹریٹجی حرکت پذیر اوسط (ایم اے) کے ڈھلوان اور ایم اے سے قیمت کی متعلقہ پوزیشن کی بنیاد پر تجارتی فیصلے کرتی ہے۔ جب ایم اے ڈھلوان کم سے کم ڈھلوان کی حد سے زیادہ ہے اور قیمت ایم اے سے زیادہ ہے تو ، حکمت عملی ایک طویل پوزیشن شروع کرتی ہے۔ اس کے علاوہ ، حکمت عملی خطرے کو سنبھالنے کے لئے ٹریلنگ اسٹاپ نقصان کا استعمال کرتی ہے اور مخصوص حالات میں دوبارہ داخلے کی اجازت دیتی ہے۔ حکمت عملی کا مقصد متحرک اسٹاپ نقصان اور دوبارہ داخلے کے طریقہ کار کے ذریعہ واپسی اور خطرات کو بہتر بناتے ہوئے اپ ٹرینڈز میں مواقع کو حاصل کرنا ہے۔
اسٹریٹجی میں ٹریڈنگ کے لئے ٹریلنگ اسٹاپ نقصان اور مشروط دوبارہ اندراج کے طریقہ کار کا استعمال کیا جاتا ہے۔ اسٹریٹجی کی طاقت اس کی رجحان کی پیروی کرنے کی صلاحیت ، متحرک اسٹاپ نقصان سے تحفظ اور دوبارہ اندراج کے مواقع پر قبضہ کرنے میں ہے۔ تاہم ، اسٹریٹجی میں ممکنہ نقصانات بھی ہیں ، جیسے پیرامیٹر حساسیت ، رجحان کی شناخت کی غلطیاں ، اسٹاپ نقصان کی تعدد ، اور دوبارہ اندراج کے خطرات۔ اصلاح کی سمتوں میں رجحان کی شناخت ، اسٹاپ نقصان کے طریقوں ، دوبارہ اندراج کی شرائط ، اور پوزیشن سائزنگ کو بہتر بنانا شامل ہے۔ جب عملی طور پر حکمت عملی کا اطلاق ہوتا ہے تو ، مارکیٹ کی مخصوص خصوصیات اور تجارتی انداز کی بنیاد پر اس کا محتاط اندازہ لگانا اور ایڈجسٹ کرنا ضروری ہے۔
/*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