এই কৌশলটি মূল ট্রেডিং সিগন্যাল হিসাবে 24 পেরিওডের ডনচিয়ান চ্যানেলকে 200 পেরিওডের চলমান গড়ের সাথে একত্রিত করে। যখন দাম নিম্নগামী হয় তখন শর্ট পজিশন খোলা হয় এবং যখন দাম উপরে ওঠে তখন লং পজিশন খোলা হয়।
কৌশলগত যুক্তি মূলত নিম্নলিখিত পয়েন্টগুলির উপর ভিত্তি করেঃ
ডনচিয়ান চ্যানেলটি গত ২৪টি সময়ের সর্বোচ্চ উচ্চ এবং সর্বনিম্ন নিম্ন ব্যবহার করে তৈরি করা হয়। যখন মূল্য এই চ্যানেল থেকে বেরিয়ে আসে, তখন এটি বৃহত্তর উপরে বা নীচে চলার সম্ভাবনা নির্দেশ করে।
200-পরিয়ড চলমান গড় দীর্ঘ / সংক্ষিপ্ত পক্ষপাতের জন্য একটি ফিল্টার হিসাবে কাজ করে। যদি মূল্য ডনচিয়ান চ্যানেলটি ভেঙে দেয় এবং চলমান গড়ের অন্য দিকে থাকে, তবে বিপরীত হওয়ার সম্ভাবনা থাকতে পারে।
এন্ট্রি সিগন্যাল হচ্ছে:
শর্ট পজিশনের জন্য স্টপ লস গত ৩ বারের সর্বোচ্চ উচ্চতায় সেট করা হয়। ট্যাক লাভ এন্ট্রি প্রাইস বিয়োগ ৩ গুণ স্টপ লস এবং এন্ট্রি প্রাইসের মধ্যে পার্থক্য হিসাবে সেট করা হয়। লং পজিশনের স্টপ লস এবং ট্যাক প্রফিট লজিক বিপরীত।
এই কৌশলটির সুবিধা হ'ল ডনচিয়ান চ্যানেল এবং চলমান গড় ফিল্টারকে একত্রিত করে, এটি একটি একক সূচকের উপর নির্ভর করে মিথ্যা সংকেতগুলি এড়ায়, উল্লেখযোগ্যভাবে জয়ের হার উন্নত করে।
এই কৌশলটির নিম্নলিখিত সুবিধা রয়েছে:
উচ্চ জয় হারঃ ডনচিয়ান চ্যানেল এবং চলমান গড় ফিল্টারকে একত্রিত করে, একক সূচক থেকে মিথ্যা সংকেতগুলির কারণে অপ্রয়োজনীয় ক্ষতি এড়ানো হয়।
নিয়ন্ত্রণযোগ্য ঝুঁকিঃ স্টপ লস স্তর হিসাবে সাম্প্রতিক সর্বোচ্চ সর্বোচ্চ / সর্বনিম্ন সর্বনিম্ন ব্যবহার করে কার্যকরভাবে হারানো ব্যবসায়ের নেতিবাচক দিকগুলি পরিচালনা করে। 3: 1 মুনাফা থেকে ক্ষতির অনুপাত আকর্ষণীয়।
সহজ এবং বাস্তবায়ন করা সহজঃ লজিক সহজ, স্বজ্ঞাত সূচক ব্যবহার করে যা বোঝা এবং সম্পাদন করা সহজ।
বিভিন্ন বাজার ও সময়সীমার মধ্যে স্থিতিশীলতাঃ তুলনামূলকভাবে কয়েকটি পরামিতির সাথে, কৌশলটি বিভিন্ন পণ্য এবং সময়সীমার মধ্যে স্থিতিশীল।
এই কৌশলটির প্রধান ঝুঁকিগুলি হলঃ
চরম বাজারের গতিবিধিঃ খুব শক্তিশালী একমুখী প্রবণতা স্টপ লসকে ট্রিগার করতে পারে যার ফলে ক্ষতি বাড়তে পারে। এটি স্টপগুলি প্রসারিত করে বা অবস্থানের আকার হ্রাস করে প্রশমিত করা যেতে পারে।
অকাল প্রস্থান সংকেত ঝুঁকিঃ নতুন বিপরীত সংকেতগুলিতে প্রস্থান পুনরাবৃত্তি প্রবেশ এবং প্রস্থান কারণে অস্থির বাজারে ওভার-ট্রেডিংয়ের কারণ হতে পারে। প্রস্থান যুক্তি অনুকূলিতকরণ এটি মোকাবেলায় সহায়তা করতে পারে।
প্যারামিটার অপ্টিমাইজেশান ঝুঁকিঃ ডনচিয়ান চ্যানেল লুকব্যাক সময়কাল বা চলমান গড়ের প্যারামিটার মিটিং খারাপ হতে পারে বিলম্বিত বা ঘন ঘন সংকেত হতে পারে। এটি কঠোর অপ্টিমাইজেশন এবং সংমিশ্রণ পরীক্ষার মাধ্যমে হ্রাস করা যেতে পারে।
কৌশলটি নিম্নলিখিত উপায়ে উন্নত করা যেতে পারেঃ
প্যারামিটারগুলির সেরা সমন্বয় খুঁজে পেতে ডনচিয়ান চ্যানেল এবং চলমান গড় লুকব্যাক সময়কাল অপ্টিমাইজ করুন।
লাভের হার তুলনা করার জন্য বিভিন্ন স্টপ লস পরীক্ষা করুন।
ম্যাকডি, আরএসআই ইত্যাদির মতো সূচক ব্যবহার করে প্রবেশ সংকেতগুলিতে অতিরিক্ত ফিল্টারগুলি অন্তর্ভুক্ত করুন যাতে স্থিতিশীলতা উন্নত হয়।
অস্থির বাজারে অপ্রয়োজনীয় প্রস্থান এড়াতে প্রস্থান লজিক অপ্টিমাইজ করুন। প্রবণতা মেট্রিকগুলিও প্রস্থানগুলির জন্য বিবেচনা করা যেতে পারে।
এই কৌশলগত কাঠামো ব্যবহার করে নতুন সমন্বয় তৈরি করুন, উদাহরণস্বরূপ অন্যান্য চ্যানেল, ব্যান্ড সূচক ইত্যাদির সাথে।
ধীর চলমান গড় কৌশলটি ডনচিয়ান চ্যানেল এবং সঞ্চালন গড়ের সংকেত উত্পাদনের সংমিশ্রণ ব্যবহার করে একটি পরিষ্কার, সহজেই বোঝার যুক্তি রয়েছে। এই হাইব্রিড পদ্ধতিটি স্থিতিশীলতা এবং জয়ের হারকে উল্লেখযোগ্যভাবে উন্নত করে। 3: 1 মুনাফা থেকে ক্ষতির অনুপাত ভাল পুরষ্কারের সম্ভাবনাও সরবরাহ করে। চরম পদক্ষেপ এবং সংকেত ত্রুটির ক্ষেত্রে ঝুঁকি থাকা সত্ত্বেও, অসংখ্য অপ্টিমাইজেশনের সুযোগ কর্মক্ষমতা উন্নত করতে এবং মূল কৌশলটি প্রসারিত করতে পারে।
/*backtest start: 2023-11-06 00:00:00 end: 2023-12-06 00:00:00 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/ // © Mysteriown //@version=4 strategy("Lagged Donchian Channel + EMA", overlay = true) //tradePeriod = time(timeframe.period,"0000-0000:1234567")?true:false // ------------------------------------------ // // ----------------- Inputs ----------------- // // ------------------------------------------ // period = input(24, title="Channel's periods") Pema = input(200, title="EMA's periods ?") ratio = input(3, title="Ratio TP", type=input.float) loss = input(20, title="Risk Loss ($)") lev = input(5, title="Leverage *...") chan = input(title="Plot channel ?", type=input.bool, defval=false) Bpos = input(title="Plot Bull positions ?", type=input.bool, defval=false) bpos = input(title="Plot Bear positions ?", type=input.bool, defval=false) labels = input(title="Plot labels of bets ?", type=input.bool, defval=true) supp = input(title="Delete last labels ?", type=input.bool, defval=true) // ------------------------------------------ // // ---------- Canal, EMA and arrow ---------- // // ------------------------------------------ // pema = ema(close,Pema) plot(pema, title="EMA", color=color.blue) canalhaut = highest(period)[1] canalbas = lowest(period)[1] bear = close[1] > canalhaut[1] and close < open and high > pema bull = close[1] < canalbas[1] and open < close and low < pema canalhautplot = plot(chan? canalhaut:na, color=color.yellow) canalbasplot = plot(chan? canalbas:na, color=color.yellow) plotshape(bear, title='Bear', style=shape.triangledown, location=location.abovebar, color=color.red, offset=0) plotshape(bull, title='Bull', style=shape.triangleup, location=location.belowbar, color=color.green, offset=0) // ------------------------------------------ // // ------------- Position Short ------------- // // ------------------------------------------ // SlShort = highest(3) BidShort = close[1] TpShort = BidShort-((SlShort-BidShort)*ratio) deltaShort = (SlShort-BidShort)/BidShort betShort = round(loss/(lev*deltaShort)*100)/100 cryptShort = round(betShort*lev/BidShort*1000)/1000 // if bear[1] and labels //and low < low[1] // Lbear = label.new(bar_index, na, text="SHORT\n\nSL: " + tostring(SlShort) + "\n\nBid: " + tostring(BidShort) + "\n\nTP: " + tostring(TpShort) + "\n\nMise: " + tostring(betShort) + "\n\nCryptos: " + tostring(cryptShort), color=color.red, textcolor=color.white, style=label.style_labeldown, yloc=yloc.abovebar) // label.delete(supp ? Lbear[1] : na) var bentry=0.0 var bsl=0.0 var btp=0.0 if bear[1] and low < low[1] bentry:=BidShort bsl:=SlShort btp:=TpShort pbentry = plot(bpos? bentry:na, color=color.orange) plot(bpos? (bentry+btp)/2:na, color=color.gray) pbsl = plot(bpos? bsl:na, color=color.red) pbtp = plot(bpos? btp:na, color=color.green) fill(pbentry,pbsl, color.red, transp=70) fill(pbentry,pbtp, color.green, transp=70) // ------------------------------------------ // // ------------- Position Long -------------- // // ------------------------------------------ // SlLong = lowest(3) BidLong = close[1] TpLong = BidLong + ((BidLong - SlLong) * ratio) deltaBull = (BidLong - SlLong)/BidLong betLong = round(loss/(lev*deltaBull)*100)/100 cryptLong = round(betLong*lev/BidLong*1000)/1000 // if bull[1] and labels //and high > high[1] // Lbull = label.new(bar_index, na, text="LONG\n\nSL: " + tostring(SlLong) + "\n\nBid: " + tostring(BidLong) + "\n\nTP: " + tostring(TpLong) + "\n\nMise: " + tostring(betLong) + "\n\nCryptos: " + tostring(cryptLong), color=color.green, textcolor=color.white, style=label.style_labelup, yloc=yloc.belowbar) // label.delete(supp ? Lbull[1] : na) var Bentry=0.0 var Bsl=0.0 var Btp=0.0 if bull[1] and high > high[1] Bentry:=BidLong Bsl:=SlLong Btp:=TpLong pBentry = plot(Bpos?Bentry:na, color=color.orange) plot(Bpos?(Bentry+Btp)/2:na, color=color.gray) pBsl = plot(Bpos?Bsl:na, color=color.red) pBtp = plot(Bpos?Btp:na, color=color.green) fill(pBentry,pBsl, color.red, transp=70) fill(pBentry,pBtp, color.green, transp=70) // ------------------------------------------ // // --------------- Strategie ---------------- // // ------------------------------------------ // Bear = bear[1] and low < low[1] Bull = bull[1] and high > high[1] if (Bear and strategy.opentrades==0) strategy.order("short", false, 1, limit=BidShort) strategy.exit("exit", "short", limit = TpShort, stop = SlShort) strategy.cancel("short", when = high > SlShort or low < (BidShort+TpShort)/2) strategy.close("short", when=bull) if (Bull and strategy.opentrades==0) strategy.order("long", true, 1, limit=BidLong) strategy.exit("exit", "long", limit = TpLong, stop = SlLong) strategy.cancel("long", when = low < SlLong or high > (BidLong+TpLong)/2) strategy.close("long", when=bear)