
حکمت عملی ایک مقداری تجارتی نظام ہے جس کی بنیاد ملٹی پیریڈ سادہ موونگ ایوریج (SMA) کراس اوور سگنلز پر ہوتی ہے۔ یہ بنیادی طور پر طویل مدتی اپ ٹرینڈ کے اندر قلیل مدتی پل بیک کے مواقع کی نشاندہی کرکے تجارت کرتا ہے۔ یہ حکمت عملی 5 دن، 10 دن، 20 دن، 60 دن اور 120 دن کے پانچ ادوار کے ساتھ SMA اشاریوں کا استعمال کرتی ہے تاکہ مارکیٹ کے رجحانات اور تجارتی مواقع کو پوزیشن کے رشتے اور متحرک اوسط کے کراس اوور سگنلز کے ذریعے اندازہ کیا جا سکے۔
حکمت عملی کی بنیادی منطق میں درج ذیل اہم حصے شامل ہیں:
یہ حکمت عملی ایک تجارتی نظام بنانے کے لیے کثیر مدتی SMA موونگ ایوریجز کا استعمال کرتی ہے جو طویل مدتی اوپر کے رجحانات میں پل بیک کے مواقع حاصل کرنے پر توجہ مرکوز کرتی ہے۔ حکمت عملی کا ڈیزائن جامع اور عملی ہے، اچھی سمجھ اور قابل عمل ہے۔ اتار چڑھاؤ کی فلٹرنگ اور حجم کی تصدیق جیسے اصلاحی اقدامات متعارف کرانے سے، حکمت عملی کی مضبوطی اور وشوسنییتا میں مزید بہتری کی توقع ہے۔
/*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")