Desenvolvimento profissional x2000x2000 robot forex automatizado, jforex robot, jforex, programador jforex, desenvolvimento jforex, estratégias jforex, estratégia jforex, jforex api, forex, aos, dukas, dukascopy, dukascopy, api, java, java api, programação, programador, negociação algorítmica, Sistema de negociação automática, estratégias de negociação, robô de negociação forex, fábrica de forex, consultores especializados jforex, jforex ea, câmbio, negociação de alta freqüência, indicadores, robôs, jfx, jfx2java, jfx para java, jfx decompile, jfx decompiler, eclipse, corrigir api , Especialista, estratégias, programa, software, sw x2000x2000. A troca de câmbio em margem traz um alto nível de risco e pode não ser adequada para todos. O desempenho passado não é indicativo de resultados futuros. O alto grau de alavancagem pode funcionar contra você, bem como para você. Antes de se envolver em câmbio, você deve considerar cuidadosamente seus objetivos de risco pessoal, nível de experiência e apetite de risco. Existe a possibilidade de que você possa sustentar uma perda de algum ou todo seu depósito inicial e, portanto, você não deve colocar fundos que não pode perder. Você deve estar ciente de todos os riscos associados à negociação cambial e procurar o conselho de um consultor financeiro independente se tiver dúvidas. A informação contida nesta página da web não constitui um conselho financeiro ou uma solicitação para comprar ou vender qualquer contrato de Forex ou títulos de qualquer tipo. A JForexRobot não aceita a responsabilidade por qualquer perda ou dano, incluindo, sem limitação, qualquer perda de lucro, que pode surgir direta ou indiretamente do uso ou dependência de tais informações ou robôs. Os robôs e as informações apresentadas nestas páginas são apenas para fins educacionais e não se destinam a fornecer aconselhamento financeiro. Jforexutils - uma coleção de classes de Java úteis para Jforex - Part3 JForexUtils - Uma coleção de classes java úteis para JForex - Part3 Bem-vindo à terceira parte Da documentação JForexUtils. Caso você perdeu partes anteriores: Parte 1 Parte 2 Todos os links do projeto estão listados no final deste artigo. Nesta parte, abordaremos o contexto muito central de submissão e alteração de pedidos. As ferramentas para essas tarefas são fáceis de usar e podem ser configuradas para cenários complexos. Todos os exemplos podem ser baixados como um arquivo java no ExamplePart3. Class OrderUtil Esta classe importante lida com todas as criações e alterações de pedidos. Na Parte 2, vimos como criar um objeto OrderParams que contém todos os parâmetros para uma ordem. Comece a usar este objeto orderParams para abrir uma nova ordem: 1) Enviar uma nova ordem ao servidor Isso foi bastante fácil com a ajuda do objeto orderParams Na primeira linha, criamos a instância orderUtil e na segunda linha passamos nossa criação anterior OrderParams objetiva o método de envio. Este é o caso de uso mínimo para abrir uma nova ordem. Você pode ter algumas perguntas, porém: Q1 Onde está a ordem criada Q2 E se uma exceção foi lançada onde é e não queremos atrapalhá-lo Q3 E se a submissão foi rejeitada pelo servidor Q4 Posso enviar pedidos em um tópico que É diferente do segmento de estratégia Bem responda todas essas questões em sequência. Como dito anteriormente, este exemplo é mínimo, você pode fazê-lo assim, mas você não sabe se a submissão e aceitação do pedido pelo servidor foi bem-sucedida ou não. A chave é que o método de envio retorna um objeto OrderCreateResult. Este objeto contém informações sobre o estado da submissão da ordem. Vamos ver como podemos ampliar o primeiro exemplo: Linha 1) O método de envio é chamado como antes, mas desta vez exploramos a instância do OrderCreateResult retornada. Linha 2-5) Aqui verificamos se ocorreu uma excpeção e, se assim for, faça um bom tratamento de erros. O objeto resultante fornece um acessador opcional. Linha 6-7) Se nenhuma exceção foi lançada, podemos ter certeza de que a ordem foi criada (mas ainda não foi aberta pelo servidor, pois isso leva algum tempo). Para obter a ordem criada, chamamos orderOpt (). Get () no objeto de resultado que fornece um método Accessor opcional. Como alternativa, você pode usar o método orElse de Opcional para obter a instância da ordem ou nulo se ocorrer uma excpeção. Este é um modo mais curto de recuar a ordem criada, mas é uma questão de gosto o estilo de implementação que você prefere: Aqui verificamos se a ordem é nula e, de outra forma, avaliamos a exceção que está presente no objeto resultante. Para recapitular: a ordem criada e as possíveis exceções podem ser recuadas no objeto OrderCreateResult que lhe dá informações sobre o resultado imediato de uma submissão de pedido. Tudo isso agora deve responder às perguntas Q1 e Q2. Até agora, acabamos de enviar um pedido ao servidor e avaliamos o resultado imediato, mas não nos preocupamos com as respostas do servidor. O JForexUtils monitora todas as chamadas de retorno IMessage e as avalia para ver todas as mensagens relacionadas à ordem. Se quisermos reagir nas respostas do servidor, precisamos aprimorar nossa chamada de envio um pouco mais. Class OrderUtil fornece duas sobrecargas do método de envio que levam objetos de retorno de chamada adicionais. Com essas devoluções de chamada, informamos sobre todas as alterações de pedidos assim que elas estiverem disponíveis, portanto, não há necessidade de esperar bloquear sua linha. Como isso funciona: 2) Enviar ordem ao servidor com objeto de retorno de chamada para notificação de evento de ordem Para receber todos os eventos de pedidos, primeiro Tem que implementar a interface OrderEventConsumer que tem um método vazio onOrderEvent (orderEvent orderEvent final). Heres um exemplo de implementação do OrderEventConsumer que apenas imprime os eventos de pedidos recebidos: você vê que MyEventConsumer implementa OrderEventConsumer e avalia o objeto OrderEvent passado. Este objeto fornece acesso à ordem e a chamada Enumeração OrderEventType enum que representa todos os possíveis eventos de ordem (você deve explorar OrderEventType com seu IDE). Neste exemplo, alteramos o caso do tipo de evento e reagimos após a submissão e preenchimento de pedidos bem sucedidos. Você pode inserir seus manipuladores personalizados aqui ou reagir sobre outros tipos de eventos que você está interessado. Com a ajuda da nossa classe MyEventConsumer, agora podemos enviar o objeto orderParams junto com este manipulador de eventos de ordem: É isso com muito poucas linhas criou um Implementação que é reativa a todos os eventos da ordem em vez de fazer bloqueios feios no segmento de estratégia. Algumas observações: JForexUtils nos obriga a desacoplar a criação de uma ordem a partir da avaliação de eventos de ordem. Isso ajuda na escrita de código que é mais modular e reutilizável (imagine, por exemplo, você precisará da sua implementação do OrderEventConsumer em muitos lugares). Esteja ciente de que a interface OrderEventConsumer possui apenas um método. Isso nos permite passar Java8 lambdas para o método de envio assim que JForex suportará totalmente o Java8 (JForexUtils está pronto para o futuro). Se você não gosta de grandes casos de troca e colocar toda a lógica do evento em um só lugar, existe uma segunda sobrecarga do método de envio que leva um mapa das instâncias do OrderEventConsumer. Essa instância agora informará apenas sobre um evento de ordem específico e manterá a lógica de manipulação pequena. Heres um exemplo que implementa duas versões do OrderEventConsumer: img class src Agora, podemos criar um mapa que define quais eventos de ordem serão encaminhados para qual instância do OrderEventConsumer: img class src Aqui nós definimos que um tipo de evento SUBMITOK será forçado ao SubmitHandler Instância e o tipo de evento SUBMITREJECTED será forwared para a instância SubmitRejectHandler. Este é o controle mais fino que podemos reagir nos tipos de eventos de pedidos e todas essas coisas agora devem responder a pergunta Q3. Então, no caso de threading, você pode detectar a diferença. Não há diferença, você não precisa obedecer nada ao trabalhar com a classe OrderUtil em diferentes threads. Você apenas envia seu pedido e esquece as coisas complexas que o Dukascopy Wiki descreve aqui. Não há necessidade de criar taks chamáveis, sem necessidade de ligar para o IEngine, tudo isso é feito para você nos bastidores e, portanto, responde a nossa última pergunta Q4. --------------------------------------- Isto é para a parte 3 da série de artigos. Nós cobrimos muito terreno com a classe OrderUtil para ver como enviar um pedido. Na próxima parte 4, continuaremos neste caminho e veremos como todas as outras operações de pedidos, como fundir, definir SLTP etc., então fique atento
No comments:
Post a Comment