Здравствуйте, можете ли вы эквивалент в баре M5 M15 H1 H4
Здравствуйте,
Время Символ OPEM CLOSE PH PB
2013.01.04 04:55 EURGBP 0.81065 0.81078 0.81086 0.81065 172
2013.01.04 05:00 EURGBP 0.81079 0.81046 0.81080 0.81044 90
2013.01.04 05:05 EURGBP 0.81047 0.81044 0.81056 0.81044 89
2013.01.04 05:10 EURGBP 0.81043 0.81059 0.81059 0.81033 111
2013.01.04 05:15 EURGBP 0.81057 0.81052 0.81059 0.81048 78
2013.01.04 05:20 EURGBP 0.81051 0.81065 0.81071 0.81050 124
2013.01.04 05:25 EURGBP 0.81067 0.81066 0.81070 0.81060 243
2013.01.04 05:30 EURGBP 0.81067 0.81076 0.81080 0.81063 108
Здравствуйте,
Время Символ OPEM CLOSE PH PB
2013.01.04 04:55 EURGBP 0.81065 0.81078 0.81086 0.81065 172
2013.01.04 05:00 EURGBP 0.81079 0.81046 0.81080 0.81044 90
Лучший способ получить периодические данные (по моему мнению) - это использовать историю MT4, вы можете скачать и экспортировать (в excel) исторические данные. но если вы хотите переделать этот код для периодических данных, я думаю, это вам подойдет:
//+------------------------------------------------------------------+ //|PeriodicRealTimeDataStream.mq5 | //| Copyright 2013, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2013, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" datetime t1; double arro[1],arrh[1],arrl[1],arrc[1]; string T,O,H,L,C; long arrv[1],V; //+------------------------------------------------------------------+ void OnTick() { t1 = (datetime)SeriesInfoInteger(_Symbol,_Period,SERIES_LASTBAR_DATE); static datetime t0 = t1; //--- получите значения для указанного графика if (t0!=t1) { //--- копирование значений в массивы CopyOpen(_Symbol,_Period,0,1,arro); CopyHigh(_Symbol,_Period,0,1,arrh); CopyLow(_Symbol,_Period,0,1,arrl); CopyClose(_Symbol,_Period,0,1,arrc); CopyTickVolume(_Symbol,_Period,0,1,arrv); //-- T=TimeToString(t1,TIME_DATE|TIME_MINUTES); O=DoubleToString(arro[0],_Digits); H=DoubleToString(arrh[0],_Digits); L=DoubleToString(arrl[0],_Digits); C=DoubleToString(arrc[0],_Digits); V=arrv[0]; //--- выведите значения printf("%s %s %s %s %s %s %d",T,_Symbol,O,H,L,C,V); //--- установите время снова t0=t1; } //--- } //+------------------------------------------------------------------+
если вы хотите экспортировать данные в csv, вы можете использовать функции и переменные файла, как в основном коде
А как насчет тиков, которые вы пропускаете? Вы добавляете что-нибудь в TXT-файл для них? Если нет, то вы не "... сохраняете все тиковые данные о ценах спроса и предложения в txt-файл" .
Вы правы, есть вероятность пропустить котировки из-за способа обработки события NewTick, но код достаточно быстрый, чтобы сделать эту возможность очень маленькой (почти нулевой). если пропущенных тиков больше, чем я думал (что может повлиять на значимость анализа), то это ошибка Ontick(), а не моего кода.
а насчет фразы "... сохраняет все тиковые данные цены спроса и предложения в txt-файл.", я давно это понял и изменил :) теперь там нет "всех", но на форуме все осталось по-прежнему - извините, у меня нет возможности это изменить, я люблю редактировать комментарии, но для этой фразы это невозможно :(
Вы правы, есть вероятность пропустить котировки из-за способа обработки события NewTick, но код достаточно быстрый, чтобы сделать эту вероятность очень маленькой (почти нулевой). если пропущенных тиков больше, чем я думал (что может повлиять на значимость анализа), то это ошибка Ontick(), а не моего кода.
а насчет фразы "...сохраняет все тиковые данные цены спроса и предложения в txt-файл.", я давно это понял и изменил :) теперь там нет "всех", но на форуме все осталось по-прежнему - извините, у меня нет возможности это изменить, я люблю редактировать комментарии, но для этой фразы это невозможно :(
Это не баг, это просто так работает... если OnTick() выполняется в момент прихода нового тика, то новый тик игнорируется...
NewTick
СобытиеNewTick генерируется при появлении новых котировок, оно обрабатывается OnTick() подключенных советников. В случае если при поступлении новой котировки функция OnTick для предыдущей котировки обрабатывается, то новая котировка будет проигнорирована экспертом, так как соответствующее событие не будет занесено в очередь.
Все новые котировки, полученные во время работы программы, будут игнорироваться до завершения работы функции OnTick(). После этого функция будет запускаться только после получения новой котировки.
... Вы проверяли, сколько тиков вы обычно пропускаете?
Это не ошибка, это просто то, как это работает ... если OnTick() выполняется, когда новый тик прибывает, новый тик игнорируется ...
Я запутался, то есть вы считаете, что это способ обработки новых тиков, и я тоже:)
erdogenes:
Вы правы, есть вероятность пропустить кавычки из-за способа обработки события NewTick
RaptorUK:
. ... Вы тестировали, чтобы увидеть, сколько тиков вы обычно пропускаете?
Я не знаю о пропущенных тиках, я получаю то, что получает программа, как я могу рассчитать это? или можно ли это как-то рассчитать?, я не могу знать, сколько тиков пропускает Ontick за день (я не разрабатываю mql5). Я не могу говорить за MetaQuotes. У меня нет прямого доступа к торговому серверу, чтобы сравнить фиды. Я не могу рассчитать это для программы, это не будет изменено, когда программа будет моей, я могу говорить только статистически.
Для вас я отредактировал пример с обработкой данных HF. Я получаю скорость прихода тиков за одну миллисекунду с межбанковскими ставками 27.01.2011 - программа для расчета - Gretl, коды вы можете использовать, а данные отправлены в PM (я не могу поделиться этими данными публично, извините). Результат ~0.003 (это скорость прихода за одну миллисекунду и это был активный день).
Предположим, что данные обрабатываются в MT5 и (абсурдно), что все они (~0.003) отсутствуют. Итак, теряет ли сигнал, который случайным образом ресамплится с частотой ~0.003, какую-либо значимость? Мой ответ - нет. Мы используем ресамплинг с более высокой частотой уже в анализе.
Конечно, это было просто гипотетически, и не от брокера, но я надеюсь, что вы поймете мою мысль. И опять же, у меня нет возможности получить реальное количество пропущенных тиков.
И еще одно: если причиной отсутствия тиков является политика "без очереди" в обработчике события NewTick (а это так), то я думаю, что количество пропущенных тиков может зависеть и от скорости вашего оборудования. Тогда его нельзя будет рассчитать как стандартное значение.
(Я отредактировал комментарий: Я исправил код, который я отправил вам, он был с ошибкой, реальный результат ~0.003 код прилагается)
Я запутался, то есть вы считаете, что это способ обработки новых тиков, и я тоже:)
Возможно, вы неправильно поняли: если пропущенные тики оказывают значительное влияние на анализ, то ontick багнутый, а не нормальный (потому что это обработчик события "новый тик", если он не может обработать достаточно, то он багнутый), но я не думаю, что он не может обработать , я не думаю, что он багнутый.
Я не знаю о пропущенных тиках, я получаю то, что получает программа, как я могу это вычислить? или это можно как-то вычислить?, я не могу знать, сколько тиков пропускает Ontick за день (я не разрабатываю mql5).
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Ask Bid Ticks:
"AskBidTicks" - высокоточный инструмент для анализа микроструктуры рынков в реальном времени.
Он экспортирует тиковые цены в CSV-файл. Имя файла, разделители и временные метки настраиваются. Советник работает с локальным временем компьютера, что позволяет отследить точное время прихода каждого тика.
Ниже приведен пример csv-файла с метками времени с точностью до миллисекунд:
Автор: Erdem Sen