From d6d36fc3a385fd288081b2abb93a468612647bec Mon Sep 17 00:00:00 2001 From: Bell Date: Sun, 10 May 2026 22:05:53 +0700 Subject: [PATCH] 123 --- .gitignore | 1 - .../RsiMomentumIndicator.ex5 | Bin 19292 -> 21794 bytes .../RsiMomentumIndicator.mq5 | 97 ++++++++---------- Profiles/Charts/Default/order.wnd | Bin 2576 -> 2550 bytes experts.dat | Bin 79526 -> 80083 bytes 5 files changed, 45 insertions(+), 53 deletions(-) diff --git a/.gitignore b/.gitignore index ee638b5..907fa5f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,4 @@ Profiles/ Experts/*.ex5 *.dat Include/ -Indicators/*.ex5 Logs/*.log \ No newline at end of file diff --git a/Indicators/RsiMomentumIndicator/RsiMomentumIndicator.ex5 b/Indicators/RsiMomentumIndicator/RsiMomentumIndicator.ex5 index 1bf30f1f9013d4d3fce2258c7ec730ab3d27ff51..72b1d7540c3032fce83c2c1d740118a7c86f0336 100644 GIT binary patch literal 21794 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 FP-JW(6ZrrD literal 19292 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 diff --git a/Indicators/RsiMomentumIndicator/RsiMomentumIndicator.mq5 b/Indicators/RsiMomentumIndicator/RsiMomentumIndicator.mq5 index 503905f..92402b9 100644 --- a/Indicators/RsiMomentumIndicator/RsiMomentumIndicator.mq5 +++ b/Indicators/RsiMomentumIndicator/RsiMomentumIndicator.mq5 @@ -7,15 +7,15 @@ #property copyright "RsiMomentumIndicator" #property version "1.00" #property indicator_separate_window -#property indicator_buffers 4 +#property indicator_buffers 3 #property indicator_plots 3 #property indicator_minimum 0 #property indicator_maximum 100 -// --- Plot 0 (Buffer 0 + Color buffer 3): RSI14 với màu thay đổi theo vùng extreme --- +// --- Buffer 0: RSI14 --- #property indicator_label1 "RSI(14)" -#property indicator_type1 DRAW_COLOR_LINE -#property indicator_color1 clrMediumOrchid, clrRed // index 0 = bình thường, index 1 = extreme +#property indicator_type1 DRAW_LINE +#property indicator_color1 clrMediumOrchid #property indicator_style1 STYLE_SOLID #property indicator_width1 2 @@ -45,11 +45,9 @@ input int InpEMA200Period = 200; input group "Bộ lọc trend" input int InpTrendConfirmBars = 2; // số nến liên tiếp phải đóng cùng phía EMA200 -input group "Bộ lọc RSI extreme" -input double InpRSIOverbought = 70.0; // RSI ≥ ngưỡng này → bỏ qua tín hiệu BUY -input double InpRSIOversold = 30.0; // RSI ≤ ngưỡng này → bỏ qua tín hiệu SELL -input double InpRSIExtremeHigh = 75.0; // RSI > ngưỡng này → tô đỏ trên biểu đồ -input double InpRSIExtremeLow = 25.0; // RSI < ngưỡng này → tô đỏ trên biểu đồ +input group "Bộ lọc RSI" +input double InpRSIOverbought = 70.0; // RSI ≥ ngưỡng này → bỏ qua tín hiệu BUY +input double InpRSIOversold = 30.0; // RSI ≤ ngưỡng này → bỏ qua tín hiệu SELL input group "Mũi tên giao cắt" input color InpArrowUpColor = clrLime; // màu mũi tên khi RSI cắt lên WMA45 @@ -66,7 +64,6 @@ input bool InpShowPanel = true; double buf_RSI[]; double buf_EMA9[]; double buf_WMA45[]; -double buf_RSI_color[]; // color index buffer cho RSI (0 = normal, 1 = extreme red) int h_RSI = INVALID_HANDLE; int h_EMA9 = INVALID_HANDLE; @@ -113,31 +110,17 @@ void UpdateLabel(const string name, const string text, const color clr) int OnInit() { // Đăng ký buffer — đặt AS_SERIES để [0] = nến hiện tại - SetIndexBuffer(0, buf_RSI, INDICATOR_DATA); - SetIndexBuffer(1, buf_EMA9, INDICATOR_DATA); - SetIndexBuffer(2, buf_WMA45, INDICATOR_DATA); - SetIndexBuffer(3, buf_RSI_color, INDICATOR_COLOR_INDEX); + SetIndexBuffer(0, buf_RSI, INDICATOR_DATA); + SetIndexBuffer(1, buf_EMA9, INDICATOR_DATA); + SetIndexBuffer(2, buf_WMA45, INDICATOR_DATA); - ArraySetAsSeries(buf_RSI, true); - ArraySetAsSeries(buf_EMA9, true); - ArraySetAsSeries(buf_WMA45, true); - ArraySetAsSeries(buf_RSI_color, true); + ArraySetAsSeries(buf_RSI, true); + ArraySetAsSeries(buf_EMA9, true); + ArraySetAsSeries(buf_WMA45, true); IndicatorSetString (INDICATOR_SHORTNAME, StringFormat("RsiMom(%d)", InpRSIPeriod)); IndicatorSetInteger(INDICATOR_DIGITS, 2); - // Vẽ 2 đường ngang: Overbought (70) và Oversold (30) - IndicatorSetInteger(INDICATOR_LEVELS, 2); - IndicatorSetDouble (INDICATOR_LEVELVALUE, 0, InpRSIOverbought); - IndicatorSetDouble (INDICATOR_LEVELVALUE, 1, InpRSIOversold); - IndicatorSetInteger(INDICATOR_LEVELCOLOR, 0, clrSilver); - IndicatorSetInteger(INDICATOR_LEVELCOLOR, 1, clrSilver); - IndicatorSetInteger(INDICATOR_LEVELSTYLE, 0, STYLE_DOT); - IndicatorSetInteger(INDICATOR_LEVELSTYLE, 1, STYLE_DOT); - IndicatorSetInteger(INDICATOR_LEVELWIDTH, 0, 1); - IndicatorSetInteger(INDICATOR_LEVELWIDTH, 1, 1); - PlotIndexSetString (0, PLOT_LABEL, "RSI(14)"); - // Tạo handles chỉ báo h_RSI = iRSI(_Symbol, _Period, InpRSIPeriod, PRICE_CLOSE); if (h_RSI == INVALID_HANDLE) @@ -205,20 +188,24 @@ int OnCalculate(const int rates_total, const int minBars = InpWMA45Period + InpRSIPeriod + 5; if (rates_total < minBars) return 0; - // Đổ dữ liệu vào indicator buffer (AS_SERIES=true, [0]=nến hiện tại) - if (CopyBuffer(h_RSI, 0, 0, rates_total, buf_RSI) < rates_total) return prev_calculated; - if (CopyBuffer(h_EMA9, 0, 0, rates_total, buf_EMA9) < rates_total) return prev_calculated; - if (CopyBuffer(h_WMA45, 0, 0, rates_total, buf_WMA45) < rates_total) return prev_calculated; + // Đảm bảo các source indicator đã tính xong (quan trọng khi cold-start + // hoặc khi thị trường đóng — không có tick để retry) + const int rsiBars = BarsCalculated(h_RSI); + const int ema9Bars = BarsCalculated(h_EMA9); + const int wmaBars = BarsCalculated(h_WMA45); + const int ema200Bars = BarsCalculated(h_EMA200); + if (rsiBars <= 0 || ema9Bars <= 0 || wmaBars <= 0 || ema200Bars <= 0) + return 0; // chưa có dữ liệu — return 0 để MT5 retry ngay - // Tô màu RSI theo vùng extreme: - // value > InpRSIExtremeHigh hoặc < InpRSIExtremeLow → color index 1 (đỏ) - // ngược lại → color index 0 (mặc định) - // Buffer đang AS_SERIES → [0] = bar mới nhất; quét toàn bộ cho đơn giản (O(N) nhẹ). - for (int i = 0; i < rates_total; i++) - { - const double v = buf_RSI[i]; - buf_RSI_color[i] = (v > InpRSIExtremeHigh || v < InpRSIExtremeLow) ? 1.0 : 0.0; - } + // Chỉ copy số bar mà tất cả source đã tính xong (tránh return giữa chừng) + const int srcMin = MathMin(MathMin(rsiBars, ema9Bars), wmaBars); + const int copyN = MathMin(srcMin, rates_total); + if (copyN < minBars) return 0; + + // Đổ dữ liệu vào indicator buffer (AS_SERIES=true, [0]=nến hiện tại) + if (CopyBuffer(h_RSI, 0, 0, copyN, buf_RSI) <= 0) return 0; + if (CopyBuffer(h_EMA9, 0, 0, copyN, buf_EMA9) <= 0) return 0; + if (CopyBuffer(h_WMA45, 0, 0, copyN, buf_WMA45) <= 0) return 0; // Số nến cần quét để phát hiện giao cắt mới int barsToScan = (prev_calculated == 0) @@ -228,8 +215,10 @@ int OnCalculate(const int rates_total, // Sao chép time, high, low, close và EMA200 để phát hiện giao cắt + lọc trend // +InpTrendConfirmBars vì cần check N nến liên tiếp đóng cùng phía EMA200 + // CLAMP need ≤ copyN để CopyTime/CopyClose không bao giờ "thiếu" — first call + // có barsToScan = rates_total-2 sẽ cho need lớn hơn rates_total nếu không clamp. const int trendN = MathMax(1, InpTrendConfirmBars); - const int need = barsToScan + 2 + trendN; + const int need = MathMin(barsToScan + 2 + trendN, copyN); datetime timeArr[]; double highArr[], lowArr[], closeArr[], ema200Arr[]; ArraySetAsSeries(timeArr, true); @@ -238,10 +227,10 @@ int OnCalculate(const int rates_total, ArraySetAsSeries(closeArr, true); ArraySetAsSeries(ema200Arr, true); - if (CopyTime (_Symbol, _Period, 0, need, timeArr) < need) return prev_calculated; - if (CopyHigh (_Symbol, _Period, 0, need, highArr) < need) return prev_calculated; - if (CopyLow (_Symbol, _Period, 0, need, lowArr) < need) return prev_calculated; - if (CopyClose (_Symbol, _Period, 0, need, closeArr) < need) return prev_calculated; + if (CopyTime (_Symbol, _Period, 0, need, timeArr) < need) return prev_calculated; + if (CopyHigh (_Symbol, _Period, 0, need, highArr) < need) return prev_calculated; + if (CopyLow (_Symbol, _Period, 0, need, lowArr) < need) return prev_calculated; + if (CopyClose (_Symbol, _Period, 0, need, closeArr) < need) return prev_calculated; if (CopyBuffer(h_EMA200, 0, 0, need, ema200Arr) < need) return prev_calculated; const double arrowOffset = InpArrowOffsetPts * _Point; @@ -249,9 +238,9 @@ int OnCalculate(const int rates_total, // Phát hiện giao cắt RSI vs WMA45, chỉ vẽ khi khớp với trend EMA200 for (int i = barsToScan; i >= 1; i--) { - if (i + 1 >= rates_total) continue; - if (i + trendN >= rates_total) continue; // không đủ lịch sử cho N nến trend - if (ema200Arr[i] <= 0.0) continue; // EMA200 chưa tính đủ bars + if (i + 1 >= rates_total) continue; + if (i + trendN >= need) continue; // ngoài phạm vi mảng cục bộ (timeArr/closeArr/ema200Arr) + if (ema200Arr[i] <= 0.0) continue; // EMA200 chưa tính đủ bars const bool crossUp = (buf_RSI[i+1] <= buf_WMA45[i+1]) && (buf_RSI[i] > buf_WMA45[i]); const bool crossDown = (buf_RSI[i+1] >= buf_WMA45[i+1]) && (buf_RSI[i] < buf_WMA45[i]); @@ -363,5 +352,9 @@ int OnCalculate(const int rates_total, } ChartRedraw(0); - return rates_total; + // Return số bar thật sự đã xử lý — nếu copyN < rates_total thì lần sau MT5 + // sẽ scan tiếp phần còn lại (do chênh prev_calculated) + return copyN; } + +//+------------------------------------------------------------------+ diff --git a/Profiles/Charts/Default/order.wnd b/Profiles/Charts/Default/order.wnd index 20ea9754d5e839c53bcc1b6e15ce251dba25dfc4..8b354166ef810749096000f9daa11041dd2eb551 100644 GIT binary patch delta 51 zcmV-30L=f86!sGW|NfC2jFYee9I?dG0h7uCG?Azpla>M+v;G1C2M{m-F#s+AV*qFX JasUkg3IH6X5NQAa delta 64 zcmV-G0KfnC6Oa@F|NfKQ2^x|H3IQ;aAq5$cCTNqe0vfTX)B%&q0veHy9Fu+mGPC3Y W0tXN|0673I0Am1X0CE5g015!;3KK5? diff --git a/experts.dat b/experts.dat index 9ba8826f69898884eb38bef5e01932b9815e79c4..b78ab5616666feaba6546e19a627bbc795322f82 100644 GIT binary patch delta 424 zcmZ4XmgVwCmJMqd8T%(+EIKV3#8AwT$>7V7&ydTI%8qGLxRF&_j8OA|4w|h4a~;qp$MleV^4S21qhJi1ONa4 delta 388 zcmccok!9IimJMqd8T%$Day@T8$g=$)3!@L~WSf^9lW+a{GJS#|