Всем доброго!
Дошли руки до MQL5, интересует работа с тиковыми данными, сделал небольшой пример( см.ниже) но результат получил не тот, что ожидал. Быть может чего то не так понимаю, но при копировании структура MqlTick содержит не полные данные, а именно нету данных по MyTicks.volume и MyTicks.volume_real, если с MyTicks.volume_real вопросов нет (брокер), то почему MyTicks.volume не содержит данных?
Если в принципе такого рода данных там не должно быть, то зачем тогда использовать эту структуру?
Результат:
не буду сильно умничать, но помоему просто вольюм это тиковые объёмы форекс котировок, а реал вольюм это реальные объёмы биржевых котировок. сам работаю только с форекс данными и заметил что поле реал вольюм всегда нулевое.
не буду сильно умничать, но помоему просто вольюм это тиковые объёмы форекс котировок, а реал вольюм это реальные объёмы биржевых котировок. сам работаю только с форекс данными и заметил что поле реал вольюм всегда нулевое.
Проблема в том, что оба вольюм имеют нулевое значение.
Честно признаюсь, долго откладывал переход на MQL5, так как думал уж там то проблем с тиковой историей не будет, но пока вижу такой результат, может я как то не правильно выполняю запрос или использую не те функции, подскажите.
Проблема в том, что оба вольюм имеют нулевое значение.
Честно признаюсь, долго откладывал переход на MQL5, так как думал уж там то проблем с тиковой историей не будет, но пока вижу такой результат, может я как то не правильно выполняю запрос или использую не те функции, подскажите.
запрос правильный. тут малость в другом ситуация. по сути вольюм это количество пришедших тиков за определённый промежуток времени. тоесть за минуту или за час или за день. а в структуре копирования тиковых данных получается по умолчанию один тик. тоесть тик пришёл (не важно в каком поле изменились данные) значит +1 тик ( вольюм) к нынешнему бару. Потому у вас никогда на форекс котировках в тиках объёмов не будет. По сути вы сможете только цену и точное время тика использовать. А сделана эта структура для того чтобы биржевые данные тиков можно было использовать. Там за один тик могла поменяться не цена а количество (объём )заявок.
Но как вы говорите проблеммы с тиковой историей на самом деле нету. В мт5 будут все тики которые транслировал ваш ДЦ.
запрос правильный. тут малость в другом ситуация. по сути вольюм это количество пришедших тиков за определённый промежуток времени. тоесть за минуту или за час или за день. а в структуре копирования тиковых данных получается по умолчанию один тик. тоесть тик пришёл (не важно в каком поле изменились данные) значит +1 тик ( вольюм) к нынешнему бару. Потому у вас никогда на форекс котировках в тиках объёмов не будет. По сути вы сможете только цену и точное время тика использовать. А сделана эта структура для того чтобы биржевые данные тиков можно было использовать. Там за один тик могла поменяться не цена а количество (объём )заявок.
Но как вы говорите проблеммы с тиковой историей на самом деле нету. В мт5 будут все тики которые транслировал ваш ДЦ.
>а в структуре копирования тиковых данных получается по умолчанию один тик. тоесть тик пришёл (не важно в каком поле изменились данные) значит +1 тик ( вольюм) к нынешнему бару
Это ваши выводы или есть документально зафиксированная информация(без сарказма)? Я конечно еще раз прочитаю справку, но не помню подобного описания.
>а в структуре копирования тиковых данных получается по умолчанию один тик. тоесть тик пришёл (не важно в каком поле изменились данные) значит +1 тик ( вольюм) к нынешнему бару
Это логично, но все же нужен пруф.
>а в структуре копирования тиковых данных получается по умолчанию один тик. тоесть тик пришёл (не важно в каком поле изменились данные) значит +1 тик ( вольюм) к нынешнему бару
Это ваши выводы или есть документально зафиксированная информация(без сарказма)? Я конечно еще раз прочитаю справку, но не помню подобного описания.
это мои выводы. но можете легко проверить. взять минутный бар, посмотреть его объём ( тик вольюм) и потом этот же бар (время ) прогнать в цикле копируя данные структурой мкуэльтик. в конце цикла выведите в принты количество итераций цикла и увидете тот же объём что и значился в объёме бара.
это мои выводы. но можете легко проверить. взять минутный бар, посмотреть его объём ( тик вольюм) и потом этот же бар (время ) прогнать в цикле копируя данные структурой мкуэльтик. в конце цикла выведите в принты количество итераций цикла и увидете тот же объём что и значился в объёме бара.
В общем, пример из справки:
//+------------------------------------------------------------------+ //| возвращает строковое описание тика | //+------------------------------------------------------------------+ string GetTickDescription(MqlTick &tick) { string desc=StringFormat("%s.%03d ", TimeToString(tick.time),tick.time_msc%1000); //--- проверим флаги bool buy_tick=((tick.flags&TICK_FLAG_BUY)==TICK_FLAG_BUY); bool sell_tick=((tick.flags&TICK_FLAG_SELL)==TICK_FLAG_SELL); bool ask_tick=((tick.flags&TICK_FLAG_ASK)==TICK_FLAG_ASK); bool bid_tick=((tick.flags&TICK_FLAG_BID)==TICK_FLAG_BID); bool last_tick=((tick.flags&TICK_FLAG_LAST)==TICK_FLAG_LAST); bool volume_tick=((tick.flags&TICK_FLAG_VOLUME)==TICK_FLAG_VOLUME); //--- проверим сначала тик на торговые флаги if(buy_tick || sell_tick) { //--- сформируем вывод для торгового тика desc=desc+(buy_tick?StringFormat("Buy Tick: Last=%G Volume=%d ",tick.last,tick.volume):""); desc=desc+(sell_tick?StringFormat("Sell Tick: Last=%G Volume=%d ",tick.last,tick.volume):""); desc=desc+(ask_tick?StringFormat("Ask=%G ",tick.ask):""); desc=desc+(bid_tick?StringFormat("Bid=%G ",tick.ask):""); desc=desc+"(Trade tick)"; } else { //--- для инфо тика сформируем вывод немного иначе desc=desc+(ask_tick?StringFormat("Ask=%G ",tick.ask):""); desc=desc+(bid_tick?StringFormat("Bid=%G ",tick.ask):""); desc=desc+(last_tick?StringFormat("Last=%G ",tick.last):""); desc=desc+(volume_tick?StringFormat("Volume=%d ",tick.volume):""); desc=desc+"(Info tick)"; } //--- вернем описание тика return desc; }
По идеи должен был получить что-то подобное:
10. 2016.09.26 10:00.000 Sell Tick: Last=65367 Volume=3 (Trade tick) 11. 2016.09.26 10:00.000 Sell Tick: Last=65335 Volume=45 (Trade tick) 12. 2016.09.26 10:00.000 Sell Tick: Last=65334 Volume=95 (Trade tick) 13. 2016.09.26 10:00.191 Sell Tick: Last=65319 Volume=1 (Trade tick) 14. 2016.09.26 10:00.191 Sell Tick: Last=65317 Volume=1 (Trade tick)
Но нет, ни одного подобного сообщения не вижу. Только такие результаты:
2019.04.07 16:14:54.921 Test (EURUSD,M1) OnStart... Result[34]: 2019.04.05 20:55.828 Ask=1.12167 Bid=1.12167 (Info tick) 2019.04.07 16:14:54.921 Test (EURUSD,M1) OnStart... Result[35]: 2019.04.05 20:55.838 Ask=1.12166 Bid=1.12166 (Info tick) 2019.04.07 16:14:54.921 Test (EURUSD,M1) OnStart... Result[36]: 2019.04.05 20:55.869 Ask=1.12164 Bid=1.12164 (Info tick) 2019.04.07 16:14:54.921 Test (EURUSD,M1) OnStart... Result[37]: 2019.04.05 20:55.059 Bid=1.12164 (Info tick) 2019.04.07 16:14:54.921 Test (EURUSD,M1) OnStart... Result[38]: 2019.04.05 20:55.130 Ask=1.12163 (Info tick) 2019.04.07 16:14:54.921 Test (EURUSD,M1) OnStart... Result[39]: 2019.04.05 20:55.939 Ask=1.12165 (Info tick)
В общем, пример из справки:
По идеи должен был получить что-то подобное:
Но нет, ни одного подобного сообщения не вижу.
это пример на биржевом символе, не на валютной паре.
это пример на биржевом символе, не на валютной паре.
В примере об этом ни слова не сказано.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем доброго!
Дошли руки до MQL5, интересует работа с тиковыми данными, сделал небольшой пример( см.ниже) но результат получил не тот, что ожидал. Быть может чего то не так понимаю, но при копировании структура MqlTick содержит не полные данные, а именно нету данных по MyTicks.volume и MyTicks.volume_real, если с MyTicks.volume_real вопросов нет (брокер), то почему MyTicks.volume не содержит данных?
Если в принципе такого рода данных там не должно быть, то зачем тогда использовать эту структуру?
Результат: