
মালা অ্যাডাপ্টিভ মুভিং এভারেজ স্ট্র্যাটেজি (Mala Adaptive Moving Average Strategy) হল একটি পরিমাণগত ট্রেডিং কৌশল যা জন এহলার্সের MESA অ্যাডাপ্টিভ মুভিং এভারেজের উপর ভিত্তি করে তৈরি। এই কৌশলটি সিন্ড্রোনাল তরঙ্গ ব্যবহার করে ট্রেডিং সিদ্ধান্ত নেওয়ার জন্য, কম সময়ে কিনতে, উচ্চ সময়ে বিক্রি করতে, সিন্ড্রোনাল তরঙ্গকে বিভিন্ন জাত এবং বাজারের পরিবেশের সাথে মানিয়ে নিতে সক্ষম করে।
স্বনির্ধারিত মুভিং এভারেজ কৌশলটি ট্রেডিং সিগন্যাল উত্পন্ন করতে একটি সিগন্যাল ওয়েভ জেনারেটর ব্যবহার করে। সিগন্যাল ওয়েভটি একটি ঘোরানো ভেক্টর দ্বারা নির্ধারিত হয় (যা ফ্যাক্টর বলা হয়) যা কিলার অক্ষের উপর ছায়া ফেলে। ভেক্টরটি 360 ডিগ্রি ঘুরলে, একটি চক্র সম্পন্ন হয়। ভেক্টরটি যখন একটি কোণ দিয়ে যায় তখন একটি কেনার সংকেত উত্পন্ন করে এবং অন্য কোণ দিয়ে বিক্রয় সংকেত উত্পন্ন করে। এইভাবে, ট্রেডিং সিদ্ধান্তগুলি ফ্রিকোয়েন্সি ডোমেনের কোণ দ্বারা সংজ্ঞায়িত হয়, সময়ের ডোমেনের তরঙ্গের বৈশিষ্ট্য নয়, কৌশলটি আরও রুক্ষ করতে পারে, বিভিন্ন জাত এবং বাজারের পরিবেশের সাথে খাপ খাইয়ে নিতে পারে।
বিশেষত, এই কৌশলটি প্রথমে দামের মসৃণতা এবং প্রবণতা-বিরোধী চিকিত্সা করে, তারপরে দুটি অনুপাত গণনা করেঃ সম-পর্বের অনুপাত I এবং ধ্রুব-পর্বের অনুপাত Q। এই দুটি অনুপাত ধাপে সমান্তরাল দ্বারা superimposed এবং প্রসারিত হয়, এবং চূড়ান্ত Re এবং Im পাওয়া যায়। Re এবং Im ধ্রুব-পর্বের ফ্রিকোয়েন্সি তথ্যকে প্রতিফলিত করে, যা একটি চক্রের সময়কালের সময়কালের সময়কালের সময়কালের সময়কালের সময়কালের সময়কালের সময়কালের সময়কালের সময়কালের সময়কালের সময়কালের সময়কাল অনুসারে একটি মসৃণ চক্র নির্ধারণ করে।
একটি অভিযোজিত চলমান গড় কৌশল নিম্নলিখিত সুবিধাগুলি রয়েছেঃ
সিনসোনাল ও ফেজ ওয়েভকে ট্রেডিং সিগন্যাল হিসেবে ব্যবহার করা হয়, যা কৌশলটিকে আরও শক্তিশালী করে তোলে এবং টাইম জোনের তরঙ্গের প্রভাব থেকে মুক্ত করে।
চক্র এবং প্যারামিটারগুলি বাজারের পরিবর্তনের সাথে সামঞ্জস্য করতে গতিশীলভাবে সামঞ্জস্য করতে পারে এবং এটির একটি শক্তিশালী স্ব-অনুকূলিতকরণ ক্ষমতা রয়েছে।
MAMA এবং FAMA বক্ররেখা শুধুমাত্র মূল্যের নিজস্ব বৈশিষ্ট্য উপর নির্ভর করে, কোন বিলম্ব নেই, সময়মত প্রবণতা রূপান্তর ক্যাপচার করতে পারে।
প্যারামিটার সেটিং এর মাধ্যমে বিভিন্ন স্টাইলের ট্রেডারদের জন্য কৌশলটির সংবেদনশীলতা সামঞ্জস্য করা যায়।
কৌশলগত লজিক পরিষ্কার এবং সহজ, সহজে বোঝা যায় এবং পরিবর্তন করা যায়, যা গবেষণা এবং শিক্ষার জন্য উপযুক্ত।
এছাড়াও, একটি অভিযোজিত চলমান গড় কৌশল নিম্নলিখিত ঝুঁকি নিয়ে আসেঃ
সিন্ড্রোমিক কার্ভের পর্যায় এবং ধাপের উপর নির্ভরশীলতার কারণে, যখন দামের অস্বাভাবিক বিকৃতি ঘটে তখন একটি ভুল সংকেত উত্পন্ন হয়।
চক্র বিচার করার সময় একটি কঠোর সীমানা সেট করা হয়েছে, যা চক্র পরিবর্তনকে মসৃণ করে না।
পজিশন এবং পিরিয়ডের সেলুলার ইফেক্টের কারণে, কার্ভটি মূল পয়েন্টের কাছাকাছি কাঁপতে পারে এবং সেরা এন্ট্রি এবং এক্সট মিস করতে পারে।
যখন বাজার অস্থির হয়, তখন প্যারামিটার এবং বক্ররেখার স্বনির্ধারণ ক্ষমতা হ্রাস পায়।
প্রযুক্তিগত সূচক হিসাবে, কৌশলটি গুরুত্বপূর্ণ প্রযুক্তিগত অবস্থানে মিথ্যা বিরতি এবং ভুল সংকেত তৈরি করতে পারে।
এই ঝুঁকিগুলি আরও মসৃণ প্যারামিটার সেট করে, অন্যান্য সূচকগুলির সাথে মিলিতভাবে ফিল্টার করে এবং পজিশনের আকারকে সামঞ্জস্য করে প্রশমিত করা যায়।
একটি অভিযোজিত চলমান গড় কৌশল নিম্নলিখিত দিক থেকে অপ্টিমাইজ করা যেতে পারেঃ
চক্র এবং প্যারামিটারগুলির গণনা পদ্ধতির উন্নতি করা যাতে তাদের পরিবর্তনগুলি আরও মসৃণ এবং প্রাকৃতিক হয়। উদাহরণস্বরূপ, দামের আরও ভাল মডেলিংয়ের জন্য পরিসংখ্যানগত পদ্ধতি প্রবর্তন করা যেতে পারে।
ত্বরণ হার, ট্র্যাফিকের পরিমাণ ইত্যাদির মতো সূচকগুলির সাথে সংযুক্ত করে সংকেতগুলি ফিল্টার করা হয়, যা নির্ভুলতার উন্নতি করে। এটি সংকেতের নির্ভরযোগ্যতার মৌলিক বোঝার সাথে সংযুক্ত করা যেতে পারে।
প্যারামিটার সেটিং এবং স্লাইড পয়েন্ট কন্ট্রোল অপ্টিমাইজ করা, লেনদেনের খরচ কমানো এবং সিস্টেমের স্থায়িত্ব বাড়ানো।
মেশিন লার্নিং এবং জেনেটিক্যাল অ্যালগরিদমের মত পদ্ধতির মাধ্যমে গতিশীল অপ্টিমাইজেশান প্যারামিটারগুলিকে চালু করা, যাতে সিস্টেমের প্যারামিটারগুলি ক্রমাগত বিকশিত এবং আপডেট হয়।
বিভিন্ন এন্ট্রি এবং এক্সট সেট করুন, প্রবণতা এবং বিপরীত সিস্টেমের সাথে মিলিত হয়ে পোর্টফোলিও তৈরি করুন এবং টেকসই লাভজনকতা বাড়ান।
স্বনির্ধারিত চলমান গড় কৌশলটি সিন্ড্রোনাল তরঙ্গ বিশ্লেষণ ব্যবহার করে ট্রেডিং সংকেত উত্পন্ন করে, গতিশীল নিয়ন্ত্রণ প্যারামিটারগুলির মাধ্যমে সিস্টেমকে স্বয়ংক্রিয়ভাবে বাজার পরিবেশের পরিবর্তনের সাথে খাপ খাইয়ে নিতে সক্ষম করে, এটির শক্তিশালী রুক্ষতা এবং বিস্তৃত প্রয়োগযোগ্যতা রয়েছে। অন্যান্য স্বনির্ধারিত চলমান গড় কৌশলগুলির তুলনায় এটির উচ্চতর বাস্তবতা এবং স্থিতিশীলতা রয়েছে। তবে কৌশলটি একটি প্রযুক্তিগত কৌশল হিসাবে, মূল প্রযুক্তির জায়গায় ত্রুটিযুক্ত সংকেতও উপস্থিত হয়, যা অন্যান্য সহায়ক সরঞ্জামগুলি ফিল্টার অপ্টিমাইজেশনের প্রয়োজন। ক্রমাগত উন্নতি করে, কৌশলটি একটি প্রস্তাবিত স্বনির্ধারিত ট্রেডিং সিস্টেম হওয়ার সম্ভাবনা রয়েছে।
/*backtest
start: 2022-11-30 00:00:00
end: 2023-12-06 00:00:00
period: 1d
basePeriod: 1h
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/
// © dongyun
//@version=4
strategy("自适应移动平均的MESA系统", overlay=true)
fastlimit = input(0.5,'')
slowlimit = input(0.05,'')
smooth = 0.0
detrender = 0.0
I1 = 0.0
Q1 = 0.0
JI = 0.0
JQ = 0.0
I2 = 0.0
Q2 = 0.0
Re = 0.0
Im = 0.0
period = 0.0
smoothperiod = 0.0
phase = 0.0
deltaphase = 0.0
alpha = 0.0
MAMA = 0.0
FAMA = 0.0
price = 0.0
price := (high + low)/2
PI = 2 * asin(1)
if (bar_index > 5)
smooth := (4*price + 3*price[1] + 2*price[2] + price[3])/10
detrender := (.0962*smooth + .5769*nz(smooth[2]) - .5769*nz(smooth[4]) - .0962*nz(smooth[6]))*(.075*nz(period[1]) + .54)
// compute InPhase and Quadrature components
Q1 := (.0962*detrender + .5769*nz(detrender[2]) - .5769*nz(detrender[4]) - .0962*nz(detrender[6]))*(.075*nz(period[1]) + .54)
I1 := nz(detrender[3])
// advance the pulse of i1 and q1 by 90 degrees
JI := (.0962*I1 + .5769*nz(I1[2]) - .5769*nz(I1[4]) - .0962*nz(I1[6]))*(.075*nz(period[1]) + .54)
JQ := (.0962*Q1 + .5769*nz(Q1[2]) - .5769*nz(Q1[4]) - .0962*nz(Q1[6]))*(.075*nz(period[1]) + .54)
//phase addition for 3-bar averaging
I2 := I1 - JQ
Q2 := Q1 + JI
//smooth the i and q components before applying
I2 := .2*I2 + .8*nz(I2[1])
Q2 := .2*Q2 + .8*nz(Q2[1])
// hymodyne discriminator
Re := I2*I2[1] + Q2*nz(Q2[1])
Im := I2*Q2[1] + Q2*nz(I2[1])
Re := .2*Re + .8*nz(Re[1])
Im := .2*Im + .8*nz(Im[1])
if (Im != 0 and Re != 0)
period := 2 * PI/atan(Im/Re)
if (period > 1.5 * nz(period[1]))
period := 1.5*nz(period[1])
if (period < .67*nz(period[1]))
period := .67*nz(period[1])
if (period < 6)
period := 6
if (period > 50)
period := 50
period := .2*period + .8*nz(period[1])
smoothperiod := .33*period + .67*nz(smoothperiod[1])
if (I1 != 0)
phase := (180/PI) * atan(Q1/I1)
deltaphase := nz(phase[1]) - phase
if (deltaphase < 1)
deltaphase := 1
alpha := fastlimit/deltaphase
if(alpha < slowlimit)
alpha := slowlimit
MAMA := alpha*price + (1 - alpha)*nz(MAMA[1])
FAMA := .5*alpha*MAMA + (1 - .5*alpha)*nz(FAMA[1])
if (FAMA < MAMA)
strategy.entry("Long", strategy.long)
else
if (FAMA > MAMA)
strategy.entry("Short", strategy.short)