4MA Candles Indicator For MT5
4MA Candles Indicator For MT5 จะวิเคราะห์ 4MA Candles Indicator For MT5 ที่เปิดปิดสูงและต่ำเพื่อสร้างชุดเทียนญี่ปุ่นชุดใหม่ เมื่อราคามีแนวโน้มสูงขึ้นสีของแท่งเทียนจะเป็นสีน้ำตาล ในทางตรงกันข้ามเมื่อราคามีแนวโน้มลดลงสีของแท่งเทียนจะเป็นสีเขียว ตามรหัสสีของเทียนผู้ค้าสามารถค้นหาทิศทางของแนวโน้มที่สำคัญ ในการดำเนินการเทรดผู้ค้าจำเป็นต้องพึ่งพาภาพรวมที่ใหญ่กว่าของตลาด หากคุณใช้การอ่านตัวบ่งชี้นี้ในกรอบเวลาที่ต่ำกว่าโอกาสที่สูงมากที่คุณจะไม่สามารถทำกำไรได้ดีจากตลาดนี้ เพื่อปรับปรุงกระบวนการดำเนินการทางการค้าของคุณคุณต้องเรียนรู้ที่จะวิเคราะห์รูปแบบแท่งเทียนเมื่อราคาสูงถึงระดับแนวรับและแนวต้านที่สำคัญ ขึ้นอยู่กับระดับวิกฤติผู้ค้าจำเป็นต้องมุ่งเน้นไปที่การเคลื่อนไหวของราคาในระยะยาวเพื่อที่พวกเขาจะได้ไม่ต้องจัดการกับการผิดพลาด
การติดตั้ง 4MA Candles Indicator For MT5
หลังจากคุณดาวน์โหลดตัวบ่งชี้ผ่านแบบฟอร์มด้านบนคุณจะต้องทำการแตกไฟล์ zip จากนั้นคุณต้องคัดลอกไฟล์ 4_ma_candles.mq5 ลงในโฟลเดอร์ MQL5Indicators ของการติดตั้ง MT5 ของคุณ หลังจากนั้นโปรดรีสตาร์ท MT5 จากนั้นคุณจะเห็นตัวบ่งชี้ในรายการตัวบ่งชี้
พารามิเตอร์ของ 4MA Candles Indicator For MT5
กระบวนการ 4MA Candles Indicator For MT5 มีพารามิเตอร์ 2 เพื่อกำหนดค่า
input int AvgPeriod = 25; // Averages period
input enMaTypes AvgType = avgEma; // Averages method
บัฟเฟอร์ของ 4MA Candles Indicator For MT5
4MA Candles Indicator For MT5 ให้บัฟเฟอร์ 5
SetIndexBuffer(0,cano ,INDICATOR_DATA);
SetIndexBuffer(1,canh ,INDICATOR_DATA);
SetIndexBuffer(2,canl ,INDICATOR_DATA);
SetIndexBuffer(3,canc ,INDICATOR_DATA);
SetIndexBuffer(4,colors,INDICATOR_COLOR_INDEX);
ส่วนหลักของรหัส
int OnCalculate(const int rates_total,
const int prev_calculated,
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[])
{
int bars = Bars(_Symbol,_Period); if (bars lt rates_total) return(-1);
for (int i=(int)MathMax(prev_calculated-1,0); i lt rates_total && !IsStopped(); i++)
{
double mao = iCustomMa(AvgType,open[i] ,AvgPeriod,i,rates_total,0);
double mac = iCustomMa(AvgType,close[i],AvgPeriod,i,rates_total,1);
double mah = iCustomMa(AvgType,high[i] ,AvgPeriod,i,rates_total,2);
double mal = iCustomMa(AvgType,low[i] ,AvgPeriod,i,rates_total,3);
canh[i] = MathMax(MathMax(MathMax(mao,mac),mal),mah);
canl[i] = MathMin(MathMin(MathMin(mao,mac),mal),mah);
cano[i] = mao;
canc[i] = mac;
colors[i] = mao gt mac ? 2 : mao lt mac ? 1 : 0;
}
return(rates_total);
}
//------------------------------------------------------------------
//
//------------------------------------------------------------------
//
//
//
//
//
#define _maInstances 4
#define _maWorkBufferx1 1*_maInstances
#define _maWorkBufferx2 2*_maInstances
double iCustomMa(int mode, double price, double length, int r, int bars, int instanceNo=0)
{
switch (mode)
{
case avgSma : return(iSma(price,(int)length,r,bars,instanceNo));
case avgEma : return(iEma(price,length,r,bars,instanceNo));
case avgSmma : return(iSmma(price,(int)length,r,bars,instanceNo));
case avgLwma : return(iLwma(price,(int)length,r,bars,instanceNo));
default : return(price);
}
}
//
//
//
//
//
double workSma[][_maWorkBufferx2];
double iSma(double price, int period, int r, int _bars, int instanceNo=0)
{
if (period lt =1) return(price);
if (ArrayRange(workSma,0)!= _bars) ArrayResize(workSma,_bars); instanceNo *= 2; int k;
//
//
//
//
//
workSma[r][instanceNo+0] = price;
workSma[r][instanceNo+1] = price; for(k=1; k lt period && (r-k) gt =0; k++) workSma[r][instanceNo+1] += workSma[r-k][instanceNo+0];
workSma[r][instanceNo+1] /= 1.0*k;
return(workSma[r][instanceNo+1]);
}
//
//
//
//
//
double workEma[][_maWorkBufferx1];
double iEma(double price, double period, int r, int _bars, int instanceNo=0)
{
if (period lt =1) return(price);
if (ArrayRange(workEma,0)!= _bars) ArrayResize(workEma,_bars);
//
//
//
//
//
workEma[r][instanceNo] = price;
double alpha = 2.0 / (1.0+period);
if (r gt 0)
workEma[r][instanceNo] = workEma[r-1][instanceNo]+alpha*(price-workEma[r-1][instanceNo]);
return(workEma[r][instanceNo]);
}
//
//
//
//
//
double workSmma[][_maWorkBufferx1];
double iSmma(double price, double period, int r, int _bars, int instanceNo=0)
{
if (period lt =1) return(price);
if (ArrayRange(workSmma,0)!= _bars) ArrayResize(workSmma,_bars);
//
//
//
//
//
if (r lt period)
workSmma[r][instanceNo] = price;
else workSmma[r][instanceNo] = workSmma[r-1][instanceNo]+(price-workSmma[r-1][instanceNo])/period;
return(workSmma[r][instanceNo]);
}
//
//
//
//
//
double workLwma[][_maWorkBufferx1];
double iLwma(double price, double period, int r, int _bars, int instanceNo=0)
{
if (period lt =1) return(price);
if (ArrayRange(workLwma,0)!= _bars) ArrayResize(workLwma,_bars);
//
//
//
//
//
workLwma[r][instanceNo] = price;
double sumw = period;
double sum = period*price;
for(int k=1; k lt period && (r-k) gt =0; k++)
{
double weight = period-k;
sumw += weight;
sum += weight*workLwma[r-k][instanceNo];
}
return(sum/sumw);
}