Скачать MetaTrader 5

Тестируем 'CopyTicks'

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Dmitriy Skub
12172
Dmitriy Skub  

Начнем с простого - объем. Ниже картинка с обнаруженным глюком. Периодически появляются "двойники" в объемах.


Win7-64

MT5-1085

Брокер Открытие, реальный сервер.

Основной цикл индикатора выглядит так:

//---------------------------------------------------------------------
//      Внешние задаваемые параметры:
//---------------------------------------------------------------------
input int                               TickCount = 2000;
input ENUM_TICK_TYPE                    TickType = ENUM_COPY_TICKS_ALL;
//---------------------------------------------------------------------
//---------------------------------------------------------------------
MqlTick         ticks_Arr[ ];
int             copied;
//---------------------------------------------------------------------
int
OnCalculate( const int _rates_total, const int _prev_calculated, const int _begin, const double& _price[ ] )
{
        if( _prev_calculated <= 0 )
        {
                ArrayInitialize( VolumeBuffer, 0 );
        }

        copied = CopyTicks( _Symbol, ticks_Arr, TickType, 0, TickCount );
        if( copied > 0 )
        {
                for( int i = copied - 1; i >= 0; i-- )
                {
                        MqlTick tick = ticks_Arr[ i ];

                        VolumeBuffer[ _rates_total - copied + i ] = ( double )tick.volume;
//                      Print( tick.volume );
                }
        }

        return( _rates_total );
}

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

Индикатор с тиковым объемом прилагается ( скомпилирован на МТ5-1100).

Файлы:
Mikhail Filimonov
5931
Mikhail Filimonov  
Dima_S:

Начнем с простого - объем. Ниже картинка с обнаруженным глюком. Периодически появляются "двойники" в объемах.


Win7-64

MT5-1085

Брокер Открытие, реальный сервер.

Основной цикл индикатора выглядит так:

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

Индикатор с тиковым объемом прилагается ( скомпилирован на МТ5-1100).

Я справлялся в сервисдеск по поводу CopyTicks() (была ошибка этой функции)

Вот ответ СД:

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

Alexey Kozitsyn
7394
Alexey Kozitsyn  
Mikalas:

Я справлялся в сервисдеск по поводу CopyTicks() (была ошибка этой функции)

Вот ответ СД:

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

Вам повезло, мне сервисдеск по поводу этой функции все еще не ответил...
Dmitriy Skub
12172
Dmitriy Skub  
Mikalas:

Я справлялся в сервисдеск по поводу CopyTicks() (была ошибка этой функции)

Вот ответ СД:

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

Понятно. Значит, пока это полуфабрикат. Подождем еще))

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

Dmitriy Skub
12172
Dmitriy Skub  

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

struct MqlTick
{
  datetime   time;           // Время последнего обновления цен
  uint       time_count;     // микросекунды ( крайне желательно брать с биржи )
  double     bid;            // Текущая цена Bid
  double     ask;            // Текущая цена Ask
  double     last;           // Текущая цена последней сделки (Last)
  ulong      volume;         // Объем для текущей цены Last
  ulong      interest;       // Текущая величина ОИ, после исполнения последней сделки Last
  ulong      buy_orders;     // Текущее число ордеров покупателей, после исполнения последней сделки Last
  ulong      sell_orders;    // Текущее число ордеров продавцов, после исполнения последней сделки Last
  ulong      buy_orders_vol; // Текущий объем ордеров покупателей, после исполнения последней сделки Last
  ulong      sell_orders_vol;// Текущий объем ордеров продавцов, после исполнения последней сделки Last
  char       action;         // Действие ( 'B' - покупка, 'S' - продажа )
 };

Все остальное в функции можно оставить как есть.

Ром
1632
Ром  
Dima_S:

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

Все остальное в функции можно оставить как есть.

 Класс! ! Поддерживаю! 
Prival-2
274
Prival-2  
Dima_S:

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

Все остальное в функции можно оставить как есть.

Я бы добавил направление сделки. Кто был инициатором (продавец или покупатель)
Dmitriy Skub
12172
Dmitriy Skub  
Prival-2:
Я бы добавил направление сделки. Кто был инициатором (продавец или покупатель)
Да, упустил - добавлено.
Prival-2
274
Prival-2  
И лучше не последнее время обновления цен. Точнее наверное будет время изменения данных + добавить какой объем стоит на биде и какой на аске (возможно лучше сразу весь) стакан.
Ром
1632
Ром  
 Да. и возможность получать максимально глубокую накопленную сервером историю по этим всем данным через https://www.mql5.com/ru/docs/series/copyticks  и  тестпровать по ним стратегии в тестере .  Тогда  для скальперов  наступит Рай в МТ5)  А если еще по каждому   BookEvent данные стакана  накапливать - то выйдет громаднейший  размер архива, который не влезет на сервер)  
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicks
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicks
  • www.mql5.com
Доступ к таймсериям и индикаторам / CopyTicks - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Prival-2
274
Prival-2  

зачем хранить всю историю от царя гороха на сервере. Можно ограничится разумной глубиной, к примеру за неделю. А более глубокую историю предоставлять по отдельному запросу (с файлового сервера). Хочет кто то историю стакана за 2010 год, нет проблем, скачивает её, и пусть потом тестирует на ней хоть до посинения.

при этом предоставляя её (историю) другим по технологии торрента. Решений много. Это лишь один из вариантов. 

1234567891011121314151617181920212223242526272829303132333435363738
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий