اس حکمت عملی میں کیلٹنر چینل اشارے کا استعمال ہوتا ہے ، جس میں متحرک اوسط لائنوں کے ساتھ مل کر متحرک خرابی خرید اور فروخت کی قیمتوں کا تعین ہوتا ہے تاکہ کم خرید-اعلی فروخت کی خرابی کی کارروائیوں کو حاصل کیا جاسکے۔ حکمت عملی خودکار طور پر چینل بریک آؤٹ خرید اور فروخت کے مواقع کی نشاندہی کرسکتی ہے۔
مجموعی حکمت عملی متحرک چینل اشارے کے ذریعہ قیمتوں کے رجحانات اور سمتوں کا اندازہ کرنے کے لئے سائنسی اور معقول طریقوں کا استعمال کرتی ہے ، توڑنے والے سگنلز کو پکڑنے کے لئے معقول پیرامیٹرز طے کرتی ہے ، کم خرید-اعلی فروخت حاصل کرتی ہے ، اور اضافی منافع حاصل کرتی ہے۔ اسی وقت ، حکمت عملی کے خطرات کو مستقل طور پر بہتر بناتی ہے تاکہ یہ مختلف مارکیٹوں میں مستحکم چل سکے۔
/*backtest start: 2024-01-27 00:00:00 end: 2024-02-26 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="Keltner Strategy", overlay=true) length = input.int(20, minval=1) mult = input.float(2.0, "Multiplier") src = input(close, title="Source") exp = input(true, "Use Exponential MA") BandsStyle = input.string("Average True Range", options = ["Average True Range", "True Range", "Range"], title="Bands Style") atrlength = input(10, "ATR Length") esma(source, length)=> s = ta.sma(source, length) e = ta.ema(source, length) exp ? e : s ma = esma(src, length) rangema = BandsStyle == "True Range" ? ta.tr(true) : BandsStyle == "Average True Range" ? ta.atr(atrlength) : ta.rma(high - low, length) upper = ma + rangema * mult lower = ma - rangema * mult crossUpper = ta.crossover(src, upper) crossLower = ta.crossunder(src, lower) bprice = 0.0 bprice := crossUpper ? high+syminfo.mintick : nz(bprice[1]) sprice = 0.0 sprice := crossLower ? low -syminfo.mintick : nz(sprice[1]) crossBcond = false crossBcond := crossUpper ? true : na(crossBcond[1]) ? false : crossBcond[1] crossScond = false crossScond := crossLower ? true : na(crossScond[1]) ? false : crossScond[1] cancelBcond = crossBcond and (src < ma or high >= bprice ) cancelScond = crossScond and (src > ma or low <= sprice ) if (cancelBcond) strategy.cancel("KltChLE") if (crossUpper) strategy.entry("KltChLE", strategy.long, stop=bprice, comment="KltChLE") if (cancelScond) strategy.cancel("KltChSE") if (crossLower) strategy.entry("KltChSE", strategy.short, stop=sprice, comment="KltChSE")