copyticksrange

 

Добрый день!

подскажите пожалуйста какой максимальный объем тиков можно получить используя copyticksrange? Хочу получить тики за 30 минут, написал ниже стоящий запрос и индикатор зависает.

    

      ulong  temp_time=TimeCurrent()*1000;

      ulong temp_time1=temp_time-30*60*1000;

      int zz1=CopyTicksRange(_Symbol,myticks1,COPY_TICKS_TRADE,temp_time1,temp_time);

Через Copyticks проходит и 6000 тиков

Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Информация об инструменте - Состояние окружения - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
buzer79:

Добрый день!

подскажите пожалуйста какой максимальный объем тиков можно получить используя copyticksrange? Хочу получить тики за 30 минут, написал ниже стоящий запрос и индикатор зависает.

    

      ulong  temp_time=TimeCurrent()*1000;

      ulong temp_time1=temp_time-30*60*1000;

      int zz1=CopyTicksRange(_Symbol,myticks1,COPY_TICKS_TRADE,temp_time1,temp_time);

Здравствуйте! Последнее известное время сервера TimeCurrent() зачем на 1000 умножаете? С какой целью?

С уважением, Владимир.

 
MrBrooklin #:

Здравствуйте! Последнее известное время сервера TimeCurrent() зачем на 1000 умножаете? С какой целью?

С уважением, Владимир.

я с примера в интернете скопировал, пока не умножал, не работало.

как я понял перевод в миллисекунды, но какой-то он странный.

 
buzer79:

Добрый день!

подскажите пожалуйста какой максимальный объем тиков можно получить используя copyticksrange? Хочу получить тики за 30 минут, написал ниже стоящий запрос и индикатор зависает.

    

      ulong  temp_time=TimeCurrent()*1000;

      ulong temp_time1=temp_time-30*60*1000;

      int zz1=CopyTicksRange(_Symbol,myticks1,COPY_TICKS_TRADE,temp_time1,temp_time);

Через Copyticks проходит и 6000 тиков

На калькуляторе посчитайте сколько получится…

 
buzer79 #:

я с примера в интернете скопировал, пока не умножал, не работало.

как я понял перевод в миллисекунды, но какой-то он странный.

TimeCurrent

С уважением, Владимир.

Документация по MQL5: Обработка событий / OnTick
Документация по MQL5: Обработка событий / OnTick
  • www.mql5.com
OnTick - Обработка событий - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov #:

На калькуляторе посчитайте сколько получится…

Не понял вопрос.

TimeCurrent()  возвращает время в секундах, в одной секунде - 1000 миллисекунд.  В 30 минутах = 30*60*1000=1800000 секунд.

Учитывая, что я поставил флаг  COPY_TICKS_TRADE, я ожидаю что будут меньше 5000 записей, или я где-то ошибаюсь?  

 
buzer79 #:

я с примера в интернете скопировал, пока не умножал, не работало.

как я понял перевод в миллисекунды, но какой-то он странный.

Смотрите скрипт:

//+------------------------------------------------------------------+
//|                                                        Proba.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Print(TimeCurrent());
   
  }
//+------------------------------------------------------------------+

и Ваш вариант:

//+------------------------------------------------------------------+
//|                                                        Proba.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Print(TimeCurrent()*1000);
   
  }
//+------------------------------------------------------------------+

а теперь посмотрите на результат (верхняя строчка без умножения на 1000, нижняя строчка Ваш вариант):


С уважением, Владимир.

 
buzer79 #:

Не понял вопрос.

TimeCurrent()  возвращает время в секундах, в одной секунде - 1000 миллисекунд.  В 30 минутах = 30*60*1000=1800000 секунд.

Учитывая, что я поставил флаг  COPY_TICKS_TRADE, я ожидаю что будут меньше 5000 записей, или я где-то ошибаюсь?  

Уверен?

 
MrBrooklin #:

Смотрите скрипт:

и Ваш вариант:

а теперь посмотрите на результат (верхняя строчка без умножения на 1000, нижняя строчка Ваш вариант):


С уважением, Владимир.

Владимир, у тебя-же есть код который работает. Умножать на 1000 надо потому, что в функцию  CopyTicksRange время передаётся в миллисекундах.

 
Alexey Viktorov #:

Уверен

1800000 миллисекунд

опечатался, но в коде то правильно стоит 30*60*1000, поэтому и вопрос почему не выдает, ограничение по объему?

 
Alexey Viktorov #:

Владимир, у тебя-же есть код который работает. Умножать на 1000 надо потому, что в функцию  CopyTicksRange время передаётся в миллисекундах.

Привет, Алексей!

Структура для получения текущих цен (MqlTick)

Структура для хранения последних цен по символу. Предназначена для быстрого получения наиболее востребованной информации о текущих ценах.

struct MqlTick
  {
   datetime     time;          // Время последнего обновления цен

   double       bid;           // Текущая цена Bid
   double       ask;           // Текущая цена Ask
   double       last;          // Текущая цена последней сделки (Last)
   ulong        volume;        // Объем для текущей цены Last
   long         time_msc;      // Время последнего обновления цен в миллисекундах
   uint         flags;         // Флаги тиков
   double       volume_real;   // Объем для текущей цены Last c повышенной точностью
  };

Честно говоря не совсем понял, для чего нужно переводить в миллисекунды, когда человеку надо получить тики за 30 минут?

С уважением, Владимир.

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