Бары с одинаковым временем
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);
MC公司的服务器是否有问题?
目前的奥迪。
也许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:
Ну для начала стоит указать размеры массивов..
谢谢你。
我指出了这一点,但没有任何帮助。
我忘了说,如果屏幕区域稍微向左移动,指标的构造又变得正常了(指标线 与绘制的价格值相对应)。
换句话说,如果你从屏幕上 "删除 "第一个条形图,指标就会画得很好。只要指标一直向右移,就会变成这样的错误。
已经修好了。等待建设。
MC公司的服务器是否有问题?
目前的奥迪。
从USDLFX来看--这是Lyforex的问题,不是MQ的问题。
观察者网 ))))
赛车专家.在MK.Lite上连接,就很好。