Я разрабатываю сложного консультанта эксперта по торговле. My EA использует эти зоны для определения потенциальных возможностей для отката на рынках Forex. Тем не менее, я испытываю значительное визуальное сглаживание /мерцание при обновлении этих зон, даже несмотря на то, что логика технического обнаружения работает правильно. Это происходит, даже когда я внедряю логику для ограничения обновлений в зависимости от интервалов времени или значительных изменений цен. Мерцание затрудняет использование EA для фактического торгового анализа, поскольку он визуально отвлекает и влияет на общую удобство использования.// From OnTick() function
datetime currentTime = TimeCurrent();
// Track price changes to determine when to update zones
static double lastResistancePrice = 0;
static datetime lastZoneUpdateTime = 0;
// Find current highest price in recent price action
double currentHighest = 0;
for(int i = 0; i < 20; i++) {
double high = iHigh(_Symbol, inpTimeframe, i);
if(high > currentHighest) currentHighest = high;
}
// Limit updates to when price moves significantly (0.1%) or 15+ seconds pass
bool priceChanged = (lastResistancePrice > 0) ?
(MathAbs(currentHighest - lastResistancePrice) / lastResistancePrice > 0.001) :
true; // First run always updates
bool timeForUpdate = currentTime - lastZoneUpdateTime >= 15;
// Only update when not in structure detection process and conditions are met
if((!bullishstructureDetectionInProgress) && (ObjectFind(0, resLine) >= 0) && (priceChanged || timeForUpdate)) {
ObjectDelete(0, resLine);
string labelName = resLine + "_label";
if(ObjectFind(0, labelName) >= 0) {
ObjectDelete(0, labelName);
}
lastResistancePrice = currentHighest;
lastZoneUpdateTime = currentTime;
}
< /code>
Затем в моей функции обнаружения сопротивления я идентифицирую новые зоны и нарисую их: < /li>
< /ol>
void DetectResistanceZone() {
// Check if we should process this tick
int currBars = iBars(_Symbol, inpTimeframe);
static int prevBars = currBars;
if(prevBars == currBars) return;
prevBars = currBars;
// Skip if in structure detection mode (when analyzing a potential trade setup)
if(bullishstructureDetectionInProgress) {
Print("Structure detection in progress - Resistance zone locked");
return;
}
// Analyze price action to find significant swing high
int visibleBars = (int)ChartGetInteger(0, CHART_VISIBLE_BARS);
bool zoneDetected = false;
// Get recent price data
double highPrices[];
ArrayResize(highPrices, visibleBars);
for(int i = 0; i < visibleBars; i++) {
highPrices = iHigh(_Symbol, inpTimeframe, i);
}
// Find significant swing high
double bestHighPrice = 0;
int bestHighBar = 0;
datetime bestHighTime = 0;
// Search for swing highs in recent bars
int barsToAnalyze = MathMin(50, visibleBars);
for(int i = 5; i < barsToAnalyze; i++) {
double currentHigh = highPrices;
// Check if this is a swing high
bool isSwingHigh = true;
for(int j = 1; j = 0 && highPrices[i-j] > currentHigh) {
isSwingHigh = false;
break;
}
if(i+j < barsToAnalyze && highPrices[i+j] > currentHigh) {
isSwingHigh = false;
break;
}
}
ChartRedraw(0);
}
< /code>
Что я попробовал < /strong>: < /p>
На основе времени на основе времени: ограничение обновлений, которые встречаются только каждые x секунд (проверенные значения от 5 до 30 секунд) < /li>
Обнаружение цены>
< /li> < /li> Подходы: Использование критериев как времени, так и цены вместе < /li>
Селективное перераспределение: только удаление и перераспределение объектов при необходимости, а не на каждом клещете < /li>
Различные типы объектов: тестируют различные типы объектов MT5 (obj_rectangle, obj_rectangle_label, и т. Д.) Chartredraw (0) Размещение и частота
Принудительное обновление объекта: использование объекта metsetInteger () с различными изменениями свойства, чтобы избежать удаления/отдыха
Независимо от того, что я пытаюсь, я все еще испытываю визуальное мерцание, которое затрудняет использование EA для анализа торговли. Зоны правильно идентифицируют правильные уровни цен, но постоянно мигают или мерцают. < /P>
Вопросы < /p>
Какова наилучшая практика для обновления графических объектов в MT5, чтобы предотвратить мерцание? Конкретные методы оптимизации MT5 для управления объектами, которые часто обновляются? Это последнее препятствие в разработке моей системы торговли откат.
Я разрабатываю сложного консультанта эксперта по торговле. My EA использует эти зоны для определения потенциальных возможностей для отката на рынках Forex. Тем не менее, я испытываю значительное визуальное сглаживание /мерцание при обновлении этих зон, даже несмотря на то, что логика технического обнаружения работает правильно. Это происходит, даже когда я внедряю логику для ограничения обновлений в зависимости от интервалов времени или значительных изменений цен. Мерцание затрудняет использование EA для фактического торгового анализа, поскольку он визуально отвлекает и влияет на общую удобство использования.// From OnTick() function datetime currentTime = TimeCurrent();
// Track price changes to determine when to update zones static double lastResistancePrice = 0; static datetime lastZoneUpdateTime = 0;
// Find current highest price in recent price action double currentHighest = 0; for(int i = 0; i < 20; i++) { double high = iHigh(_Symbol, inpTimeframe, i); if(high > currentHighest) currentHighest = high; }
// Limit updates to when price moves significantly (0.1%) or 15+ seconds pass bool priceChanged = (lastResistancePrice > 0) ? (MathAbs(currentHighest - lastResistancePrice) / lastResistancePrice > 0.001) : true; // First run always updates bool timeForUpdate = currentTime - lastZoneUpdateTime >= 15;
// Only update when not in structure detection process and conditions are met if((!bullishstructureDetectionInProgress) && (ObjectFind(0, resLine) >= 0) && (priceChanged || timeForUpdate)) { ObjectDelete(0, resLine); string labelName = resLine + "_label"; if(ObjectFind(0, labelName) >= 0) { ObjectDelete(0, labelName); } lastResistancePrice = currentHighest; lastZoneUpdateTime = currentTime; } < /code> [list] [*] Затем в моей функции обнаружения сопротивления я идентифицирую новые зоны и нарисую их: < /li> < /ol> void DetectResistanceZone() { // Check if we should process this tick int currBars = iBars(_Symbol, inpTimeframe); static int prevBars = currBars; if(prevBars == currBars) return; prevBars = currBars;
// Skip if in structure detection mode (when analyzing a potential trade setup) if(bullishstructureDetectionInProgress) { Print("Structure detection in progress - Resistance zone locked"); return; }
// Analyze price action to find significant swing high int visibleBars = (int)ChartGetInteger(0, CHART_VISIBLE_BARS); bool zoneDetected = false;
// Get recent price data double highPrices[]; ArrayResize(highPrices, visibleBars); for(int i = 0; i < visibleBars; i++) { highPrices[i] = iHigh(_Symbol, inpTimeframe, i); }
// Find significant swing high double bestHighPrice = 0; int bestHighBar = 0; datetime bestHighTime = 0;
// Search for swing highs in recent bars int barsToAnalyze = MathMin(50, visibleBars); for(int i = 5; i < barsToAnalyze; i++) { double currentHigh = highPrices[i];
// Check if this is a swing high bool isSwingHigh = true; for(int j = 1; j = 0 && highPrices[i-j] > currentHigh) { isSwingHigh = false; break; } if(i+j < barsToAnalyze && highPrices[i+j] > currentHigh) { isSwingHigh = false; break; } }
ChartRedraw(0); } < /code> Что я попробовал < /strong>: < /p>
На основе времени на основе времени: ограничение обновлений, которые встречаются только каждые x секунд (проверенные значения от 5 до 30 секунд) < /li> Обнаружение цены> < /li> < /li> Подходы: Использование критериев как времени, так и цены вместе < /li> Селективное перераспределение: только удаление и перераспределение объектов при необходимости, а не на каждом клещете < /li> Различные типы объектов: тестируют различные типы объектов MT5 (obj_rectangle, obj_rectangle_label, и т. Д.) Chartredraw (0) Размещение и частота [*] Принудительное обновление объекта: использование объекта metsetInteger () с различными изменениями свойства, чтобы избежать удаления/отдыха [/list] Независимо от того, что я пытаюсь, я все еще испытываю визуальное мерцание, которое затрудняет использование EA для анализа торговли. Зоны правильно идентифицируют правильные уровни цен, но постоянно мигают или мерцают. < /P> Вопросы < /p> [list] [*] Какова наилучшая практика для обновления графических объектов в MT5, чтобы предотвратить мерцание? Конкретные методы оптимизации MT5 для управления объектами, которые часто обновляются? Это последнее препятствие в разработке моей системы торговли откат. [/list]