Darvas Box Indicator For MT5
Table Of Contents:
- Darvas Box Indicator For MT5
- การติดตั้ง Darvas Box Indicator For MT5
- พารามิเตอร์ของ Darvas Box Indicator For MT5
- บัฟเฟอร์ของ Darvas Box Indicator For MT5
- ส่วนหลักของรหัส
Darvas Box Indicator For MT5 ขึ้นอยู่กับการทำงานของ Nicolas Darvas กล่องดาร์วาสใช้เพื่อแลกเปลี่ยนทิศทางเสียงสูงและต่ำใหม่ กล่องทำให้ง่ายต่อการตรวจสอบการฝ่าวงล้อมดังกล่าว ตัวบ่งชี้นี้ดึงช่องตามการคำนวณกล่อง darvas ขอบเขตด้านบนของช่องจะถูกวาดด้วยสีฟ้าในขณะที่ขอบเขตด้านล่างของช่องจะถูกวาดด้วยสีม่วง
การติดตั้ง Darvas Box Indicator For MT5
หลังจากคุณดาวน์โหลดตัวบ่งชี้ผ่านแบบฟอร์มด้านบนคุณจะต้องทำการแตกไฟล์ zip จากนั้นคุณต้องคัดลอกไฟล์ darvasboxes.mq5 ลงในโฟลเดอร์ MQL5Indicators ของการติดตั้ง MT5 ของคุณ หลังจากนั้นโปรดรีสตาร์ท MT5 จากนั้นคุณจะเห็นตัวบ่งชี้ในรายการตัวบ่งชี้
พารามิเตอร์ของ Darvas Box Indicator For MT5
กระบวนการ Darvas Box Indicator For MT5 มีพารามิเตอร์ 2 เพื่อกำหนดค่า
input bool symmetry=false; input int Shift=0; // Horizontal shift of the indicator in bars
บัฟเฟอร์ของ Darvas Box Indicator For MT5
Darvas Box Indicator For MT5 ให้บัฟเฟอร์ 2
SetIndexBuffer(0,UpperBuffer,INDICATOR_DATA); SetIndexBuffer(1,LowerBuffer,INDICATOR_DATA);
ส่วนหลักของรหัส
int OnCalculate(const int rates_total, // number of bars in history at the current tick const int prev_calculated,// number of bars calculated at previous call const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //---- checking the number of bars to be enough for the calculation if(rates_total lt start) return(0); //---- indexing elements in arrays as timeseries ArraySetAsSeries(high,true); ArraySetAsSeries(low,true); //---- declaration of integer variables int limit,bar; //---- declaration of static variables static int state,STATE; static double box_top,box_bottom,BOX_TOP,BOX_BUTTOM; //---- calculations of the limit starting index for the bars recalculation loop if(prev_calculated gt rates_total || prev_calculated lt =0)// checking for the first start of the indicator calculation { limit=rates_total-start; // starting index for calculation of all bars BOX_TOP=high[limit+1]; BOX_BUTTOM=low[limit+1]; STATE=1; } else { limit=rates_total-prev_calculated; // starting index for calculation of new bars } //---- restore values of the variables state=STATE; box_top=BOX_TOP; box_bottom=BOX_BUTTOM; //---- main indicator calculation loop for(bar=limit; bar gt =0; bar--) { //---- store values of the variables before running at the current bar if(rates_total!=prev_calculated && bar==0) { STATE=state; BOX_TOP=box_top; BOX_BUTTOM=box_bottom; } switch(state) { case 1: box_top=high[bar]; if(symmetry)box_bottom=low[bar]; break; case 2: if(box_top lt =high[bar]) box_top=high[bar]; break; case 3: if(box_top gt high[bar]) box_bottom=low[bar]; else box_top=high[bar]; break; case 4: if(box_top gt high[bar]) {if(box_bottom gt = low[bar]) box_bottom=low[bar];} else box_top=high[bar]; break; case 5: if(box_top gt high[bar]) {if(box_bottom gt = low[bar]) box_bottom=low[bar];} else box_top=high[bar]; state=0; break; } UpperBuffer[bar] = box_top; LowerBuffer[bar] = box_bottom; state++; } //---- return(rates_total); } //+------------------------------------------------------------------+