Какие данные берёт MetaTrader-ский тестер?

 
Какие данные берёт MetaTrader-ский тестер?
Повторяю свой вопрос потому, что все еще жду ответа. Надеюс будет.
 
тестер использует те же самые данные, которые формируют chart
но так как эти данные не тиковые, а баровые, то тики моделируются. тики могут моделироваться несколькими способами - по четырём точкам Open-High-Low-Close, через каждые 3 пункта изменения цены, через 2 и через 1 пункт. кажется, мы уже отвечали на Ваш вопрос. если Вас интересуют КАК моделируются ценовые тики, то напишите простейшего эксперта, который при помощи функции print (или FileWrite) выведут Вам значения всех смоделированных ценовых тиков.
 
То же самое. Вот более ...
Ну и спасибо за ответ! Я все таки ожидал серезного отношения к этой проблеме!

На все запросы я надлежно приводил данные и скрееншоты, чтобы помочь вам разобраться.
К некоторому времени даже думал, что вы поняли проблему - ведь так и ответили, что
поняли проблему и будете разбираться после выставки.

Сейчас - на ваш ответ:
1. Нет! Тестер не изпользует "те же самые данные", которые формируют чарт.
И я в этом уже вполностю уверен! Но всётаки на сей раз привожу пример.
2. Да! уже хорошо понял, что теоретически должно быть и что данные моделируются
и что они моделируются на шаг, заданны тестером - 1, 2, 3 или OHLP.
3. Да! Сразу после выхода 3-тей версии MetaTrader я сделал подходящий тест для анализа
данных, изпользуемых тестером с помощю файловых функций.

Всётаки, что мы обнаружили в данных? (В пример взяли данные о USDJPY.Daily для короткого
периода 2002.01.01 по 2002.02.01, т.е. с первово по последнего числа января 2002 года.)
Тест есть такой:


defines: openFile(1);
//-------------------------------------------------------------------------------------
var: f1(0);

if (TimeToStr(CurTime) < "2002.01.01") Then Exit;
if (TimeToStr(CurTime) > "2002.02.01") Then Exit;

if (openFile == 1) Then {
openFile = 0;

f1 = FileOpen("test", ";");
FileWrite(f1, "Time", "Open", "High", "Low", "Close", "Ask", "Bid", "DayOfWeek");
FileWrite(f1, TimeToStr(Time), Open, High, Low, Close, Ask, Bid, DayOfWeek);
} Else {
FileWrite(f1, TimeToStr(Time), Open, High, Low, Close, Ask, Bid, DayOfWeek);
};
Exit;



Запустили тест и задали "Модель: every 1 point", т.е. шаг изменения 1 пипс.

Что делает впечатление на первый взгляд? Все данные идут (я смотрел Close, так как
он должен следовать моделю и двигатся в рамках дневного бара) через 1 пипс, но через
48 минут, здесь то и проблема! В один день есть 30 (тридцать) 48-минутных интервалов,
которые не хватят для моделирование бара с range-ом более 30 пипсов (иногда и менше).

Впримере на USDJPY, Daily для 2002.01.07 данные о баре таковы (Time, O,H,L,C):
07.01.2002 00:00 130.87 131.66 130.35 131.1
(из Сервис / Архив котировок)

По сутьи моделирования тестера (которого, вы уже мне объяснили, а и я прочитал в ващу
документацию) и по мере того, что я нашел в файле, формированным моим тестом, для того
числа нужны следущее чсло пипсов и респективно тиков:


1. Open - Low = 130.87 - 130.35 = 52
2. High - Low = 131.66 - 130.55 = 111
3. High - Close = 131.66 - 131.10 = 56
-----------------------------------------
Всего: 219 пипсов/тиков


В файле test.csv есть такие данные, но только они идут напересек нескольких
дней и выглядят так.


Time Open High Low Close Ask Bid Day Of Week
-----------------------------------------------------------------------------
09.01.2002 04:00 131.83 131.88 130.61 130.96 130.99 130.94 4
09.01.2002 04:48 131.83 131.88 130.61 130.97 130.99 130.94 4
07.01.2002 00:00 130.87 130.90 130.85 130.87 130.90 130.85 2

почему они начинают после 9-го числа ???

. . . (28 строк, всего 30 для этого числа месяца)
07.01.2002 23:12 130.87 130.90 130.56 130.58 130.61 130.56 2
08.01.2002 00:00 130.87 130.90 130.54 130.57 130.59 130.54 3
. . . (28 строк, всего 30 для этого числа месяца)
08.01.2002 23:12 130.87 130.90 130.35 130.48 130.50 130.45 3
09.01.2002 00:00 130.87 130.90 130.35 130.49 130.52 130.47 4
. . . (28 строк, всего 30 для этого числа месяца)
09.01.2002 23:12 130.87 130.90 130.35 130.78 130.81 130.76 4
10.01.2002 00:00 130.87 130.90 130.35 130.79 130.81 130.76 5
. . . (28 строк, всего 30 для этого числа месяца)
10.01.2002 23:12 130.87 131.11 130.35 131.08 131.11 131.06 5
11.01.2002 00:00 130.87 131.12 130.35 131.09 131.12 131.07 6
. . . (28 строк, всего 30 для этого числа месяца)
11.01.2002 23:12 130.87 131.41 130.35 131.38 131.40 131.35 6
12.01.2002 00:00 130.87 131.41 130.35 131.39 131.41 131.36 7
. . . (28 строк, всего 30 для этого числа месяца)
12.01.2002 23:12 130.87 131.66 130.35 131.58 131.61 131.56 7
13.01.2002 00:00 130.87 131.66 130.35 131.57 131.59 131.54 1
. . . (28 строк, всего 30 для этого числа месяца)
13.01.2002 23:12 130.87 131.66 130.35 131.28 131.31 131.26 1
14.01.2002 00:00 130.87 131.66 130.35 131.27 131.30 131.25 2
. . . (16 строк, всего 18 для этого числа месяца)
14.01.2002 13:36 130.87 131.66 130.35 131.10 131.12 131.07 2

и почему же они продолжают в 8-ое число ???

08.01.2002 00:00 131.11 131.14 131.09 131.11 131.14 131.09 3
08.01.2002 00:48 131.11 131.14 131.09 131.12 131.14 131.10 3

-----------------------------------------------------------------------------



Как видно изза нехватки 48-ми минутных интервалов (понадобились 229,
а имеем всего 30) данные о баре 7-го числа шли до 14-го.

На этом хотели и мы здесь обернуть внимание в наших постах в форуме,
что время поступающих в тест данных, не соответствует этому о баре.

Надеюсь, после долгого описания, всетаки найдете время разобраться.
Ведь мы хочем помочь и всяких ответов вроде вашего, думаю, не уместны.

Если нужен файл, сгенериванны тестом, я посылаю его почтой на support.

Желаю удачи.

 
по вопросу
Валентин, спасибо за Ваше письмо.
Мы разобрались и исправили ошибку. Дело было в том, что при моделировании баров на больших периодах у нас получилось так, что время бара убегало за пределы бара из-за неверно выбранного приращения. Сейчас это исправлено.

Скачайте, пожалуйста, новую версию MetaTrader 3.01 с нашего сайта: https://download.mql5.com/cdn/web/metaquotes.software.corp/mt5/mt5setup.exe?utm_campaign=MQL5.community
 
Спасибо ...
Большое спасибо за ответ и за то, что приняли замечание и исправили тестер.
Как посоветовали, я скачал новую 3.01, проинсталировал и сделал тест снова.
Как и ожидал, той проблеме уже нет и я очень рад.

Хочу еще раз поблагодарить. И в том же добром тоне я рассмотрел данные и
заметил что они не распределяются равномерно по всему бару (в случае дня).
Хочу отметить, что это вообще не мешает тестам. Но хотел бы предложить
простой альгорифм для вычисления сдвига времени внутри бара.

Следует описание.

Желаю удачи.


// ------------------------------------------
var barStartTime; // это время начала бара
var currentTime;

var barTime;
var barTicks;
var tickTime;

// время бара в минутах
barTime = 1440;

// на скольо тиков хочем его распределить (это число вам известно)
barTicks = 157;

// первы тик смещен на 0 от начального времени бара
tickTime = 0;
currentTime = barStartTime;

while (barTicks > 0) {
// смещение следующего тика равно оставшемуся времени / оствшее число тиков
// округленное до целого числа (в случае 1 минута)
tickTime = round(barTime / barTicks);

// вычисление "Current Time"
currentTime = currentTime + tickTime;

// коррекция оставшего времени до конца бара
barTime = barTime - tickTime;

// коррекция оставшего числа тиков до конца бара
barTicks = barTicks - 1;
}
// ------------------------------------------
Причина обращения: