এই কৌশলটি প্রবণতা অনুসরণ এবং অগ্রগতি ট্রেডিং অর্জনের জন্য চলমান গড় কৌশল, ইচিমোকু ক্লাউড চার্ট এবং কেল্টনার চ্যানেল প্রযুক্তিগত সূচক একীভূত করে, যা উচ্চ-ফ্রিকোয়েন্সি অ্যালগরিদমিক ট্রেডিংয়ের জন্য উপযুক্ত।
এই কৌশলটি প্রবণতা ট্র্যাকিং এবং দক্ষ অগ্রগতি ট্রেডিং অর্জনের জন্য একাধিক প্রযুক্তিগত সূচক সহ ইচিমোকু ক্লাউড চার্ট, কেল্টনার চ্যানেল এবং চলমান গড় কৌশলগুলিকে একীভূত করে। একক সূচকের তুলনায়, এই কৌশলটির বিচার আরও বিস্তৃত এবং নির্ভুল, নির্দিষ্ট মিথ্যা সংকেত এড়ানো। একই সাথে, এমন সমস্যাও রয়েছে যে পরামিতি সেটিংস আরও জটিল এবং পৃথক স্টকগুলির জন্য অনুকূলিত করা দরকার। সাধারণভাবে, এই কৌশলটি উল্লেখযোগ্য প্রভাব সহ উচ্চ-ফ্রিকোয়েন্সি অ্যালগরিদমিক ট্রেডিংয়ের জন্য উপযুক্ত।
/*backtest start: 2023-11-19 00:00:00 end: 2023-12-19 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // Author: Persio Flexa // Description: Ichimoku Clouds with Keltner Channel, perfect for margin trading strategy("Ichimoku Keltner Strategy", overlay=true) // -- Keltner ------------------------------------------------------------------ source = close useTrueRange = input(true) length = input(18, minval=1) mult = input(1.8) ma = sma(source, length) range = useTrueRange ? tr : high - low rangema = sma(range, length) upper = ma + rangema * mult lower = ma - rangema * mult plot(ma, title="BASE", color=orange,transp=85) plot(upper, title="UPPER", color=red) plot(lower, title="LOWER", color=green) //crossUpper = crossover(source, upper) //crossLower = crossunder(source, lower) crossUpper = source > upper crossLower = source < 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 (source < ma or high >= bprice ) cancelScond = crossScond and (source > ma or low <= sprice ) // --------------------------------------------------------------------- // -- Ichimoku ATRlength = input(200, minval=1) ATRMult = input(2.272, minval=1) ATR = rma(tr(true), ATRlength) len = input(26, minval=1, title="EMA Length") src = input(close, title="Source") out = ema(src, len) emaup = out+(ATR*ATRMult) emadw = out-(ATR*ATRMult) conversionPeriods = input(15, minval=1), basePeriods = input(35, minval=1) laggingSpan2Periods = input(52, minval=1), displacement = input(26, minval=1) donchian(len) => avg(lowest(len), highest(len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) leadLine1 = avg(conversionLine, baseLine) leadLine2 = donchian(laggingSpan2Periods) p1 = plot(leadLine1, offset = displacement, color=green,transp=85, title="Lead 1") p2 = plot(leadLine2, offset = displacement, color=red,transp=85, title="Lead 2") fill(p1, p2,silver) longCond = crossover(conversionLine, baseLine) shortCond = crossunder(conversionLine, baseLine) // ------------------------------------------------------------------------- if (crossUpper and (conversionLine > baseLine)) strategy.entry("long", strategy.long, stop=bprice, comment="LONG") if (crossLower and (conversionLine < baseLine)) strategy.entry("short", strategy.short, stop=sprice, comment="SHORT") strategy.close("long", when = (shortCond and source < lower)) strategy.close("short", when = (longCond and source > upper))