এটি দ্বৈত চলমান গড় সূচকগুলির উপর ভিত্তি করে একটি বিপরীত ট্রেডিং কৌশল। বিভিন্ন প্যারামিটার সেটিংসের সাথে চলমান গড়ের দুটি গ্রুপ গণনা করে এবং তাদের দিকনির্দেশের পরিবর্তন অনুযায়ী মূল্য প্রবণতা বিচার করে, দিকনির্দেশের পরিবর্তনের জন্য সংবেদনশীলতা প্যারামিটার সেট করে ট্রেডিং সংকেত তৈরি করা যেতে পারে।
এই কৌশলটির মূল সূচক হ'ল দ্বৈত চলমান গড়। কৌশলটি চলমান গড়ের ধরণ (এসএমএ, ইএমএ, ইত্যাদি), দৈর্ঘ্য এবং মূল্য উত্স (বন্ধ মূল্য, সাধারণ মূল্য ইত্যাদি) নির্বাচন করতে দেয়। চলমান গড়ের দুটি গ্রুপ গণনা করার পরে, প্রতিক্রিয়া পরামিতি সংজ্ঞায়িত করে তাদের দিকনির্দেশগুলি নির্ধারণ করা হয়। যখন দ্রুত লাইনটি ধীর লাইনের উপরে অতিক্রম করে তখন একটি ক্রয় সংকেত উত্পন্ন হয় এবং যখন এটি নীচে অতিক্রম করে তখন একটি বিক্রয় সংকেত উত্পন্ন হয়। প্রতিক্রিয়া পরামিতিটি টার্নিং পয়েন্টগুলি সনাক্ত করতে সংবেদনশীলতা সামঞ্জস্য করতে ব্যবহৃত হয়।
এছাড়াও, কৌশলটি ভুল সংকেত উত্পাদন এড়াতে দিক পরিবর্তন এবং অব্যাহত উত্থান / পতন নির্ধারণের শর্তগুলিও সেট করে। এবং এটি বিভিন্ন রঙে দামের উত্থান এবং পতনকে ভিজ্যুয়ালাইজ করে। যখন দাম বাড়তে থাকে, তখন মুভভজি লাইনটি সবুজ রঙে প্রদর্শিত হয়, এবং যখন দাম কমে যায় তখন লাল রঙে প্রদর্শিত হয়।
দ্বৈত মুভভিং কৌশলটি বিভিন্ন প্যারামিটার সেটিংসের সাথে দ্রুত এবং ধীর লাইনগুলিকে একত্রিত করে, যা কার্যকরভাবে ট্রেডিং বাজারে গোলমাল ফিল্টার করতে পারে এবং শক্তিশালী প্রবণতা সনাক্ত করতে পারে। একক মুভিং কৌশলটির তুলনায়, এটি ভুল সংকেত হ্রাস করে এবং প্রবণতা আরও স্বতন্ত্র হওয়ার সময় বাজারে প্রবেশের অনুমতি দেয়, যার ফলে উচ্চতর জয়ের হার পাওয়া যায়।
প্রতিক্রিয়া পরামিতি কৌশলটি নমনীয় এবং বিভিন্ন চক্র এবং জাতের সাথে খাপ খাইয়ে নিতে সক্ষম করে। কৌশলগত প্রক্রিয়াটি স্বজ্ঞাত এবং সহজ, সহজেই বোঝা এবং অনুকূলিতকরণ করা যায়।
এই কৌশলটির সবচেয়ে বড় ঝুঁকি হ'ল টার্নিং পয়েন্টটি মিস করা এবং অর্থ হারাতে বা বিপরীত অবস্থান নেওয়া। এটি প্রতিক্রিয়া পরামিতি সেটিংয়ের সাথে সম্পর্কিত। যদি প্রতিক্রিয়াটি খুব ছোট হয় তবে ভুল সংকেতগুলি ঘটতে পারে। যদি প্রতিক্রিয়াটি খুব বড় হয় তবে এটি আরও ভাল এন্ট্রি পয়েন্টগুলি মিস করতে পারে।
আরেকটি ঝুঁকি হ'ল ক্ষয়ক্ষতি কার্যকরভাবে নিয়ন্ত্রণ করতে অক্ষমতা। যখন দামগুলি হিংস্রভাবে ওঠানামা করে, তখন এটি দ্রুত ক্ষতি বন্ধ করতে পারে না, যার ফলে ক্ষতি বৃদ্ধি পায়। এর জন্য ঝুঁকি নিয়ন্ত্রণের জন্য স্টপ-লস কৌশল ব্যবহারের প্রয়োজন।
এই কৌশলটির মূল অপ্টিমাইজেশান দিকগুলি প্রতিক্রিয়া পরামিতি, প্রকার এবং চলমান গড়ের দৈর্ঘ্যের নির্বাচনে মনোনিবেশ করে। প্রতিক্রিয়া যথাযথভাবে বাড়িয়ে ভুল সংকেতগুলি হ্রাস করতে পারে। সংকেত উত্পাদন করার জন্য সেরা সংমিশ্রণটি নির্বাচন করতে বিভিন্ন চক্র এবং জাত অনুসারে চলমান গড় পরামিতিগুলি পরীক্ষা করা যেতে পারে।
এছাড়াও, RSI এবং KD এর মতো অন্যান্য সহায়ক সূচকগুলির সাথে ট্রেডিং সংকেতগুলি নিশ্চিত করাও একটি অপ্টিমাইজেশান ধারণা। অথবা স্বয়ংক্রিয়ভাবে পরামিতিগুলি অপ্টিমাইজ করার জন্য মেশিন লার্নিং পদ্ধতি ব্যবহার করুন।
সামগ্রিকভাবে, এই কৌশলটি তুলনামূলকভাবে সহজ এবং ব্যবহারিক। দ্বৈত চলমান গড়ের সাথে ফিল্টারিং এবং ট্রেডিং সংকেত উত্পাদন করে, এটি কার্যকরভাবে প্রবণতা বিপরীতগুলি সনাক্ত করতে পারে এবং এটি একটি সাধারণ প্রবণতা অনুসরণকারী কৌশল। প্যারামিটার পোর্টফোলিওটি অনুকূলিত করার পরে, প্রবণতা ক্যাপচার এবং বাজারের বিরুদ্ধে অবস্থান ধরে রাখার ক্ষমতা উন্নত হবে। এটি স্টপ লস এবং অবস্থান পরিচালনার প্রক্রিয়াগুলির সাথে ব্যবহার করা আরও ভাল কাজ করে।
/*backtest start: 2023-11-03 00:00:00 end: 2023-12-03 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(shorttitle="MA_color strategy", title="Moving Average Color", overlay=true) // === INPUTS ma_type = input(defval="HullMA", title="MA Type: ", options=["SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "ZEMA", "TMA", "SSMA"]) ma_len = input(defval=32, title="MA Lenght", minval=1) ma_src = input(close, title="MA Source") reaction = input(defval=2, title="MA Reaction", minval=1) // SuperSmoother filter // © 2013 John F. Ehlers variant_supersmoother(src,len) => a1 = exp(-1.414*3.14159 / len) b1 = 2*a1*cos(1.414*3.14159 / len) c2 = b1 c3 = (-a1)*a1 c1 = 1 - c2 - c3 v9 = 0.0 v9 := c1*(src + nz(src[1])) / 2 + c2*nz(v9[1]) + c3*nz(v9[2]) v9 variant_smoothed(src,len) => v5 = 0.0 v5 := na(v5[1]) ? sma(src, len) : (v5[1] * (len - 1) + src) / len v5 variant_zerolagema(src,len) => ema1 = ema(src, len) ema2 = ema(ema1, len) v10 = ema1+(ema1-ema2) v10 variant_doubleema(src,len) => v2 = ema(src, len) v6 = 2 * v2 - ema(v2, len) v6 variant_tripleema(src,len) => v2 = ema(src, len) v7 = 3 * (v2 - ema(v2, len)) + ema(ema(v2, len), len) v7 variant(type, src, len) => type=="EMA" ? ema(src,len) : type=="WMA" ? wma(src,len): type=="VWMA" ? vwma(src,len) : type=="SMMA" ? variant_smoothed(src,len) : type=="DEMA" ? variant_doubleema(src,len): type=="TEMA" ? variant_tripleema(src,len): type=="HullMA"? wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len))) : type=="SSMA" ? variant_supersmoother(src,len) : type=="ZEMA" ? variant_zerolagema(src,len) : type=="TMA" ? sma(sma(src,len),len) : sma(src,len) // === Moving Average ma_series = variant(ma_type,ma_src,ma_len) direction = 0 direction := rising(ma_series,reaction) ? 1 : falling(ma_series,reaction) ? -1 : nz(direction[1]) change_direction= change(direction,1) change_direction1= change(direction,1) pcol = direction>0 ? lime : direction<0 ? red : na plot(ma_series, color=pcol,style=line,join=true,linewidth=3,transp=10,title="MA PLOT") /////// Alerts /////// alertcondition(change_direction,title="Change Direction MA",message="Change Direction MA") longCondition = direction>0 shortCondition = direction<0 if (longCondition) strategy.entry("BUY", strategy.long) if (shortCondition) strategy.entry("SELL", strategy.short)