• 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 mới tập trade coin và trade theo mã Scripts đó trên Trading View và có lãi tôi muốn chuyển nó sang MQL4 để báo về điên thoại

Bybui

New Member
Credits
82
//+--------------------------------------------------------------------------------+
//| PHONG.mq4 |
//| Bản quyền 2025, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+--------------------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 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 double bear = 0,43;
đầu vào int atr_length = 3;

// Bộ đệm chỉ báo
cviBuffer đôi[];

// 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 đôi = 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 kiểu chỉ mục (0, ĐƯỜNG VẼ);
Đặt nhãn Index(0, "CVI");
trả về(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
const int prev_calculated,
const ngày giờ &thời gian[],
const đô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 ta có đủ dữ liệu
nếu (rates_total < chiều dài + atr_length) {
trả về (0);
}

// Tính toán hl2
đôi 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(chiều dài atr);
}

// 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 dài);
cviBuffer[iCVI] = (đóng[iCVI] - valC) / atr_val;
}

// Vẽ tín hiệu
for (int iSignal = rates_total - 1; iSignal >= 0; iSignal--) { // Thay `iLoop` thành `iSignal`
nếu (cviBuffer[iSignal] <= bull) {
nếu (iSignal < rates_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 đẩy
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 < rates_total - 1 && cviBuffer[iSignal + 1] < bear) {
ObjectCreate(0, "bearSignal" + IntegerToString(iSignal), OBJ_LABEL, 0, thời gian[iSignal], cao[iSignal] + 5 * Điểm);
ObjectSetInteger(0, "bearSignal" + IntegerToString(iSignal), OBJPROP_COLOR, clrRed);

// Thông báo đẩy
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) + " vào " + Symbol());
}
}
}

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