ADXVMA Binary Indicator For MT5
Table Of Contents:
- ADXVMA Binary Indicator For MT5
- Cài đặt ADXVMA Binary Indicator For MT5
- Các tham số của ADXVMA Binary Indicator For MT5
- Bộ đệm của ADXVMA Binary Indicator For MT5
- Các bộ phận chính của bộ luật
ADXVMA Binary Indicator For MT5 là một công cụ rất độc đáo xác định xu hướng tăng với giá trị +1 và xu hướng giảm với giá trị -1. Tuy nhiên, chỉ báo không cung cấp bất kỳ thông tin chính xác nào để thực hiện giao dịch. Công cụ này hoạt động tốt nhất khi bạn sử dụng lệnh dừng lỗ để tối đa hóa lợi nhuận. Vì dữ liệu chỉ báo rất nhạy cảm với biến động giá nhẹ, bạn phải học cách sử dụng công cụ này trong khung thời gian hàng ngày và hàng tuần. Cho dù thiết lập giao dịch có thuyết phục đến mức nào, bạn nên giới hạn rủi ro ở mức 2% trong mỗi giao dịch. Nếu được yêu cầu, hãy mở một tài khoản demo để tìm hiểu cách sử dụng mà không mất tiền thật.
Cài đặt ADXVMA Binary Indicator For MT5
Sau khi bạn tải xuống chỉ báo qua biểu mẫu ở trên, bạn cần giải nén tệp zip. Sau đó, bạn cần sao chép tệp ADXVMA binary.mq5 vào thư mục MQL5Indicators cài đặt MT5 của bạn. Sau đó, vui lòng khởi động lại MT5 và sau đó bạn sẽ có thể thấy chỉ báo trong danh sách các chỉ báo.
Các tham số của ADXVMA Binary Indicator For MT5
ADXVMA Binary Indicator For MT5 có các tham số 2 để cấu hình.
input double inpPeriod = 14; // Period input ENUM_APPLIED_PRICE inpPrice = PRICE_MEDIAN; // Price
Bộ đệm của ADXVMA Binary Indicator For MT5
ADXVMA Binary Indicator For MT5 cung cấp bộ đệm 2 .
SetIndexBuffer(0,val,INDICATOR_DATA); SetIndexBuffer(1,adxvma,INDICATOR_CALCULATIONS);
Các bộ phận chính của bộ luật
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[]) { if(Bars(_Symbol,_Period) lt rates_total) return(prev_calculated); for(int i=(int)MathMax(prev_calculated-1,0); i lt rates_total && !IsStopped(); i++) { adxvma[i]=iAdxvma(getPrice(inpPrice,open,close,high,low,i,rates_total),inpPeriod,i,rates_total); val[i] = (i gt 0) ?(adxvma[i] gt adxvma[i-1]) ? 1 :(adxvma[i] lt adxvma[i-1]) ? -1 : val[i-1]: 0; } return(rates_total); } //+------------------------------------------------------------------+ //| Custom functions | //+------------------------------------------------------------------+ #define _adxVmaInstances 1 #define _adxVmaInstancesSize 7 double adxvmaWork[][_adxVmaInstances*_adxVmaInstancesSize]; #define _adxvmaWprc 0 #define _adxvmaWpdm 1 #define _adxvmaWmdm 2 #define _adxvmaWpdi 3 #define _adxvmaWmdi 4 #define _adxvmaWout 5 #define _adxvmaWval 6 //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double iAdxvma(double price,double period,int r,int bars,int instanceNo=0) { if(ArrayRange(adxvmaWork,0)!=bars) ArrayResize(adxvmaWork,bars); instanceNo*=_adxVmaInstancesSize; // //--- // adxvmaWork[r][instanceNo+_adxvmaWprc]=price; if(r lt 1) { adxvmaWork[r][instanceNo+_adxvmaWval]=adxvmaWork[r][instanceNo+_adxvmaWprc]; return(adxvmaWork[r][_adxvmaWval]); } // //--- // double tpdm = 0; double tmdm = 0; double diff = adxvmaWork[r][instanceNo+_adxvmaWprc]-adxvmaWork[r-1][instanceNo+_adxvmaWprc]; if(diff gt 0) tpdm = diff; else tmdm = -diff; adxvmaWork[r][instanceNo+_adxvmaWpdm] = ((period-1.0)*adxvmaWork[r-1][instanceNo+_adxvmaWpdm]+tpdm)/period; adxvmaWork[r][instanceNo+_adxvmaWmdm] = ((period-1.0)*adxvmaWork[r-1][instanceNo+_adxvmaWmdm]+tmdm)/period; // //--- // double trueRange = adxvmaWork[r][instanceNo+_adxvmaWpdm]+adxvmaWork[r][instanceNo+_adxvmaWmdm]; double tpdi = 0; double tmdi = 0; if(trueRange gt 0) { tpdi = adxvmaWork[r][instanceNo+_adxvmaWpdm]/trueRange; tmdi = adxvmaWork[r][instanceNo+_adxvmaWmdm]/trueRange; } adxvmaWork[r][instanceNo+_adxvmaWpdi] = ((period-1.0)*adxvmaWork[r-1][instanceNo+_adxvmaWpdi]+tpdi)/period; adxvmaWork[r][instanceNo+_adxvmaWmdi] = ((period-1.0)*adxvmaWork[r-1][instanceNo+_adxvmaWmdi]+tmdi)/period; // //--- // double tout=0; if((adxvmaWork[r][instanceNo+_adxvmaWpdi]+adxvmaWork[r][instanceNo+_adxvmaWmdi]) gt 0) tout=MathAbs(adxvmaWork[r][instanceNo+_adxvmaWpdi]-adxvmaWork[r][instanceNo+_adxvmaWmdi])/(adxvmaWork[r][instanceNo+_adxvmaWpdi]+adxvmaWork[r][instanceNo+_adxvmaWmdi]); adxvmaWork[r][instanceNo+_adxvmaWout]=((period-1.0)*adxvmaWork[r-1][instanceNo+_adxvmaWout]+tout)/period; // //--- // double thi = MathMax(adxvmaWork[r][instanceNo+_adxvmaWout],adxvmaWork[r-1][instanceNo+_adxvmaWout]); double tlo = MathMin(adxvmaWork[r][instanceNo+_adxvmaWout],adxvmaWork[r-1][instanceNo+_adxvmaWout]); for(int j=2; j lt (int)period && r-j gt =0; j++) { thi = MathMax(adxvmaWork[r-j][instanceNo+_adxvmaWout],thi); tlo = MathMin(adxvmaWork[r-j][instanceNo+_adxvmaWout],tlo); } double vi=0; if((thi-tlo) gt 0) vi=(adxvmaWork[r][instanceNo+_adxvmaWout]-tlo)/(thi-tlo); // //--- // adxvmaWork[r][instanceNo+_adxvmaWval]=((period-vi)*adxvmaWork[r-1][instanceNo+_adxvmaWval]+vi*adxvmaWork[r][instanceNo+_adxvmaWprc])/period; return(adxvmaWork[r][instanceNo+_adxvmaWval]); } // //--- // double getPrice(ENUM_APPLIED_PRICE tprice,const double &open[],const double &close[],const double &high[],const double &low[],int i,int _bars) { if(i gt =0) switch(tprice) { case PRICE_CLOSE: return(close[i]); case PRICE_OPEN: return(open[i]); case PRICE_HIGH: return(high[i]); case PRICE_LOW: return(low[i]); case PRICE_MEDIAN: return((high[i]+low[i])/2.0); case PRICE_TYPICAL: return((high[i]+low[i]+close[i])/3.0); case PRICE_WEIGHTED: return((high[i]+low[i]+close[i]+close[i])/4.0); } return(0); } //+------------------------------------------------------------------+