এই কৌশলটি ট্রেডিং সিগন্যাল তৈরির জন্য মাল্টি টাইমফ্রেম এক্সপোনেন্সিয়াল মুভিং এভারেজ (এমটিএফ ইএমএ) এবং এমএসিডি সূচকের ফাংশনগুলির পূর্ণ সুবিধা গ্রহণ করে, যখন এটিআর সূচক দিয়ে স্টপ লস এবং লাভের দাম সেট করে। কৌশলটি শক্তিশালী প্রবণতা সহ ডিজিটাল এবং ফিয়াট মুদ্রা জোড়ার জন্য উপযুক্ত এবং শক্তিশালী প্রবণতা সহ বাজারে আরও ভাল পারফর্ম করে।
মাল্টি-টাইমফ্রেম এক্সপোনেনশিয়াল মুভিং এভারেজ (এমটিএফ ইএমএ) একটি সম্পদের সামগ্রিক লং/শর্ট স্ট্যাটাস নির্ধারণের জন্য একই চার্টে একাধিক টাইমফ্রেমের মুভিং এভারেজ প্রদর্শন করতে পারে। এই কৌশলটি 1 ঘন্টা এবং 15 মিনিটের এমটিএফ ইএমএ গ্রহণ করে।
যখন মূল্য 1 ঘন্টা MTF EMA এর উপরে থাকে এবং 1 ঘন্টা MTF EMA 15 মিনিটের MTF EMA এর নীচে থাকে, তখন এটি একটি আপট্রেন্ড হিসাবে সংজ্ঞায়িত করা হয়। যখন মূল্য 1 ঘন্টা MTF EMA এর নীচে থাকে এবং 1 ঘন্টা MTF EMA 15 মিনিটের MTF EMA এর উপরে থাকে, তখন এটি একটি ডাউনট্রেন্ড হিসাবে সংজ্ঞায়িত করা হয়।
যখন এমএসিডি লাইন নীচে থেকে সিগন্যাল লাইনের উপরে অতিক্রম করে, তখন একটি ক্রয় সংকেত উত্পন্ন হয়। যখন এটি উপরে থেকে নীচে অতিক্রম করে, তখন একটি বিক্রয় সংকেত উত্পন্ন হয়। একই সময়ে, মিথ্যা সংকেত এড়াতে এমএসিডি লাইন এবং সিগন্যাল লাইনের জন্য একটি ক্রসওভার সীমা সেট করা হয়।
এটিআর সূচকটি স্টপ লস এবং লাভের দাম সেট করতে ব্যবহৃত হয়। এটিআর গতিশীলভাবে বাজারের অস্থিরতার উপর ভিত্তি করে যুক্তিসঙ্গত স্টপ লস সেট করতে এবং লাভের দূরত্ব নিতে পারে। একই সাথে, স্টপ লস এবং লাভের গুণকগুলি আরও নমনীয় করার জন্য উচ্চ এবং নিম্নের ব্যাকটেস্টের ভিত্তিতে সেট করা হয়।
লং সিগন্যালঃ সিগন্যাল লাইনের উপরে আপট্রেন্ড এবং এমএসিডি ক্রসিং সংক্ষিপ্ত সংকেতঃ ডাউনট্রেন্ড এবং এমএসিডি ক্রসিং সিগন্যাল লাইনের নিচে এবং ক্রসওভার মান সীমা অতিক্রম করে
লং টেক লাভঃ এটিআর এর মাধ্যমে মূল্য ভাঙ্গন লাভের মূল্য নেয় লং স্টপ লসঃ মূল্য ATR স্টপ লসের মূল্যের মধ্য দিয়ে অতিক্রম করে শর্ট টেক লাভঃ এটিআর এর মাধ্যমে মূল্য ভাঙ্গন লাভের মূল্য সংক্ষিপ্ত স্টপ লসঃ মূল্য ATR স্টপ লসের মূল্য অতিক্রম করে।
এই কৌশলটির সবচেয়ে বড় সুবিধা হ'ল এটি ট্রেন্ড নির্ধারণে এমটিএফ ইএমএর শক্তি এবং ট্রেডিং সিগন্যাল তৈরিতে এমএসিডির পূর্ণ ব্যবহার করে। এমটিএফ ইএমএ সামগ্রিক প্রবণতার দিকটি পরিষ্কারভাবে বিচার করতে পারে এবং অস্থির বাজারে ঘন ঘন ট্রেডিং এড়াতে পারে। এমএসিডি সূচক মূল্যের নিদর্শনগুলিতে স্বল্পমেয়াদী পরিবর্তনগুলি আরও ভালভাবে ক্যাপচার করতে পারে এবং ট্রেডিং সংকেত তৈরি করতে পারে। উভয়ই একসাথে ব্যবহার করে আরও বেশি ট্রেডিং সুযোগ পাওয়ার সময় প্রবণতা ক্যাপচার করা নিশ্চিত করে। এছাড়াও, গতিশীলভাবে স্টপ লস ট্র্যাক করতে এবং লাভ নিতে এটিআর সূচক ব্যবহার করে পৃথক ব্যবসায়ের ঝুঁকি কার্যকরভাবে নিয়ন্ত্রণ করতে পারে।
এই কৌশলটির দুটি প্রধান ঝুঁকি রয়েছেঃ প্রথমত, একটি স্পষ্ট প্রবণতার অভাবে, এমটিএফ ইএমএ ভুল সংকেত তৈরি করতে পারে, যার ফলে ক্ষতি হতে পারে; দ্বিতীয়ত, যখন দাম নাটকীয়ভাবে পরিবর্তিত হয় তখন এমএসিডি সূচক প্রায়শই বিভ্রান্তিকর সংকেত তৈরি করে, যা ওভার-ট্রেডিংয়ের দিকে পরিচালিত করতে পারে। প্রথম ঝুঁকির জন্য, এমটিএফ ইএমএ পরামিতিগুলি মূল্যের প্রবণতার পরিবর্তনের সাথে আরও ভালভাবে মেলে উপযুক্তভাবে সামঞ্জস্য করা যেতে পারে; দ্বিতীয় ঝুঁকিটি এমএসিডি সূচকের জন্য ক্রসওভার সীমা নির্ধারণ করে প্রশমিত করা যেতে পারে।
কৌশলটির নিম্নলিখিত দিকগুলি অপ্টিমাইজ করা যেতে পারেঃ
বিভিন্ন ট্রেডিং ইনস্ট্রুমেন্টের দামের বৈশিষ্ট্যগুলির সাথে আরও ভালভাবে মেলে এমন MTF EMA এর চক্রের পরামিতিগুলি সামঞ্জস্য করুন
আরও ভাল সংকেতের জন্য MACD সূচকের দ্রুত এবং ধীর চলমান গড় এবং সংকেত লাইন পরামিতিগুলি অপ্টিমাইজ করুন
সেরা রিটার্নের জন্য বিভিন্ন এটিআর চক্রের পরামিতি এবং স্টপ লস/টেক প্রফিট মাল্টিপল পরীক্ষা করুন
ফিল্টার সংকেত অন্যান্য সহায়ক সূচক যোগ করুন
এই দীর্ঘ এবং সংক্ষিপ্ত খোলার কৌশলটি প্রবণতা বিচারের জন্য এমটিএফ ইএমএ, ট্রেডিং সংকেত উত্পাদনের জন্য এমএসিডি এবং গতিশীল স্টপ লস এবং লাভ নেওয়ার জন্য এটিআর পদ্ধতিগুলিকে একত্রিত করে। এটি সুস্পষ্ট প্রবণতা সহ বাজারে ভাল রিটার্ন অর্জন করতে পারে। আরও ভাল পারফরম্যান্স অর্জনের জন্য এই কৌশলটির পরামিতি এবং অপ্টিমাইজেশনের জন্য প্রচুর জায়গা রয়েছে। তবে ঝুঁকি নিয়ন্ত্রণ করা এবং অস্থির বাজারে অন্ধ ট্রেডিং এড়ানো প্রয়োজন।
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Steven A. Zmuda Burke / stevenz17 //@version=4 // From Date Inputs fromDay = input(defval = 01, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 04, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2022, title = "From Year", minval = 1970) // To Date Inputs toDay = input(defval = 01, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 05, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2022, title = "To Year", minval = 1970) // Calculate start/end date and time condition startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true // Input strategy("LONG", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, slippage=1, commission_type=strategy.commission.percent, commission_value=0.015) SOURCE = input(title = "═════════════════════ SOURCE ═════════════════════", defval = false, type = input.bool) sourcehl2 = input(title="Source hl2 or (open+close)/2 ?",type=input.bool,defval=true) source = sourcehl2 ? hl2 : ((open+close)/2) //MTF EMA MTFEMA = input(title = "════════════════════ MTF EMA ════════════════════", defval = false, type = input.bool) res1=input(title="MTF EMA 1", type=input.resolution, defval="60") len1 = input(title = "EMA Period 1", type=input.integer, defval=70, minval=1) ema1 = ema(source, len1) emaStep1 = security (syminfo.tickerid, res1, ema1, barmerge.gaps_off, barmerge.lookahead_off) mtf1 = emaStep1 res2=input(title="MTF EMA 2", type=input.resolution, defval="15") len2 = input(title = "EMA Period 2", type=input.integer, defval=68, minval=1) ema2 = ema(source, len2) emaStep2 = security (syminfo.tickerid, res2, ema2, barmerge.gaps_off, barmerge.lookahead_off) mtf2 = emaStep2 t1 = plot(mtf1, linewidth=4, color= color.aqua, title="EMA") t2 = plot(mtf2, linewidth=4, color= color.navy, title="EMA") fill(t1, t2, transp = 70, color = mtf1 > mtf2 ? color.red : color.green) ///MACD MACD= input(title = "═════════════════════ MACD ══════════════════════", defval = false, type = input.bool) MACDsource=close fastLength = input(13, minval=1, title="MACD fast moving average") slowLength=input(18,minval=1, title="MACD slow moving average") signalLength=input(24,minval=1, title="MACD signal line moving average") MacdEmaLength =input(9, title="MACD EMA period", minval=1) useEma = input(true, title="Use EMA (otherwise SMA)") useOldAlgo = input(false, title="Use normal MACD") Lmacsig=input(title="LONG MACD and signal crossover limit",type=input.integer,defval=180) // Fast line ma1= useEma ? ema(MACDsource, fastLength) : sma(MACDsource, fastLength) ma2 = useEma ? ema(ma1,fastLength) : sma(ma1,fastLength) fastMA = ((2 * ma1) - ma2) // Slow line mas1= useEma ? ema(MACDsource , slowLength) : sma(MACDsource , slowLength) mas2 = useEma ? ema(mas1 , slowLength): sma(mas1 , slowLength) slowMA = ((2 * mas1) - mas2) // MACD line macd = fastMA - slowMA // Signal line emasig1 = ema(macd, signalLength) emasig2 = ema(emasig1, signalLength) signal = useOldAlgo ? sma(macd, signalLength) : (2 * emasig1) - emasig2 hist = macd - signal histline = hist > 0 ? color.green : color.red //MACD ribbon macdribbon=input(title="Show MACD ribbon?",type=input.bool,defval=false) macdx=input(title="MACD ribbon multiplier", type=input.integer, defval=3, minval=1) leadLine1 = macdribbon ? macd*macdx + source : na leadLine2 = macdribbon ? signal*macdx + source : na leadLine3 = hist + source //MACD plot p3 = plot(leadLine1, color= color.green, title="MACD", transp = 100, linewidth = 8) p4 = plot(leadLine2, color= color.red, title="Signal", transp = 100, linewidth = 8) fill(p3, p4, transp = 20, color = leadLine1 > leadLine2 ? #53b987 : #eb4d5c) plot((leadLine3), color = histline, title="Histogram", linewidth = 3) l="TEst" upHist = (hist > 0) ? hist : 0 downHist = (hist <= 0) ? hist : 0 p1 = plot(upHist, color=color.green, transp=40, style=plot.style_columns, title='Positive delta') p2 = plot(downHist, color=color.green, transp=40, style=plot.style_columns, title='Negative delta') zeroLine = plot(macd, color=color.black, transp=0, linewidth=2, title='MACD line') signalLine = plot(signal, color=color.gray, transp=0, linewidth=2, title='Signal') ribbonDiff = color.green fill(zeroLine, signalLine, color=ribbonDiff) circleYPosition = signal plot(ema(macd,MacdEmaLength) , color=color.red, transp=0, linewidth=2, title='EMA on MACD line') ribbonDiff2 = hist > 0 ? color.green : color.red plot(crossunder(signal,macd) ? circleYPosition : na,style=plot.style_circles, linewidth=4, color=ribbonDiff, title='Dots') //STOCHASTIC stochchch= input(title = "═══════════════════ STOCHASTIC ════════════════════", defval = false, type = input.bool) StochOn = input(title="Stochastic On?",type=input.bool,defval=true) periodK = input(10, title="K", minval=1) periodD = input(1, title="D", minval=1) smoothK = input(3, title="Smooth", minval=1) stochlimit = input(30, title="Stoch value crossover", minval=1) k = sma(stoch(close, high, low, periodK), smoothK) d = sma(k, periodD) stochSignal = StochOn ? (d < stochlimit ? true : false) : true pp= input(1, title="avg price length", minval=1) p = ema (source, pp) K = k + p plot(k, title="%K", color=#0094FF) plot(d, title="%D", color=#FF6A00) h0 = hline(72, "Upper Band", color=#606060) h1 = hline(20, "Lower Band", color=#606060) fill(h0, h1, color=#9915FF, transp=80, title="Background") //Long LS= "════════════════════════════════ LONG CONDITIONS ═══════════════════════════" uptrend = close > mtf1 and mtf1 < mtf2 downtrend = close < mtf1 and mtf1 > mtf2 crossMACD = crossunder(macd,signal) LongBuy = uptrend and stochSignal? crossMACD and signal < Lmacsig and macd < Lmacsig : na LONG = strategy.position_size > 0 SHORT = strategy.position_size < 0 FLAT = strategy.position_size == 0 plotshape(LongBuy, style=shape.xcross, text="LONG", color=color.green) //ATR & TP/SL ATRTPSLX= input(title = "═════════════════ LONG SL ═════════════════", defval = false, type = input.bool) maxIdLossPcnt = input(5, "Max Intraday Loss(%)", type=input.float, minval=0.0, step=0.1) // strategy.risk.max_intraday_loss(maxIdLossPcnt, strategy.percent_of_equity) SSL2=input(title="Long Stop Loss when MTF EMA cross?",type=input.bool,defval=false) SSLOP = LONG and crossunder(source, mtf1) SlossPercOn = input(title="Long Stop Loss (%) on?",type=input.bool,defval=false) SlossPerc = input(title="Long Stop Loss (%)", type=input.float, minval=0.0, step=0.1, defval=4.7) * 0.01 SSpricePerc = LONG and SlossPercOn? strategy.position_avg_price * (-1 - SlossPerc) : na plot(series = SSpricePerc, linewidth=2, color= color.maroon,style=plot.style_linebr, title="Long Stop Loss %") SSLX = LONG and crossunder(source, SSpricePerc) SSLatr= input(title="Long Stop Loss ATR?",type=input.bool,defval=true) useStructure=input(title="Look back for High/Lows?",type=input.bool,defval=true) Slookback=input(title="How far to look back for High/Lows:",type=input.integer,defval=18,minval=1) SatrLenghth=input(title="Long ATR Lenghth",type=input.integer,defval=9,minval=1) SatrStopMultiplier=input(title="Long ATR Stop x ?", type=input.float,defval=4.3, minval=0.1,step=0.1) Satr = atr(SatrLenghth) LongStop = SSLatr ? ((useStructure ? lowest(low, Slookback) : source) - Satr * SatrStopMultiplier) : na SStop = crossunder(source,LongStop) plot(Satr, color=color.blue, title="ATR", transp=100) plot(series = uptrend ? LongStop : na, color=color.red, style=plot.style_linebr, title="Long Trailing Stop", transp=0) ATRTPSLXX= input(title = "═════════════════ LONG TP ═════════════════", defval = false, type = input.bool) TpPercOn = input(title="Long Take Profit (%) on?",type=input.bool,defval=true) TpPerc = input(title="Long Take Profit (%)", type=input.float, minval=0.0, step=0.1, defval=5.3) * 0.01 TppricePerc = LONG and TpPercOn? strategy.position_avg_price * (-1 + TpPerc) : na plot(series = TppricePerc, linewidth=2, color= color.lime,style=plot.style_linebr, title="Long Take Profit %") TPLX = LONG and crossunder(source, TppricePerc) TP1=input(title="1 Long Take Profit On?",type=input.bool,defval=true) useStructure1=input(title="Look back for High/Lows?",type=input.bool,defval=true) STplookback=input(title="How far to look back for High/Lows for 1 TP",type=input.integer,defval=12,minval=1) STpatrLenghth=input(title="Long ATR Lenghth 1 TP",type=input.integer,defval=24,minval=1) SatrProfitMultiplier = input(title="First Long ATR Take Profit x ?", type=input.float,defval=5.5, minval=0.1,step=0.1) STpatr = atr(STpatrLenghth) LongTakeProfit = (useStructure1 ? highest(high, STplookback) : source) + STpatr * SatrProfitMultiplier LongTP = TP1 ? crossover(source, LongTakeProfit): false plot(series = uptrend ? LongTakeProfit: na , color=color.green, style=plot.style_linebr, title="Long Trailing Take Profit", transp=0) // Bar color barcolor(cross(macd, signal) ? (macd - signal > 0 ? (uptrend and macd < 0 and signal < 0 ? color.yellow : na) : (downtrend and macd > 0 and signal > 0 ? color.blue : na)) : na) // Strategy ATR GOLONG = LongBuy and SSLatr and FLAT if GOLONG and TP1 strategy.entry(id="Entry LONG 1TP", long=true,comment="Entry Long") strategy.exit("Long Profit or Loss 1TP","Entry LONG 1TP", limit=LongTakeProfit, stop=LongStop) if SSLX strategy.close(id="Entry LONG 1TP", comment="% Long SL EXIT") if TPLX strategy.close(id="Entry LONG 1TP", comment="% Long TP EXIT") if SSLOP and SSL2 strategy.close(id="Entry LONG 1TP", comment="MTF EMA cross EXIT") if (not time_cond) strategy.close_all() strategy.cancel_all() //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr) //@version=4