
اس حکمت عملی کا بنیادی خیال ایک ایسا فریم ورک لانا ہے جس میں وقت کی حد کو لچکدار طریقے سے منتخب کیا جاسکتا ہے ، جس سے صارفین کو مختلف ضروریات کے مطابق خود بخود یا دستی طور پر وقت کی حد مقرر کی جاسکتی ہے۔
اسٹریٹجی میں ان پٹ پیرامیٹرز کے ذریعے تاریخ کی حد کے انتخاب کے چار طریقے مہیا کیے جاتے ہیں: پورے تاریخی اعداد و شمار کا استعمال، تازہ ترین دن کا تعین، تازہ ترین ہفتہ کا تعین یا دستی طور پر تاریخ کی حد کا تعین کرنا۔ اسٹریٹجی منتخب کردہ تاریخ کی حد کے مطابق متحرک طور پر ریٹرننگ ونڈو ترتیب دیتی ہے ، جبکہ ٹریڈنگ کی منطق برقرار رہتی ہے ، تاکہ مختلف وقت کی کھڑکیوں کے تحت حکمت عملی کی کارکردگی میں فرق کا موازنہ کیا جاسکے۔
اس حکمت عملی میں ریٹرننگ ڈیٹ رینج سلیکشن ماڈیول اور ڈبل ایم اے ٹریڈنگ حکمت عملی ماڈیول شامل ہیں۔
یہ حکمت عملی ایک عام ریٹرننگ ڈیٹ رینج فریم ورک کے طور پر کام کرتی ہے۔ اس کا فائدہ یہ ہے کہ یہ لچکدار اور تخصیص پذیر ہے تاکہ صارفین کی مختلف جانچ کی ضروریات کو پورا کیا جاسکے۔ سادہ اور موثر ڈبل ایم اے ٹرانزیکشن منطق کے ساتھ ، حکمت عملی کو فوری طور پر تصدیق اور موازنہ کیا جاسکتا ہے۔ اس کے بعد فلٹرز ، اسٹاپ لاسر منطق وغیرہ کو شامل کرکے اس کو بہتر بنایا جاسکتا ہے ، جس سے حکمت عملی کو عملی طور پر لاگو کرنے کے قریب ایک قدم ہے۔ مجموعی طور پر ، اس حکمت عملی کے فریم ورک میں بہت اچھی توسیع اور حوالہ کی قیمت ہے۔
/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title = "How To Auto Set Date Range", shorttitle = " ", overlay = true)
// Revision: 1
// Author: @allanster
// === INPUT MA ===
fastMA = input(defval = 14, title = "FastMA", type = input.integer, minval = 1, step = 1)
slowMA = input(defval = 28, title = "SlowMA", type = input.integer, minval = 1, step = 1)
// === INPUT BACKTEST RANGE ===
useRange = input(defval = "WEEKS", title = "Date Range", type = input.string, confirm = false, options = ["ALL", "DAYS", "WEEKS", "MANUAL"])
nDaysOrWeeks = input(defval = 52, title = "# Days or Weeks", type = input.integer, minval = 1)
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 15, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2019, title = "From Year", minval = 2014)
ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2014)
// === FUNCTION EXAMPLE ===
window() => true
// === LOGIC ===
buy = crossover(sma(close, fastMA), sma(close, slowMA)) // buy when fastMA crosses over slowMA
sell = crossunder(sma(close, fastMA), sma(close, slowMA)) // sell when fastMA crosses under slowMA
// === EXECUTION ===
strategy.entry("L", strategy.long, when=window() and buy) // buy long when "within window of time" AND crossover
strategy.close("L", when=window() and sell) // sell long when "within window of time" AND crossunder
// === PLOTTING ===
plot(sma(close, fastMA), title = 'FastMA', color = color.aqua, linewidth = 2, style = plot.style_line) // plot FastMA
plot(sma(close, slowMA), title = 'SlowMA', color = color.yellow, linewidth = 2, style = plot.style_line) // plot SlowMA