در معاملات فارکس و تحلیل تکنیکال، تشخیص دقیق کندل یا بار جدید اهمیت بسیار زیادی دارد. بسیاری از معاملهگران برای این کار از زمان استفاده میکنند، اما روش دقیقتر، سریعتر و سبکتر استفاده از تعداد بارها (Bars Count) است. در این مقاله به شما آموزش میدهیم چگونه با استفاده از اکسپرت در متاتریدر ۵، بارهای جدید را به راحتی تشخیص دهید.
چرا استفاده از تعداد بارها بهتر از زمان است؟
در روش سنتی، معاملهگران با بررسی زمان بسته شدن کندلها، سعی میکنند بار جدید را تشخیص دهند. اما این روش چند مشکل دارد:
- نیاز به محاسبات اضافی برای مقایسه زمانها
- سنگین شدن پردازش در چارتهای با تایمفریم پایین
- احتمال خطا در تشخیص دقیق بار جدید
اما با استفاده از تعداد بارها (Bars Count)، شما میتوانید به سادگی و سرعت بالا، هر بار جدید را تشخیص دهید و از آن در اکسپرت خود استفاده کنید.
مراحل تشخیص بار جدید با شمارش بارها
برای استفاده از این روش، مراحل زیر را دنبال کنید:
۱. تعریف متغیرها با نوع صحیح (Integer)
ابتدا دو متغیر از نوع integer تعریف میکنیم تا تعداد بارها را ذخیره کنیم:
int BarsTotal_OnInt; // تعداد بارها در زمان مقداردهی اولیه
int BarsTotal_OnTick; // تعداد بارها در هر تیک
۲. مقداردهی اولیه تعداد بارها در زمان راهاندازی اکسپرت
در قسمت OnInit() یا همان زمان شروع اکسپرت، تعداد کل بارها را به متغیر BarsTotal_OnInt اختصاص دهید:
BarsTotal_OnInt = iBars(_Symbol, _Period);
این متغیر نمایانگر تعداد بارهای موجود در چارت هنگام راهاندازی اکسپرت است.
۳. بروزرسانی تعداد بارها در هر تیک
در تابع OnTick()، تعداد بارها را با استفاده از تابع iBars(); در متغیر BarsTotal_OnTick بروزرسانی میکنیم:
BarsTotal_OnTick = iBars(_Symbol, _Period);
با هر تیک جدید، این متغیر بهروز میشود و امکان تشخیص بار جدید فراهم میشود.
۴. تشخیص کندل جدید و استفاده از آلارمها
با مقایسه دو متغیر BarsTotal_OnInt و BarsTotal_OnTick میتوانیم متوجه شویم که بار جدید تشکیل شده است:
if(BarsTotal_OnTick > BarsTotal_OnInt)
{
Alert("کندل جدید تشکیل شد!"); // ایجاد هشدار
BarsTotal_OnInt = BarsTotal_OnTick; // بروزرسانی شمارنده
}

ین روش ساده، سبک و دقیق است و میتوان آن را در اکسپرتها و اندیکاتورها برای استراتژیهای معاملاتی خودکار استفاده کرد.
استفاده از تعداد بارها برای تشخیص کندل جدید در متاتریدر ۵:
- سریعتر و سبکتر از روش زمان است
- دقت بالاتری در تشخیص بار جدید دارد
- امکان استفاده در اکسپرتها و استراتژیهای اتوماتیک را فراهم میکند
- با چند خط کد ساده قابل اجرا است
با این روش، دیگر نیازی به مقایسه زمانها ندارید و میتوانید معاملات خود را هوشمندانهتر و سریعتر مدیریت کنید.
int BarsTotal_OnInt;
int BarsTotal_OnTick;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
BarsTotal_OnInt = iBars(NULL,PERIOD_CURRENT); // Asign the total bars at initialization
return(INIT_SUCCEEDED);
}
void OnTick() // OnTick Function
{
BarsTotal_OnTick = iBars(NULL,PERIOD_CURRENT); // Stores the latest amount
if(BarsTotal_OnTick > BarsTotal_OnInt) // New bar has arrived
{
BarsTotal_OnInt = BarsTotal_OnTick; // Updates the history.
Alert("New Bar has arrived");
Comment("Bars Count in history -: ", BarsTotal_OnInt, "\n", "Bars Count in Live -: ", BarsTotal_OnTick);
// Your Code goes here. --------------------------
// You can update a "flag" / variable to use it on later too.
}
}





