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