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