এই কৌশলটি কম-ক্রয়-উচ্চ-বিক্রয় অগ্রগতি অপারেশন অর্জনের জন্য গতিশীল ব্রেকআউট ক্রয় এবং বিক্রয় মূল্য নির্ধারণের জন্য চলমান গড় রেখাগুলির সাথে মিলিত কেল্টনার চ্যানেল সূচক ব্যবহার করে। কৌশলটি স্বয়ংক্রিয়ভাবে চ্যানেল ব্রেকআউট ক্রয় এবং বিক্রয় সুযোগগুলি সনাক্ত করতে পারে।
সামগ্রিক কৌশলটি গতিশীল চ্যানেল সূচকগুলির মাধ্যমে মূল্যের প্রবণতা এবং দিকনির্দেশগুলি বিচার করার জন্য বৈজ্ঞানিক এবং যুক্তিসঙ্গত পদ্ধতি ব্যবহার করে, অগ্রগতি সংকেতগুলি ক্যাপচার করার জন্য যুক্তিসঙ্গত পরামিতিগুলি সেট করে, কম-ক্রয়-উচ্চ-বিক্রয় অর্জন করে এবং অতিরিক্ত রিটার্ন অর্জন করে। একই সাথে, কৌশলটির ঝুঁকিগুলি ক্রমাগত অনুকূল করে তোলে যাতে এটি বিভিন্ন বাজারে স্থিতিশীলভাবে চলতে পারে।
/*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")