Discussão do artigo "Desenvolvendo um sistema de Replay - Simulação de mercado (Parte 23): FOREX (IV)"

 

Novo artigo Desenvolvendo um sistema de Replay - Simulação de mercado (Parte 23): FOREX (IV) foi publicado:

A criação, agora, é efetuada no mesmo ponto que fazemos a conversão dos tickets em barras. Então se algo vim a dar errado durante a conversão, iremos logo notar o erro. Pois o mesmo código que lança as barras de 1 minuto no gráfico, quando fazemos um avanço rápido, também é utilizando pelo sistema de posicionamento, e também é usado para lançar as barras durante o avanço normal. Ou seja, agora o código responsável por tal tarefa, não esta mais sendo duplicado em ponto algum. Desta forma, já temos um sistema bem mais adequado, tanto para manutenção, quanto para melhorias.

No artigo anterior Desenvolvendo um sistema de Replay - Simulação de mercado (Parte 22): FOREX (III), fizemos algumas modificações no sistema, a fim de conseguir fazer com que o simulador consiga gerar informações baseadas no BID, e não apenas no LAST. Mas estas mudanças não me deixaram satisfeito, e o motivo é simples: Estamos duplicando código. O fato de que esta duplicação esteja acontecendo não me deixa nada confortável.

Mas como o código já estava fechado para o artigo, e o mesmo também já estava quase pronto. Deixei a coisa como estava. Mas aquilo estava me incomodando e muito. Já que não faz sentido o código funcionar em determinadas situações e não funcionar em outras. E mesmo fazendo um debug do código, tentando encontrar o motivo da falha, não estava de fato conseguindo encontrar o motivo. Mas ao ignorar o código por uns momentos e observar o fluxograma do sistema, ( e sim você deve sempre tentar fazer uso de um fluxograma para agilizar a codificação ), notei que poderia fazer algumas mudanças de forma a evitar que o código fosse duplicado. E para piorar a coisa toda, o código estava mesmo sendo duplicado. Por conta disto existia a tal falha, que eu pessoalmente não conseguia resolver. Mas existe uma solução, e vamos começar este artigo resolvendo este problema. Já que o fato de ele existir pode vim a inviabilizar uma correta codificação do simulador, para que este seja capaz de lidar com os dados de mercado do tipo encontrados no FOREX.

Autor: Daniel Jose

 

Olá caro Daniel,

Parabéns por este grande sistema que você projetou.

Encontrei alguns problemas ao testar seu sistema e preciso da sua ajuda.

A primeira coisa é que salvei os dados do tick por um mês e coloquei para reprodução. No entanto, no TimeFrame de 1 minuto para o replay em um mês com a mudança do pino no controle deslizante, o número de velas mostradas não corresponde à posição do pino no controle deslizante, mostrei isso no vídeo em anexo. Levei o pino até o final, mas as velas só se repetem por um pequeno número de barras de 1 minuto (cerca de 20 barras).

A segunda coisa é que eu preciso mudar esse sistema de forma que a forma como as barras se movem seja como o Strategy Tester, ou seja, a posição do pino representa a velocidade de exibição das barras, ou eu tenho a possibilidade de mover barra a barra como o site TradingView. O seu sistema está de tal forma que pode ser alterado desta forma????

Agradeceria se pudesse me orientar.

Respeitosamente,

Arquivos anexados:
Part_23.gif  811 kb
 
Philip Tweens #:

Olá caro Daniel,

Parabéns por este grande sistema que você projetou.

Encontrei alguns problemas ao testar seu sistema e preciso da sua ajuda.

A primeira coisa é que salvei os dados do tick por um mês e coloquei para reprodução. No entanto, no TimeFrame de 1 minuto para o replay em um mês com a mudança do pino no controle deslizante, o número de velas mostradas não corresponde à posição do pino no controle deslizante, mostrei isso no vídeo em anexo. Levei o pino até o final, mas as velas só se repetem por um pequeno número de barras de 1 minuto (cerca de 20 barras).

A segunda coisa é que eu preciso mudar esse sistema de forma que a forma como as barras se movem seja como o Strategy Tester, ou seja, a posição do pino representa a velocidade de exibição das barras, ou eu tenho a possibilidade de mover barra a barra como o site TradingView. O seu sistema está de tal forma que pode ser alterado desta forma????

Agradeceria se pudesse me orientar.

Respeitosamente,

Ok. Vamos por partes como diria JACK ...😁👍

Você talvez esteja muito confuso sobre esta aplicação, ou melhor, talvez esteja esperando que esta aplicação venha a servir para algo, na qual ela de fato não foi pensada para ser utilizada em principio. Não estou dizendo que ela não possa ser usada para algo em particular, como por exemplo um testador de estratégia. Mas este não foi o objetivo inicial para que ela viesse a ser implementada. 

Sobre a primeira questão: Você talvez não tenha compreendido de fato como o replay / simulação acontecerá. Esqueça por um momento o controle deslizante. Quando você der play no sistema, ele irá buscar dos dados que foram carregados, seja como ticks ou barras e os irá apresentar como barras no gráfico, tendo como base o tempo de 1 minuto. Isto independente do tempo gráfico que você deseja usar. Por isto os dados, que devem estar no arquivo, deve ser pensados como barras de 1 minuto. Você não deve olhar os dados do arquivo, como sendo dados individuais. Pois esta aplicação não os vê desta maneira. Ela sempre interpretará as barras mesmo barras de duas horas como sendo barras de 1 minuto. Sempre.

Caso você esteja utilizando barras, a aplicação irá automaticamente notar isto, e criará uma simulação de forma que cada uma das barras tenha aproximadamente 1 minuto de duração. Criando para isto quantos ticks forem necessários para que os valores sejam corretamente plotados no gráfico. Se os dados presentes no arquivo, forem ticks, o sistema irá lançar cada um dos ticks no intervalo, aproximado, que estiver definido entre eles, Veja os artigos anteriores para compreender isto. Tal intervalo pode variar de poucos milisegundos até várias horas. Mas ao fazer isto, qualquer coisa que estiver no intervalo será tratado como sendo leilão ou uma suspensão de negociação. Assim, se você usar dados com intervalo superior a um dia, ou seja 24 horas, a aplicação muito provavelmente não irá conseguir reconhecer as barras de forma adequada. Isto caso você faça uso do controle deslizante para procurar um novo ponto de estudo. Por isto, deve-se evitar usar dados com um tempo maior que um dia.

Lembre-se a aplicação foi pensada para ser usada em um tempo equivalente a um tempo real. Ou seja períodos curtos. Para entrar com períodos longos no estudo. No caso de precisar usar alguma média ou indicador que necessite de muitas barras terem sido plotadas. Você NÃO DEVE usar os dados no replay ou simulador. Você os deve colocar como sendo barras prévias. Este é o primeiro ponto que você deve procurar entender.

Já sobre a segunda questão: Você imagina que o controle deslizante irá buscar um ponto específico. De fato ele faz isto, mas não da forma como você esteja querendo ou imaginando. Para entender melhor, veja os artigos anteriores, onde o controle foi implementado. Lá você verá em detalhes como de fato ele faz para buscar uma determinada posição. Mas nesta mesma questão, você está confundindo o uso do controle. Já que você também levanta a ideia de que ele talvez serva para modificar a velocidade na plotagem das barras. Isto de fato não acontece, de forma alguma. A tal plotagem que você nota, ao arrastar o controle e logo depois pressionar o botão de play, em isto em uma velocidade maior. É na verdade uma ilusão criada pela aplicação. Para mostrar como as barras foram criadas até o ponto em que você indicou para a simulação ou replay ter inicio, a fim de você poder executar o seu estudo.

Minha sugestão é: Leia com calma os artigos anteriores, e na dúvida pode postar como comentário. Pois ficará bem mais fácil de você entender o que de fato está acontecendo e como você pode usar a aplicação tendo uma boa experiência de uso. Qualquer dúvida pode perguntar nos comentários ... 😁👍

 
daniel jose # :

Okay. Let's break it down as JACK would say...😁👍

Perhaps you are very confused about this application, or rather, perhaps you are hoping that this application will come to serve something, which in fact it was not intended to be used in principle. I'm not saying that it can't be used for something in particular, like for example a strategy tester. But this was not the initial objective for it to be implemented. 

About the first question: You might not have really understood how the replay / simulation will happen. Forget about the slider for a moment. When you press play on the system, it will fetch the data that has been loaded, either as ticks or bars, and will display them as bars on the chart, based on a time of 1 minute. This is independent of the timeframe you want to use. For this reason, the data, which must be in the file, must be thought of as bars of 1 minute. You should not look at file data as individual data. Because this application doesn't see them that way. It will always interpret bars even two hour bars as being 1 minute bars. Always .

If you are using bars, the application will automatically notice this, and will create a simulation so that each of the bars is approximately 1 minute long. Creating as many ticks as necessary for the values ​​​​to be correctly plotted on the chart. If the data present in the file are ticks, the system will record each of the ticks in the approximate interval that is defined between them. See previous articles to understand this. Such an interval can vary from a few milliseconds to several hours. But by doing this, anything that is in range will be treated as either an auction or a trading hold. Thus, if you use data with an interval of more than one day, that is, 24 hours, the application most likely will not be able to recognize the bars properly. This is if you use the slider to look for a new study point. Therefore, one should avoid using data with a time greater than one day.

Remember the application was thought to be used in a time equivalent to real time. In other words, short periods. To enter with long periods in the study. In case you need to use some average or indicator that needs many bars to be plotted. You MUST NOT use the data in the replay or simulator. You must place them as prebars. This is the first point you should try to understand.

Now about the second question: You imagine that the slider will look for a specific point. Indeed it does, but not in the way you might want or imagine. To better understand, see the previous articles, where the control was implemented. There you will see in detail how he actually does to seek a certain position. But in this same question, you are confusing the use of the control. Since you also raise the idea that it maybe serves to modify the speed in plotting the bars. This actually doesn't happen at all. Such a plot that you notice, when dragging the control and then pressing the play button, in this at a higher speed. It is actually an illusion created by the application. To show how the bars were created up to the point where you indicated that the simulation or replay should start,

My suggestion is: Read the previous articles calmly, and if in doubt, post them as a comment. Because it will be much easier for you to understand what is actually happening and how you can use the application having a good user experience. Any questions you can ask in the comments... 😁👍

Acho que você não entendeu o que eu quis dizer e provavelmente me expressei mal.
Eu entendo a função do controle deslizante. Coloquei os dados no Replay por um mês (cerca de 20 dias). No entanto, aproximei o pino do final do controle deslizante, mas apenas algumas barras foram desenhadas no primeiro dia, quando deveria ter passado pelo menos 15 dias antes de atingir o ponto desejado. Eu entendi errado??? Imagino que seja por causa do que você disse para não usar mais do que um dia de dados.
Em relação à velocidade de exibição das barras, queria que você me orientasse a alterar o sistema dessa maneira.
Obrigado pela sua resposta.
 
Philip Tweens #:
Acho que você não entendeu o que eu quis dizer e provavelmente me expressei mal.
Eu entendo a função do controle deslizante. Coloquei os dados no Replay por um mês (cerca de 20 dias). No entanto, aproximei o pino do final do controle deslizante, mas apenas algumas barras foram desenhadas no primeiro dia, quando deveria ter passado pelo menos 15 dias antes de atingir o ponto desejado. Eu entendi errado??? Imagino que seja por causa do que você disse para não usar mais do que um dia de dados.
Em relação à velocidade de exibição das barras, queria que você me orientasse a alterar o sistema dessa maneira.
Obrigado pela sua resposta.

Para modificar a velocidade é muito simples. Basta você ir na classe C_Replay, procurar a função LoopEventOnTime. Nela existe uma chamada Sleep. É neste ponto em quem controlamos a velocidade de plotagem, quando estamos no modo play. Mas acredito que isto tenha sido adequadamente explicado nos artigos anteriores.

 
Daniel Jose #:

Para modificar a velocidade é muito simples. Basta você ir na classe C_Replay, procurar a função LoopEventOnTime. Nela existe uma chamada Sleep. É neste ponto em quem controlamos a velocidade de plotagem, quando estamos no modo play. Mas acredito que isto tenha sido adequadamente explicado nos artigos anteriores.

Não, quero alterar a maneira como o controle deslizante se comporta. Em vez da posição do pino ser igual à posição de um ponto específico, ele representa a velocidade com que as barras são exibidas para o replay em tempo longo. Semelhante ao que vemos no testador de estratégia.
Obrigado.