• Welcome back! Thank you for being a part of this Traders Community. Let's discuss and share :)
    Selamat datang kembali! Trimakasih telah menjadi bagian dari Komunitas Trader ini. Mari berdiskusi dan berbagi :)

Tôi có 1 mã code nhưng không thể chạy được trên MQL4 nhờ ai đó biết về code có thể giúp tôi. Tôi rất cám ơn

Bybui

New Member
Credits
82
//+----------------------------------------------------------------------------------------------------------------+
//| PHONG.mq4 |
//| Bản quyền 2025, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------------------------------------+
#property Chỉ báo_cửa sổ_riêng_riêng
#property Chỉ báo_bộ đệm 1
#property Indicator_color1 Blue // Lỗi: không nên khai báo lại
// Biến đầu vào
đầu vào int length = 3;
đầu vào double bull = -0,51;
đầu vào gấu đôi = 0,43;
đầu vào int atr_length = 3;

// Bộ đệm báo cáo chỉ
cviBuffer trùng lặp lặp[];

// Hàm tính toán SMA
SMA kép(double &source[], int chu kỳ, int shift = 0) {
tổng gấp đôi = 0;
for (int iSMA = shift; iSMA < Period + shift; iSMA++) { // Thay `iLoop` thành `iSMA`
tổng +=nguồn[iSMA];
}
trả về tổng / kỳ;
}

// Hàm tính ATR
double ATR(int chu kỳ) {
atr trùng lặp = 0;
for (int iATR = 1; iATR <= dấu chấm; iATR++) { // Thay `iLoop` thành `iATR`
atr += MathAbs(Cao[iATR] - Thấp[iATR]);
}
trả về atr / chu kỳ;
}

int OnInit() {
// Đặt bộ đệm
Đặt IndexBuffer(0, cviBuffer);
Đặt chỉ mục loại (0, ĐƯỜNG VẼ);
Đặt nhãn Index(0, "CVI");
trả về(INIT_SUCCEEDED);
}

int OnCalculate(const int tỷ lệ tổng,
const int prev_calcated,
const ngày &thời gian[]
, hằng số
đôi &mở[], const double &high[],
const double &low[],
const đôi &đóng[],
const dài &tick_volume[],
const dài & khối lượng[],
hằng số int & spread[]) {

// Đảm bảo chúng tôi có đủ dữ liệu
(rates_total < chiều dài + atr_length) {
trả về (0);
}

// Tính toán hl2
trùng lặp hl2[];
ArraySetAsSeries(hl2, đúng);
for (int iHL2 = 0; iHL2 < rate_total; iHL2++) { // Thay `iLoop` thành `iHL2`
hl2[iHL2] = (cao[iHL2] +thấp[iHL2]) / 2;
}

// Tính toán ATR
gấp đôi vol[];
ArraySetAsSeries(vol, đúng);
for (int iVol = 0; iVol < rate_total; iVol++) { // Thay `iLoop` thành `iVol`
vol[iVol] = ATR(atr chiều dài);
}

// Tính toán CVI
for (int iCVI = rate_total - 1; iCVI >= 0; iCVI--) { // Thay `iLoop` thành `iCVI`
giá trị kép valC = SMA(hl2, chiều dài, iCVI);
double atr_val = vol[iCVI] * MathSqrt(chiều rộng dài);
cviBuffer[iCVI] = (đóng[iCVI] - valC) / atr_val;
}

// Vẽ tín hiệu
for (int iSignal = rate_total - 1; iSignal >= 0; iSignal--) { // Thay `iLoop` thành `iSignal`
nếu (cviBuffer[iSignal] <= bull) {
nếu (iSignal < rate_total - 1 && cviBuffer[iSignal + 1] > bull) {
ObjectCreate(0, "bullSignal" + IntegerToString(iSignal), OBJ_LABEL, 0, thời gian[iSignal], thấp[iSignal] - 5 * Điểm);
ObjectSetInteger(0, "bullSignal" + IntegerToString(iSignal), OBJPROP_COLOR, clrLime);
// Thông báo Đưa ra
SendNotification("Tín hiệu tăng giá tại " + TimeToString(time[iSignal], TIME_DATE | TIME_MINUTES) + " vào " + Symbol());
// Cảnh báo màn hình
Alert("Tín hiệu tăng giá tại " + TimeToString(time[iSignal], TIME_DATE | TIME_MINUTES) + " vào " + Symbol());
}
} nếu (cviBuffer[iSignal] >= gấu) {
nếu (iSignal < rate_total - 1 && cviBuffer[iSignal + 1] < Bear) {
ObjectCreate(0, "bearSignal" + IntegerToString(iSignal), OBJ_LABEL, 0, thời gian[iSignal], thời gian[iSignal] + 5 *);
ObjectSetInteger(0, "bearSignal" + IntegerToString(iSignal), OBJPROP_COLOR, clrRed);

// Thông báo Đưa ra
SendNotification("Tín hiệu giảm giá tại " + TimeToString(time[iSignal], TIME_DATE | TIME_MINUTES) + " vào " + Symbol());
// Cảnh báo màn hình
Alert("Tín hiệu giảm giá tại " + TimeToString(time[iSignal], TIME_DATE | TIME_MINUTES) + " to " + Symbol());
}
}
}

trả về (tỷ giá_ tổng);
}
 
Back
Top