Бары с одинаковым временем
Errors, MetaTrader 5 Client, Открыта, Начата: 2012.09 . 0302 : 28 , # 482547
Версия и битность терминала
Win32, Build 687
Описание проблемы
Встречаются бары с одинаковым временем в визуализаторе тестера
Последовательность действий
При запуске тестирования с 01.08 . 2012 на М 15
Полученный результат
на графике тестера два раза выскакивает бар с датой 2012.08 . 0100 : 00 : 00
в свое время и между 2012.08 . 0101 : 00 : 00 и 2012.08 . 0101 : 15 : 00
Кстати хай у него тоже не совпадает с экраном
Дополнительные сведения
В терминале все нормально.
Прикрепленные файлы:
안녕하세요. 말해봐, 내가 간단한 인디케이터를 썼는데.. 그리고 새로운 바가 오면 인디케이터 라인의 이런 행동이 뜬다. 무엇이 문제가 될 수 있습니까?
표시기 코드:
//+------------------------------------------------------------------+ //| Liniya_Trenda.mq5 | //| Второй индикатор | //+------------------------------------------------------------------+ #property copyright "Линейный график цен баров, двух выбранных валютных пар" #property version "1.00" #property description "Пользователь может выбрать по какой цене строить линию графика" #property indicator_separate_window // Отображение в новом окне #property indicator_buffers 2 // Количество буферов (1 линия - 1 буфер) #property indicator_plots 2 // Количество массивов (1 линия - 1 массив) //--- Укажем тип линий #property indicator_label1 "FirstAktiv" // Название линии индикатора #property indicator_type1 DRAW_LINE // Тип линии - линия #property indicator_style1 STYLE_SOLID // Стиль линии - сплошная #property indicator_color1 clrMediumBlue // Цвет линии #property indicator_width1 2 // Толщина линии #property indicator_label2 "SecondAktiv" // Название линии индикатора #property indicator_type2 DRAW_LINE // Тип линии - линия #property indicator_style2 STYLE_SOLID // Стиль линии - сплошная #property indicator_color2 clrRed // Цвет линии #property indicator_width2 2 // Толщина линии
enum ChangePrice{Open, High, Low, Close}; // Предоставим пользователю выбор цены по которой будет строиться график
//--- Входные параметры input string FirstAktiv ="EURUSD"; // Тикер первого актива, по которому будем строить график цен input string SecondAktiv ="GBPUSD"; // Тикер второго актива, по которому будем строить график цен input ChangePrice WantPrice = Close; // Цена построения по умолчанию
//--- Глобальные переменные double LinePriceBuffer1[]; // Массив для хранения данных линейного графика double LinePriceBuffer2[]; // Массив для хранения данных линейного графика
//+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { SetIndexBuffer(0,LinePriceBuffer1,INDICATOR_DATA); // Указывает, что массив будет являться буфером индикатора IndicatorSetString(INDICATOR_SHORTNAME,FirstAktiv); SetIndexBuffer(1,LinePriceBuffer2,INDICATOR_DATA); // Указывает, что массив будет являться буфером индикатора IndicatorSetString(INDICATOR_SHORTNAME,SecondAktiv); return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, // Передаем общее количество баров на текущем графике const int prev_calculated, // Количество баров для которых уже рассчитаны значения индикатора const int begin, // номер начала достоверного отсчёта баров const double &price[]) { // Расчёт стартового номера first для цикла пересчёта баров int first; // Проверка на первый старт расчёта индикатора if(prev_calculated == 0) { first = begin; // стартовый номер для расчёта всех баров } else { first = prev_calculated - 1; // стартовый номер для расчёта новых баров }
// Объявим массив который будет содержать цены, объемы и спред для каждого бара MqlRates mrate1[]; MqlRates mrate2[]; // Копируем данные по барам в массив CopyRates(FirstAktiv,PERIOD_CURRENT,0,rates_total,mrate1); CopyRates(SecondAktiv,PERIOD_CURRENT,0,rates_total,mrate2);
MK 서버가 장난꾸러기입니까?
현 아우디.
호출 직전에 PositionSelect가 수행되지 않았을 수 있습니다. 이는 이전 데이터이며 반환됩니다.
SD에 글을 썼는데 답변이 오래걸릴 것 같아서요.
누군가 테스터에서 이 주제를 확인하세요.
이 때문에 렌더러의 개체가 춤을 춥니다.
저만 그럴수도...
안녕하세요. 말해봐, 내가 간단한 인디케이터를 썼는데.. 그리고 새로운 바가 오면 인디케이터 라인의 이런 행동이 뜬다. 무엇이 문제가 될 수 있습니까?
표시기 코드:
//+------------------------------------------------------------------+
//| Liniya_Trenda.mq5 |
//| Второй индикатор |
//+------------------------------------------------------------------+
#property copyright "Линейный график цен баров, двух выбранных валютных пар"
#property version "1.00"
#property description "Пользователь может выбрать по какой цене строить линию графика"
#property indicator_separate_window // Отображение в новом окне
#property indicator_buffers 2 // Количество буферов (1 линия - 1 буфер)
#property indicator_plots 2 // Количество массивов (1 линия - 1 массив)
//--- Укажем тип линий
#property indicator_label1 "FirstAktiv" // Название линии индикатора
#property indicator_type1 DRAW_LINE // Тип линии - линия
#property indicator_style1 STYLE_SOLID // Стиль линии - сплошная
#property indicator_color1 clrMediumBlue // Цвет линии
#property indicator_width1 2 // Толщина линии
#property indicator_label2 "SecondAktiv" // Название линии индикатора
#property indicator_type2 DRAW_LINE // Тип линии - линия
#property indicator_style2 STYLE_SOLID // Стиль линии - сплошная
#property indicator_color2 clrRed // Цвет линии
#property indicator_width2 2 // Толщина линии
enum ChangePrice{Open, High, Low, Close}; // Предоставим пользователю выбор цены по которой будет строиться график
//--- Входные параметры
input string FirstAktiv ="EURUSD"; // Тикер первого актива, по которому будем строить график цен
input string SecondAktiv ="GBPUSD"; // Тикер второго актива, по которому будем строить график цен
input ChangePrice WantPrice = Close; // Цена построения по умолчанию
//--- Глобальные переменные
double LinePriceBuffer1[]; // Массив для хранения данных линейного графика
double LinePriceBuffer2[]; // Массив для хранения данных линейного графика
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
SetIndexBuffer(0,LinePriceBuffer1,INDICATOR_DATA); // Указывает, что массив будет являться буфером индикатора
IndicatorSetString(INDICATOR_SHORTNAME,FirstAktiv);
SetIndexBuffer(1,LinePriceBuffer2,INDICATOR_DATA); // Указывает, что массив будет являться буфером индикатора
IndicatorSetString(INDICATOR_SHORTNAME,SecondAktiv);
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total, // Передаем общее количество баров на текущем графике
const int prev_calculated, // Количество баров для которых уже рассчитаны значения индикатора
const int begin, // номер начала достоверного отсчёта баров
const double &price[])
{
// Расчёт стартового номера first для цикла пересчёта баров
int first;
// Проверка на первый старт расчёта индикатора
if(prev_calculated == 0)
{
first = begin; // стартовый номер для расчёта всех баров
}
else
{
first = prev_calculated - 1; // стартовый номер для расчёта новых баров
}
// Объявим массив который будет содержать цены, объемы и спред для каждого бара
MqlRates mrate1[];
MqlRates mrate2[];
// Копируем данные по барам в массив
CopyRates(FirstAktiv,PERIOD_CURRENT,0,rates_total,mrate1);
CopyRates(SecondAktiv,PERIOD_CURRENT,0,rates_total,mrate2);
for(int i = first; i < rates_total; i++)
{
if(WantPrice == Open)
{
LinePriceBuffer1[i] = mrate1[i].open;
LinePriceBuffer2[i] = mrate2[i].open;
}
if(WantPrice == High)
{
LinePriceBuffer1[i] = mrate1[i].high;
LinePriceBuffer2[i] = mrate2[i].high;
}
if(WantPrice == Low)
{
LinePriceBuffer1[i] = mrate1[i].low;
LinePriceBuffer2[i] = mrate2[i].low;
}
if(WantPrice == Close)
{
LinePriceBuffer1[i] = mrate1[i].close;
LinePriceBuffer2[i] = mrate2[i].close;
}
}
//--- return value of prev_calculated for next call
return(rates_total);
}
안녕하세요. 말해봐, 내가 간단한 인디케이터를 썼는데.. 그리고 새로운 바가 생겼을 때 인디케이터 라인의 이런 행동이 뜬다. 무엇이 문제가 될 수 있습니까?
표시기 코드:
// Объявим массив который будет содержать цены, объемы и спред для каждого бара
MqlRates mrate1[];
MqlRates mrate2[];
SD에 글을 썼는데 답변이 오래걸릴 것 같아서요.
누군가 테스터에서 이 주제를 확인하세요.
이 때문에 렌더러의 개체가 춤을 춥니다.
저만 그럴수도...
ilunga :
Ну для начала стоит указать размеры массивов..
고맙습니다.
지적했지만 도움이되지 않았습니다.
화면 영역이 약간 왼쪽으로 이동하면 표시기 구성이 다시 정상화된다는 점을 잊어버렸습니다( 표시기 선은 표시 되는 가격 값에 해당함).
저것들. 화면에서 첫 번째 막대를 "제거"하면 표시기가 잘 그려집니다. 오른쪽으로 끝까지 이동하자마자 이러한 버그가 발생합니다.
이미 수정되었습니다. 빌드를 기다립니다.
MK 서버가 장난꾸러기입니까?
현 아우디.
USDLFX로 판단하면 이것은 MQ가 아니라 lifeforex 문제입니다.
관찰)))
전문가를 쫓는 중이야 MK에 연결돼 있어 방금 신호가 떴어.