Бары с одинаковым временем
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で判断すると-これはMQではなくLyforexの問題です。
オブザーバント )))
レーシングエキスパート、MK.Liteで接続するとちょうどよかった。