Ошибки, баги, вопросы - страница 3236

 
Roman #:

Если параметры не указаны.
Мы же не о параметрах ведём речь, а о размере максимального копирования.
И там чётко написано, не более 2000.

Вы сами себе противоречите.

Если count ==3000, то вернет 3000.

 
Vladimir Pastushak #:

Это не ошибка

if(j=123)

Компилятор понимает как к j присвоить 123 и если успешно присвоено, продолжить

Аналог 

if((j=123)==123)

Согласен. Слово "ошибка" нужно взять в кавычки. Но конечная ситуация (падение терминала) от этого не изменяется, и пусть это не будет ошибкой для компилятора, но где-то,вероятно, нет проверки последствий ошибки. 

 
mktr8591 #:

Вы сами себе противоречите.

Если count ==3000, то вернет 3000.

Да, точно.
Я почему-то для без параметров привёл документацию.
А максимальный возврат с параметром не учёл.


Проблема вопроса вообще не об этом была.
А о тестере, и проброске исторических тиков.

 
Roman #:

"Старт тест" начало интервала в настройках теста.


Сейчас, чтоб пробросить исторические тики, нужно начальную дату (Старт тест) установить на начало имеющейся истории терминала.
На скрине от балды поставил 1970 год для примера.
И в коде самому обрабатывать момент, с какого времени начинается реальный тест, ввиду проброски данных потиково. 
Чтоб потом можно было корректно использовать CopyTicksRange.
Когда ожидалось, что CopyTicksRange не такой глупый, и пробросит сам историю от даты начала тестового интервала.
Например от 2022.08.22 и до начала тиковой истории терминала.
А дальше с приходом OnTick увеличивать окно рейнджа, и перекидывать туда прошедший тик тестера.


Набросал простой советник, который копирует каждый тик последние 150000 тиков. 

void OnTick() {
   MqlTick ticks[];
   int total = CopyTicks(_Symbol,ticks,COPY_TICKS_ALL,0,150000);
   string str = "";
   if (total < 1)  str = "нет тиков";
   else str = TimeToString(ticks[total-1].time);
   Comment("TimeCurrent = " +TimeToString(TimeCurrent()) + "\nВремя последнего тика = " + str + "\nСкопировано тиков: " + string(total));
}


Там где есть реальные исторические тики - с первого бара копирует все 150000 тиков. Не понимаю суть проблемы. 

там, где нет реальных исторических тиков, там тестер начинает их эмулировать с момента старта тестера, что логично. 
Это дает возможность определить программно, что реальных исторических данных нет, а осуществляется их эмуляция.


Вообщем, тестер работает с тиками так, как ожидал и так, как должно быть.

Файлы:
 
Nikolai Semko #:



Там где есть реальные исторические тики - с первого бара копирует все 150000 тиков. Не понимаю суть проблемы. 

там, где нет реальных исторических тиков, там тестер начинает их эмулировать с момента старта тестера, что логично.


Попробовал ваш советник на 2х брокерах - на бирже (на Si) и на MetaquotesDemo (EURUSD). В обоих случаях нет никаких 150000, на первом OnTick 1, и тд.

Вопрос - а где и по каким инструментам есть  реальные истор. тики?

 
mktr8591 #:

Попробовал ваш советник на 2х брокерах - на бирже (на Si) и на MetaquotesDemo (EURUSD). В обоих случаях нет никаких 150000, на первом OnTick 1, и тд.

Вопрос - а где и по каким инструментам есть  реальные истор. тики?

не встречал отдельной функции для получения информации о стартовой дате истории тиков. Может ее и не существут.
Но можно попробовать загрузить всю историю тиков и время нулевого тика и будет этой стартовой датой.
Да - грузится не быстро. 
Но в тестере как раз и можно понять благодаря этой фичи, есть ли в данный момент времени исторические данные или происходит их эмуляция (если тиков нет до момента старта терминала).
Понятное дело, что у разных брокеров своя история. Реальная история тиков может быть меньше года, если брокер молодой.
Нельзя загрузить то, чего нет, а можно только сэмулировать. Чем тестер и занимается, но с момента тестового стартового интервала.

ЗЫ
И вы не забывайте, что бесплатная реальная тиковая история - это большая плюшка от MQ

 

Обратил внимение на следующую вещь:

запускаю одиночное тестирование на EURUSD на MQ-Demo с 27.08.2009 по 28.08.2009



В логе следующие строки:

2022.08.29 18:43:39.127 MetaTester 5 started on 127.0.0.1:3000
2022.08.29 18:43:39.139 cloud network mode is off
2022.08.29 18:43:39.139 initialization finished
2022.08.29 18:43:39.582 login (build 3409)
2022.08.29 18:43:39.600 4412 bytes of account info loaded
2022.08.29 18:43:39.600 1478 bytes of tester parameters loaded
2022.08.29 18:43:39.600 196 bytes of input parameters loaded
2022.08.29 18:43:39.605 10390 bytes of symbols list loaded (1247 symbols)
2022.08.29 18:43:39.605 expert file added: Experts\Tests\TestTimeTicks.ex5. 10345 bytes loaded
2022.08.29 18:43:39.618 1517 Mb available, 18 blocks set for ticks generating
2022.08.29 18:43:39.618 initial deposit 10000.00 USD, leverage 1:100
2022.08.29 18:43:39.622 successfully initialized
2022.08.29 18:43:39.622 18 Kb of total initialization data received
2022.08.29 18:43:39.657 EURUSD: symbol to be synchronized
2022.08.29 18:43:39.658 EURUSD: symbol synchronized, 3720 bytes of symbol info received
2022.08.29 18:43:39.659 EURUSD: history synchronization started
2022.08.29 18:43:39.661 EURUSD: load 27 bytes of history data to synchronize in 0:00:00.001
2022.08.29 18:43:39.661 EURUSD: history synchronized from 2008.01.02 to 2022.08.26
2022.08.29 18:43:39.662 EURUSD: ticks synchronization started
2022.08.29 18:43:39.663 EURUSD: load 34 bytes of tick data to synchronize in 0:00:00.000
2022.08.29 18:43:39.663 EURUSD: history ticks synchronized from 2022.08.26 to 2022.08.26
2022.08.29 18:43:39.945 EURUSD,M1: history cache allocated for 582024 bars and contains 580995 bars from 2008.01.02 09:01 to 2009.08.26 23:59
2022.08.29 18:43:39.945 EURUSD,M1: history begins from 2008.01.02 09:01
2022.08.29 18:43:39.948 EURUSD,M1 (MetaQuotes-Demo): generating based on real ticks
2022.08.29 18:43:39.948 EURUSD,M1: testing of Experts\Tests\TestTimeTicks.ex5 from 2009.08.27 00:00 to 2009.08.28 00:00 started
2022.08.29 18:43:39.994 EURUSD : real ticks begin from 2022.08.26 00:00:00, every tick generation used

Вот эта строка - EURUSD : real ticks begin from 2022.08.26 00:00:00.

Причем здесь 26.08.2022? Посмотрел историю тиков по символу - тики есть как минимум с 01.08.2022.

Что я упустил?

 
Nikolai Semko #:

Нельзя загрузить то, чего нет, а можно только сэмулировать. Чем тестер и занимается.


Короче тест у меня пошел, и что удивительно с той же даты, с тем же CopyTickRange.
CopyTickRange на удивление начал возвращать какое то количество тиков.
Проверил по времени, совпадает с началом истории.
А при первом моём обращении на форум, с той же даты  возвращал нарастающие тики.
Как это понимать?
ЭТО БАГ.

Эмуляция на реальных тиках?
Вот это жёсткий поворот!
Что и вводит в заблуждение пользователя.

Какая к чёрту эмуляция! На реальных тиках!
Нет реальных тиков, поднимай предупреждение с остановкой теста!
Это гнев в сторону MQ.

Только же, недавно Ренат писал о юристах, и брокерах если будут вводить в заблуждение по комиссии.
То будет ай-яй-яй как не хорошо судится.
А тут реальные тики эмулировать, а кули можно.
Слов нет.

 
Nikolai Semko #:


Нельзя загрузить то, чего нет, а можно только сэмулировать. Чем тестер и занимается, но с момента тестового стартового интервала.


Я всегда считал (и читал в доках), что реальные тики эмулируются только для тех минут, где в истории есть бар, но нет тиков. Вы это имеете ввиду?

Если другое, тогда где про это можно почитать?

 
mktr8591 #:

Обратил внимение на следующую вещь:

запускаю одиночное тестирование на EURUSD на MQ-Demo с 27.08.2009 по 28.08.2009



В логе следующие строки:

Вот эта строка - EURUSD : real ticks begin from 2022.08.26 00:00:00.

Причем здесь 26.08.2022? Посмотрел историю тиков по символу - тики есть как минимум с 01.08.2022.

Что я упустил?

Вот вот вот, это изменяющийся трудноуловимый баг.

Причина обращения: