Olá, você pode fazer o equivalente em Bar M5 M15 H1 H4
Olá,
Time Symbol 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
Olá,
Time Symbol 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
A melhor maneira de obter dados periódicos (de acordo com minha opinião) é usar o histórico do MT4; você pode fazer download e exportar (para o Excel) os dados históricos:
//+------------------------------------------------------------------+ //|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; //--- obter valores para o gráfico especificado if (t0!=t1) { //--- copiar valores para matrizes 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]; //--- saída dos valores printf("%s %s %s %s %s %s %d",T,_Symbol,O,H,L,C,V); //--- definir a hora novamente t0=t1; } //--- } //+------------------------------------------------------------------+
se quiser exportar para csv, você pode usar as funções e variáveis de arquivo como no código principal
E quanto aos ticks que você perde? Você adiciona alguma coisa no arquivo TXT para eles? Se não o fizer, então você não está ". . . armazenando todos os dados tick-by-tick dos preços de compra e venda em um arquivo txt."
Você está certo de que existe a possibilidade de faltarem cotações devido à forma de tratamento do evento NewTick, mas o código é rápido o suficiente para tornar essa possibilidade muito pequena (quase nula). Se os ticks faltantes ocorrerem mais do que eu pensava (o que pode afetar a significância da análise), então Ontick() está com um bug, não meu código.
E sobre a frase ". . . armazena todos os dados tick-by-tick dos preços de compra e venda em um arquivo txt.", eu percebi isso há muito tempo e a alterei :) não há mais o "all", mas no fórum ele permaneceu o mesmo - desculpe-me por não poder alterá-lo, eu gosto de reeditar os comentários, mas é impossível para essa frase :(
Você está certo de que existe a possibilidade de faltarem cotações devido à forma de tratamento do evento NewTick, mas o código é rápido o suficiente para tornar essa possibilidade muito pequena (quase nula). Se os ticks faltantes ocorrerem mais do que eu pensava (o que pode afetar a significância da análise), então Ontick() está com um bug, não meu código.
E sobre a frase ". . . armazena todos os dados tick-by-tick dos preços de compra e venda em um arquivo txt.", eu percebi isso há muito tempo e a alterei :) não há mais o "all", mas no fórum ele permaneceu o mesmo - desculpe-me por não poder alterá-lo, eu gosto de reeditar os comentários, mas é impossível para essa frase :(
Não é um bug, é apenas como funciona... se OnTick() estiver sendo executado quando um novo tick chegar, o novo tick será ignorado...
NewTick
O eventoNewTick é gerado se houver novas cotações e é processado pelo OnTick() dos Expert Advisors anexados. Caso a função OnTick da cotação anterior esteja sendo processada quando uma nova cotação for recebida, a nova cotação será ignorada por um Expert Advisor, pois o evento correspondente não será enfileirado.
Todas as novas cotações recebidas enquanto o programa estiver em execução serão ignoradas até que a função OnTick() seja concluída. Depois disso, a função será executada somente depois que uma nova cotação for recebida.
Você já testou para ver quantos ticks você normalmente perde?
Não é um bug, é apenas o modo como funciona... se OnTick() estiver sendo executado quando um novo tick chegar, o novo tick será ignorado...
Estou confuso, então você acha que essa é a maneira de lidar com o novo tique e eu também:)
erdogenes:
Você está certo, existe a possibilidade de perder as aspas devido à forma de tratamento do evento NewTick
RaptorUK:
. . você testou para ver quantos ticks você normalmente perde?
Não sei o que são ticks perdidos, eu obtenho o que o programa obtém, como posso calculá-los? ou podem ser calculados de alguma forma? não sei quantos ticks o Ontick perde em um dia (não estou desenvolvendo o mql5). Não posso falar sobre a MetaQuotes. Não tenho acesso direto a um servidor de negociação para comparar os feeds. Não posso calcular isso para um programa, pois isso não será alterado quando o programa for meu, só posso falar estatisticamente.
Para você, editei um exemplo com o processamento de dados de HF. Obtenho a taxa de chegadas de ticks no mesmo milissegundo com as taxas interbancárias de 27.01.2011 - o programa para cálculo é o Gretl, os códigos que você pode usar e os dados são enviados por PM (não posso compartilhar esses dados publicamente, desculpe). o resultado é ~0,003 (é a taxa de chegadas no mesmo milissegundo e foi um dia ativo).
Vamos supor que os dados sejam tratados no MT5 e (absurdamente) que todos eles (~0,003) estejam faltando. Então, um sinal que foi reamostrado aleatoriamente com uma taxa de ~0,003 perde alguma significância? Minha resposta é não. Já usamos reamostragem com taxas mais altas na análise.
É claro que foi apenas uma hipótese, e não de um corretor, mas espero que você entenda meu argumento. E, novamente, não tenho condições de obter o número real de ticks ausentes.
E mais uma coisa: se for a política "sem fila" do manipulador de eventos NewTick que causa os ticks ausentes (e é), acho que o número de ticks ausentes também pode depender da velocidade de seu hardware. Então, ele não pode ser calculado como um valor padrão.
(Reeditei o comentário: Corrigi o código que enviei a você, ele estava com um bug, o resultado real é ~0,003, o código está incluído)
Estou confuso, então você acha que é a maneira de lidar com o newtick e eu também:)
Talvez você tenha entendido errado: se a falta de ticks tiver um efeito significativo na análise, então o Ontick está com um bug, não normalmente (porque ele é o manipulador de eventos de "novo tick", se não puder lidar com o suficiente, está com um bug), mas não acho que ele não possa lidar com isso, não acho que esteja com um bug.
Não sei sobre os ticks perdidos, obtenho o que o programa obtém, como posso calculá-los? ou podem ser calculados de alguma forma? não posso saber quantos ticks o Ontick perde em um dia (não estou desenvolvendo o mql5).
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Ask Bid Ticks:
"AskBidTicks" é uma solução de alta precisão para dados de tick em tempo real com a finalidade de análise da microestrutura.
Ele exporta preços tick a tick para um arquivo CSV e fornece opções para nome de arquivo, delimitadores e data-hora. Ele funciona com o tempo do computador local para o tempo de chegada de cada tick em alta precisão. No início do programa, o caminho do arquivo completo também é mostrado na "caixa de ferramentas" - guia "Experts":
Abaixo há um tabela com exemplo de saída da amostra do arquivo csv com tempo data-hora também em milissegundos:
Autor: Erdem Sen