ФОРТС CopyTicks()

 

Добрый день!

В документации, пока, нет описания функции CopyTicks().

Меня интересуют возвращаемые значения (int) этой функции? 

 
Mikalas:

Добрый день!

В документации, пока, нет описания функции CopyTicks().

Меня интересуют возвращаемые значения (int) этой функции? 

https://www.mql5.com/ru/forum/23/page18#comment_1227742

Пункт 10:

MQL5: Добавлена функция работы с тиковой историей CopyTicks. Функция позволяет получить массив тиков, накопленных терминалом за текущую рабочую сессию. Глубина получаемых тиков ограничена последними 2 000.

Новая функция расширяет возможности написания скальперских торговых роботов. Функция OnTick не является обработчиком каждого тика, она уведомляет эксперта об изменениях на рынке. Изменения могут быть пакетными: в терминал может одновременно прийти несколько тиков, но функция OnTick будет вызвана лишь один раз для уведомления эксперта о последнем состоянии рынка. Функция CopyTicks позволяет получать и анализировать все пришедшие тики.
int  CopyTicks(
   const string      symbol_name,           // имя символа
   MqlTick           &ticks_array[],        // массив, в который будут помещены тики
   uint              flags=COPY_TICKS_ALL,  // флаг, определяющий тип получаемых тиков
   ulong             from=0,                // дата, начиная с которой получаются тики, указывается в миллисекундах с 01.01.1970
   uint              count=0                // количество последних тиков, которые необходимо получить
   );
Тики можно запросить по дате, указав значение from, или по количеству, указав значение count. Если ни один из параметров не указан, передаются все доступных тики, но не более 2000. Также тики можно запрашивать по типу при помощи параметра flags. Доступные значения:

  • COPY_TICKS_ALL - все тики.
  • COPY_TICKS_INFO - только информационные тики (Bid и Ask).
  • COPY_TICKS_TRADE - только торговые тики (Last и Volume).

 

Логично, что возвращаемое значение int - это размер массива полученных тиков. 

Список изменений в билдах MetaTrader 5 Client Terminal
Список изменений в билдах MetaTrader 5 Client Terminal
  • www.mql5.com
Автоматическое обновление доступно через систему LiveUpdate:. - Страница 18 - Категория: общее обсуждение
 
Логично, а если нет?
 
Mikalas:
Логично, а если нет?
//+------------------------------------------------------------------+
//|                                                    CopyTicks.mq5 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
MqlTick tick[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   static int on_tick;
   on_tick++;
   int count_ticks=CopyTicks(NULL,tick,COPY_TICKS_ALL,0,0);
   PrintFormat("Вызовов OnTick() %d, в масиве %d тиков",on_tick,count_ticks);
  }
//+------------------------------------------------------------------+
Видно, что счетчик тиков OnTick увеличивается всегда на единицу, а вот массив тиков приростает более чем на единицу (но не всегда).
 
barabashkakvn:
Видно, что счетчик тиков OnTick увеличивается всегда на единицу, а вот массив тиков приростает более чем на единицу (но не всегда).

Ошибочка в коде у Вас.

Либо дата, либо количество, а у Вас 0, 0

int ticks_return = CopyTicks( _Symbol, ticks_array, COPY_TICKS_TRADE, 0, 1 );
 
Mikalas:

Ошибочка в коде у Вас.

Либо дата, либо число, а у Вас 0, 0

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

ОК, не дочитал:

Если ни один из параметров не указан, передаются все доступных тики, но не более 2000 

 
Странно. Я обыскался.   Почему-то CopyTicks  до сих пор нету во внутреннем справочнике по MQL5, а на сайте  https://www.mql5.com/ru/docs/series/copyticks  есть . 
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicks
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicks
  • www.mql5.com
Доступ к таймсериям и индикаторам / CopyTicks - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Привет, например нужно узнать какого типа была сделка, по bid (продажа) или по ask (покупка), но в структуре mqltick значение last может отличаться и от bid и от ask.

Что тогда они (bid и ask) обозначают в тике? Или это значит что они отображают состояние стакана после сделки, и эта сделка "скушала" оставшийся объем  - поэтому значения и стали отличаться?

 
akuloff:

Привет, например нужно узнать какого типа была сделка, по bid (продажа) или по ask (покупка), но в структуре mqltick значение last может отличаться и от bid и от ask.

Что тогда они (bid и ask) обозначают в тике? Или это значит что они отображают состояние стакана после сделки, и эта сделка "скушала" оставшийся объем  - поэтому значения и стали отличаться?

В тике, ASK и BID означают лучшие текущие цены в стакане. 
 
akuloff:

Привет, например нужно узнать какого типа была сделка, по bid (продажа) или по ask (покупка), но в структуре mqltick значение last может отличаться и от bid и от ask.

Что тогда они (bid и ask) обозначают в тике? Или это значит что они отображают состояние стакана после сделки, и эта сделка "скушала" оставшийся объем  - поэтому значения и стали отличаться?

Вообще, странно, что разработчики не предусмотрели в структуре MqlTick поле указывающее направление сделки Last. Выйти из этой ситуации можно аналитически, анализируя текущие уровни цен самостоятельно. Случай, когда Last не соответствует ни одной из текущих цен Ask и Bid, по всей видимости тот самый, когда Last полностью съедает текущую ликвидность, следовательно надо также анализировать предыдущие уровни Ask и Bid, что бы понять по какой стороне произошел удар Last.