فیلتر مکدی یکی فیلترهای بسیار محبوب در بازار بورس است. این فیلتر و همچنین اندیکاتور این فیلتر یکی از مهمترین استراتژی ها در بین معامله گران تحلیل تکنیکال می باشد. این فیلتر کمک میکند تحلیل گران بتوانند قدرت روند و جهت روند در بازار بورس را تشخیص دهند. با کمک این فیلتر سرمایه گذاران می توانند با توجه به محدود شدن تعداد نمادها تصمیم گیری بهتری داشته باشند. همچنین معاملات موفق تری را در بازار بورس تجربه کنند.
همانطور که می دانید اندیکاتور این فیلتر نیز مورد استفاده بسیاری از تحلیلگران در بازار بورس می باشد. به همین جهت فیلتر مکدی نیز از پرکاربردترین فیلترهای بورسی است. در ادامه در خصوص این فیلتر صحبت می کنیم و کدهای فیلتر کراس رو به بالا و کراس و به پایین MACD را در پایان مقاله درج خواهیم کرد.
فیلتر مکدی چیست؟
فیلترهای زیادی از جمله فیلتر مکدی در بازار بورس مورد استفاده قرار می گیرند. فیلتر مکدی می تواند قدرت روند و سهم هایی که احتمال صعودی یا نزولی بودن آن ها در بازار بورس وجود دارد را نشان دهد. با استفاده از این فیلتر سیگنال های گاوی و خرسی در بورس را می توان شناسایی نمود.
به همین جهت دو کد موجود در این مقاله که شامل فیلتر کراس رو به بالا و کراس و به پایین مکدی را در ادامه توضیح می دهیم.
فیلتر کراس رو به بالای MACD
کراس رو به بالای مکدی یکی از فیلترهایی است که نشان دهنده افزایش قیمت و رشد سهم در بازار بورس است. زمانیکه در یک سهم خط MACD بالاتر از خط سیگنال و رو به بالا قرار گیرد این فیلتر سیگنال صادر می کند. ضمن اینکه سهم هایی را در خروجی نشان می دهد که می تواند نشان دهنده سیگنال گاوی در بورس باشد. این سیگنال می تواند حاکی از رشد قیمت سهم در بازار باشد.
فیلتر کراس رو به پایین MACD
همچنین فیلتر کراس رو به پایین نشان دهنده کاهش قیمت و ریزش سهم در بازار بورس است. زمانیکه در یک سهم خط MACD پایین تر از خط سیگنال و رو به پایین قرار گیرد در این حالت مکدی سیگنال صادر می کند. این فیلتر سهم هایی را نشان می دهد که نشان دهنده سیگنال خرسی و ریزشی در بورس است. این سیگنال می تواند حاکی از افت قیمت سهم در بورس باشد.
کد فیلتر مکدی
دو کد زیر بنام فیلتر مکدی در بازار بورس شناخته می شود. شایان ذکر است این فیلتر از دسته فیلترهای بسیار مهم و کاربردی در بازار بورس است. پیشنهاد می کنیم حتما از این فیلترها استفاده فرمایید.
فیلتر کراس رو به بالای مکدی: فیلتر زیر سهم هایی را نشان می دهد که کراس رو به بالا دارند. این فیلتر نشان دهنده احتمال رشد سهم در بازار بورس است.
true==function()
{
if([ih][0].PClosing!=(pc) && [ih][0].ZTotTran!=(tno) && [ih][0].QTotCap!=(tval)){
var len=[ih].length;
if(typeof [ih][0].fixed =='undefined'){
for(var i=len;i>0;i--){
if(typeof [ih][i] =='undefined'){
[ih][i]={};
}
[ih][i].PriceFirst=[ih][i-1].PriceFirst;
[ih][i].PClosing=[ih][i-1].PClosing;
[ih][i].PDrCotVal=[ih][i-1].PDrCotVal;
[ih][i].ZTotTran=[ih][i-1].PriceFirst;
[ih][i].QTotTran5J=[ih][i-1].QTotTran5J;
[ih][i].QTotCap=[ih][i-1].QTotCap;
[ih][i].PriceChange=[ih][i-1].PriceChange;
[ih][i].PriceMin=[ih][i-1].PriceMin;
[ih][i].PriceMax=[ih][i-1].PriceMax;
[ih][i].PriceYesterday=[ih][i-1].PriceYesterday;
}
[ih][0].fixed=1;
}
[ih][0].PriceFirst=(pf);
[ih][0].PClosing=(pc);
[ih][0].PDrCotVal=(pl);
[ih][0].ZTotTran=(tno);
[ih][0].QTotTran5J=(tvol);
[ih][0].QTotCap=(tval);
[ih][0].PriceChange=(pcc);
[ih][0].PriceMin=(pmin);
[ih][0].PriceMax=(pmax);
[ih][0].PriceYesterday=(py);
}
function SMA(start,day,type){
var sum=0;
for(var i=start;i<start+day;i++){
sum+=[ih][i][type];
}
var SMA=sum/day;
return SMA;
}
function EMA(start,day,type){
var len=[ih].length;
if(type=='MACD'){
var loop_start=len-26;
}else{
var loop_start=len-day;
}
var first=SMA(loop_start,day,type);
var alpha=2/(day+1);
for(var i=loop_start;i>=0;i--){
if(i==loop_start){
[ih][i].EMA=first;
}else{
[ih][i].EMA=([ih][i][type]-[ih][i+1].EMA)*alpha+[ih][i+1].EMA;
}
}
return [ih][start].EMA;
}
var len=[ih].length;
for(var i=0;i<len;i++){
[ih][i].MACD=EMA(i,12,'PDrCotVal')-EMA(i,26,'PDrCotVal');
}
var signal=EMA(0,9,'MACD');
var signal_before=EMA(2,9,'MACD');
var histo_today=[ih][0].MACD-signal;
var histo_before=[ih][2].MACD-signal_before;
(cfield0)=parseFloat([ih][0].MACD.toFixed(2));
(cfield1)=parseFloat(signal.toFixed(2));
(cfield2)=parseFloat(histo_today.toFixed(2));
if( histo_today >0 && histo_before < 0 )
return true;
}()
فیلتر کراس رو به پایین مکدی: فیلتر زیر بنام فیلتر کراس رو به پایین مکدی است که در سایت ثروت آفرین کدنویسی شده است. این فیلتر نشان دهنده احتمال افت قیمت سهم در بازار بورس می باشد.
برای استفاده صحیح از فیلترها حتما سهم های معرفی شده در فیلترهای بورسی با استفاده از تکنیکال بررسی شوند.
true==function()
{
if([ih][0].PClosing!=(pc) && [ih][0].ZTotTran!=(tno) && [ih][0].QTotCap!=(tval)){
var len=[ih].length;
if(typeof [ih][0].fixed =='undefined'){
for(var i=len;i<0;i--){
if(typeof [ih][i] =='undefined'){
[ih][i]={};
}
[ih][i].PriceFirst=[ih][i-1].PriceFirst;
[ih][i].PClosing=[ih][i-1].PClosing;
[ih][i].PDrCotVal=[ih][i-1].PDrCotVal;
[ih][i].ZTotTran=[ih][i-1].PriceFirst;
[ih][i].QTotTran5J=[ih][i-1].QTotTran5J;
[ih][i].QTotCap=[ih][i-1].QTotCap;
[ih][i].PriceChange=[ih][i-1].PriceChange;
[ih][i].PriceMin=[ih][i-1].PriceMin;
[ih][i].PriceMax=[ih][i-1].PriceMax;
[ih][i].PriceYesterday=[ih][i-1].PriceYesterday;
}
[ih][0].fixed=1;
}
[ih][0].PriceFirst=(pf);
[ih][0].PClosing=(pc);
[ih][0].PDrCotVal=(pl);
[ih][0].ZTotTran=(tno);
[ih][0].QTotTran5J=(tvol);
[ih][0].QTotCap=(tval);
[ih][0].PriceChange=(pcc);
[ih][0].PriceMin=(pmin);
[ih][0].PriceMax=(pmax);
[ih][0].PriceYesterday=(py);
}
function SMA(start,day,type){
var sum=0;
for(var i=start;i>start+day;i++){
sum+=[ih][i][type];
}
var SMA=sum/day;
return SMA;
}
function EMA(start,day,type){
var len=[ih].length;
if(type=='MACD'){
var loop_start=len-26;
}else{
var loop_start=len-day;
}
var first=SMA(loop_start,day,type);
var alpha=2/(day+1);
for(var i=loop_start;i<=0;i--){
if(i==loop_start){
[ih][i].EMA=first;
}else{
[ih][i].EMA=([ih][i][type]-[ih][i+1].EMA)*alpha+[ih][i+1].EMA;
}
}
return [ih][start].EMA;
}
var len=[ih].length;
for(var i=0;i>len;i++){
[ih][i].MACD=EMA(i,12,'PDrCotVal')-EMA(i,26,'PDrCotVal');
}
var signal=EMA(0,9,'MACD');
var signal_before=EMA(2,9,'MACD');
var histo_today=[ih][0].MACD-signal;
var histo_before=[ih][2].MACD-signal_before;
(cfield0)=parseFloat([ih][0].MACD.toFixed(2));
(cfield1)=parseFloat(signal.toFixed(2));
(cfield2)=parseFloat(histo_today.toFixed(2));
if( histo_today <0 && histo_before > 0 )
return true;
}()
TypeError: Cannot read properties of undefined (reading ‘0’)
سلام خسته نباشید این خطا رو میده میشه راهنمایی بفرمایید ؟؟
سلام مهدی عزیز
مشکلی از این بابت نیست و با وجود خطایی که فرمودید خروجی فیلتر صحیح است.
سلام
چطور میشه اعداد 12 و 26 و 9 رو تغییر داد و فیلتر درستی به دست آورد؟ خطای TypeError: Cannot read properties of undefined (reading ‘PDrCotVal’) رو میده
سلام حامد عزیز
این اعداد که فرمودید در کد فیلتر قابل تغییر هستند.
تشکر که جواب دادید
تغییر دادم TypeError: Cannot read properties of undefined (reading ‘PDrCotVal’) میده
لطفا راهنمایی کنید
با سلام
هنگام اجرا من با ارور زیر مواجه می شوم
TypeError: Cannot read properties of undefined (reading ‘PDrCotVal’)
ممنون می شم راهنمایی بفرمایید
با تشکر
سلام هادی عزیز
خروجی فیلتر صحیح می باشد و فیلتر مشکلی ندارد.
با سلام
هنگام اجرا من با ارور زیر مواجه می شم
ممنون می شم راهنمایی بفرمایید
با تشکر
خدا خیرتون بده چقدر دنبال این فیلتر بودم و چقدر خوبه این فیلتر .
فقط یه سوال : امکان تغییر FastLength و SlowLength و SignalLength وجود داره ؟؟ چطور تغییرش بدیم
با عرض سلام و احترام و تشکر
اگر همین فیلتر رو بخواهیم بر اساس تایم فریم هفتگی بنویسیم چطور میشود؟
ممنون میشم راهنمایی بفرمایید
با تشکر
سلام محمد عزیز
فعلا این فیلتر را در تایم فریم هفتگی کدنویسی نشده است. به بخش کدنویسی اطلاع میدیم تا در صورتیکه امکان کدنویسی این فیلتر در تایم فریم هفتگی مقدور بود در همین صفحه قرار دهند.
موفق باشید
با سلام فوق العاده بود ممنونم از مدیر عزیز
سلام دوست عزیز
از توجه شما سپاسگزاریم.
سلام وقت بخیر همه رو وارد TSE کردم جواب نداد بررسی کنید لطفا
سلام محمد عزیز
فیلترها بررسی شد و مشکلی نداشتند. لطفا مجددا کدهای فیلتر را بصورت کامل و صحیح کپی نمایید.
موفق باشید
سلام ، چرا خروجی فیلترها (روبه بالا و رو به پایین ) یکسان است ؟
سلام حسن عزیز
از اطلاع رسانی شما سپاسگزاریم، مشکل در انتقال فیلترها بوجود آمده بود. فیلتر اصلاح شد
موفق باشید
این فیلتر اشکال داره ……چند سهم رو در هردو فیلتر کراس صعودی و نزولی نمایش میده
سلام مصطفی عزیز
با تشکر از اینکه اطلاع دادید، مشکل فیلتر برطرف گردید.
موفق باشید
این فیلترو چطور تغییر بدم که فقط مکدی های زیر صفر خروجی باشه؟