یہ حکمت عملی ایک مقداری تجارتی نظام ہے جو کثیر مدتی سادہ حرکت پذیر اوسط (ایس ایم اے) کراس اوور سگنلز پر مبنی ہے۔ یہ بنیادی طور پر طویل مدتی اپ ٹرینڈز کے اندر پل بیک کے مواقع کی نشاندہی کرتا ہے۔ یہ حکمت عملی مارکیٹ کے رجحانات اور تجارتی مواقع کو ان کی متعلقہ پوزیشنوں اور کراس اوور سگنلز کے ذریعہ طے کرنے کے لئے پانچ مختلف ادوار (5 ، 10 ، 20 ، 60 اور 120 دن) کے ایس ایم اے کا استعمال کرتی ہے۔
بنیادی منطق میں کئی اہم اجزاء شامل ہیں:
یہ حکمت عملی ایک تجارتی نظام تیار کرتی ہے جس کا مقصد ملٹی پیریڈ ایس ایم اے کے مربوط استعمال کے ذریعے طویل مدتی اپ ٹرینڈز کے اندر واپسی کے مواقع پر قبضہ کرنا ہے۔ اس کا ڈیزائن عملی اور سیدھا ہے ، جس سے اچھی تفہیم اور عملدرآمد کی پیش کش ہوتی ہے۔ اسٹریٹیجی کی استحکام اور وشوسنییتا کو اتار چڑھاؤ فلٹرنگ ، حجم کی تصدیق اور دیگر اصلاحاتی اقدامات کے تعارف کے ذریعے مزید بڑھا جاسکتا ہے۔
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=6 strategy("Long-Term Growing Stock Strategy", overlay=true) // Date Range // STEP 1. Create inputs that configure the backtest's date range useDateFilter = input.bool(true, title="Filter Date Range of Backtest",group="Backtest Time Period") backtestStartDate = input(timestamp("1 Jan 2014"),title="Start Date", group="Backtest Time Period",tooltip="This start date is in the time zone of the exchange " + "where the chart's instrument trades. It doesn't use the time " +"zone of the chart or of your computer.") backtestEndDate = input(timestamp("31 Dec 2024"), title="End Date", group="Backtest Time Period") // STEP 2. See if current bar falls inside the date range inTradeWindow = true // Calculate EMAs // ema20 = ta.ema(close, ema20_length) // ema60 = ta.ema(close, ema60_length) // ema120 = ta.ema(close, ema120_length) sma5 = ta.sma(close, 5) sma10 = ta.sma(close, 10) sma20 = ta.sma(close, 20) sma60 = ta.sma(close, 60) sma120 = ta.sma(close, 120) // Long-term growth condition: EMA 20 > EMA 60 > EMA 120 longTermGrowth = sma20 > sma60 // and ema60 > ema120 // Entry condition: Stock closes below EMA 20 and then rises back above EMA 10 // entryCondition = ta.crossover(close, ema20) or (close[1] < ema20[1] and close > ema20) entryCondition = sma5[1] <= sma20[1] and sma5 > sma20 // ta.crossover(sma5, sma20) // Exit condition: EMA 20 drops below EMA 60 // exitCondition = ema5 < ema60 or (year == 2024 and month == 12 and dayofmonth == 30) exitCondition = ta.crossover(sma20, sma5) // Execute trades if entryCondition and inTradeWindow strategy.entry("Long Entry", strategy.long) if exitCondition and inTradeWindow strategy.close("Long Entry") // plotchar(true, char="sma5: " + str.tostring(sma5)) // plotchar(true, char="sma5: " + sma20) // label.new(x=bar_index, y=high + 10, text="SMA 5: " + str.tostring(sma5), color=color.blue, style=label.style_label_down, textcolor=color.white, size=size.small) // label.new(x=bar_index, y=low, text="SMA 20: " + str.tostring(sma20), color=color.red, style=label.style_label_down, textcolor=color.white, size=size.small) // x = time + (time - time[1]) * offset_x // var label lab = na // label.delete(lab) // lab := label.new(x=x, y=0, text=txt, xloc=xloc.bar_time, yloc=yloc.belowbar, color=color.red, textcolor=color.black, size=size.normal, style=label.style_label_up) // label.set_x(lab, x) // Plot EMAs for visualization // plot(ema20, color=color.red, title="EMA 20") // plot(ema60, color=color.green, title="EMA 60") // plot(ema120, color=color.blue, title="EMA 120")