Jforex api reference style
Tendo estudado a anatomia de uma estratégia JForex vazia (Parte 1 e Parte 2), é hora de dissecar uma estratégia de trabalho. O MAPlay é a estratégia incluída em cada download da API do JForex como uma demonstração. Você pode encontrar o código-fonte completo desta estratégia em / src / singlejartest / no pacote compactado da API do JForex. Lembre-se de que o primeiro método de interface que é executado no início da estratégia é onStart. O método onStart do MAPlay é reproduzido abaixo. O mecanismo de variáveis. indicadores. e console são campos da classe MAPlay. Eles são variáveis globais dentro da classe. O que as linhas 42--44 fazem é salvar o IEngine. IIndicadores. e IConsole objetos para uso posterior. A última linha do onStart, linha 45, é simplesmente imprimir uma mensagem no console do programa JForex para notificar o usuário de que a estratégia foi iniciada. Uma vez que o onStart tenha terminado o processamento, o servidor provavelmente chamará onTick se um tick do mercado chegar. Se não é durante as horas de mercado, então não há tick e algum outro evento pode acontecer em vez de onTick. Pense nos métodos como eventos e não como um processo linear. Você programa sua estratégia JForex de acordo com o que deseja fazer com cada um dos seis eventos da IStrategy Interface. Para esta estratégia em particular, o programador decide implementar sua estratégia no nível do tick. Como tal, muito do algoritmo de negociação reside no onTick for MAPlay. Note que esta é uma opção de design, você pode usar onBar se quiser que sua estratégia seja processada no nível da barra (ou você pode usar onTick e onBar). Heres o código-fonte para onTick no MAPlay. De relance, você pode notar que as variáveis ma0 e ma1 desempenham um papel fundamental na determinação da configuração. Dica: para fazer engenharia reversa de uma estratégia, pode ser mais fácil retroceder a partir do momento em que o pedido é feito, o que é feito por engine. submitOrder neste caso. ma0 e ma1 mantêm resultados de médias móveis exponenciais (EMA). ma0 é o valor atual. ma1 é o valor das barras anteriores. As linhas 56--63 verificam usando testes IF (linhas 56 e 60) para ver se alguma das variáveis contém dados inválidos. Se os dados forem inválidos, o indicador é calculado e o restante do onTick é ignorado com a instrução de retorno na linha 62. Observação: os valores dos indicadores podem, às vezes, ser inválidos (zero, negativo ou duplo. Dependendo da implementação do indicador em particular). ) se houver dados insuficientes para calculá-lo ou se ocorreu um erro, por exemplo. Os EMAs são buscados nas linhas 57 e 59 usando o objeto IIndicators (que foi inicializado no onStart). O Wiki JForex fornece uma explicação de seu uso. Observe que ma1 é uma matriz, que foi declarada na linha 38 com um tamanho equivalente ao número de todos os instrumentos JForex disponíveis. Em particular, é usado com um valor de índice especial como em ma1instrument. ordinal (). Em outras palavras, ele está pedindo o slot de instrumentos atual no array ma1. O instrumento atual é aquele que é passado para o método na linha 55. Movendo para baixo o código, outro ponto de interesse é a linha 65, mostrando o uso de instrument. getPipValue (). A linha 67 verifica se o número total atual de posições é zero. Se estiver, ou seja, sem posição aberta, a estratégia prossegue para verificar o sinal de entrada para entrar em uma negociação (linhas 68--76). positionsTotal () é um método personalizado definido nas linhas 84--92. Ele usa um loop FOR para percorrer todos os pedidos obtidos de engine. getOrders (instrumento) Uma vez que a condição longa ou curta, linhas 68 e 72, respectivamente, é atendida, a estratégia submete um pedido nas linhas 69 para um curto e linha 73 por um longo. Os detalhes do envio de ordens de mercado são descritos no Wiki do JForex. Quando você interrompe essa estratégia, onStop (linhas 48--53) é chamado. Para esta estratégia, o programador percorre novamente todas as ordens usando engine. getOrders () e fecha cada uma das posições com um comando order. close () na linha 50. Isso é para essa estratégia trivial. Se há um ponto que você deve se lembrar. Note meu uso dos muitos links para o JForex javadoc e JForex Wiki ao longo deste post. É provável que você encontre muitas de suas respostas dessas duas fontes. Se não, há sempre o JForex Support Board. Agora que você teve uma idéia de como o MAPlay. java funciona, é hora de testá-lo. No próximo post em janeiro, discutiremos o JForex Historical Tester e o que observar ao executar uma estratégia ao vivo. Analisamos quatro dos seis métodos na Interface IStrategy em um post anterior. Os dois últimos métodos, onTick e onBar, são onde sua estratégia se conecta aos dados do mercado. Qualquer um desses métodos, ou ambos, é onde você coloca seu algoritmo de negociação. Sua estratégia poderia, então, processar os dados de mercado à medida que chegam a um tick / bar de cada vez. Lembre-se que o IStrategy Interface é o esqueleto da sua estratégia. E esse objeto IContext é o coração da sua estratégia. onTick / onBar é a cabeça da sua estratégia, que contém o seu algoritmo de negociação, que é o cérebro. onTick Heres a definição do método onTick. Importante: onTick é chamado para todo e qualquer instrumento que sua plataforma JForex esteja inscrita (a lista de instrumentos em sua caixa de espaço de trabalho). Deixe-me dizer isso novamente, onTick é chamado para cada instrumento que sua plataforma JForex está inscrita. A prática padrão é filtrar os carrapatos para instrumentos que você não quer com uma instrução IF-return simples. if (instrument myInstrument) return Os dados reais do tick passam para a sua estratégia usando o objeto ITick do parâmetro onTick methods. Dê uma olhada na entrada do javadoc do ITick para ver o que ela oferece. onBar onBar funciona de maneira semelhante ao onTick. Em que onBar é chamado para cada instrumento e período subentendidos conhecidos pelo JForex. Da mesma forma, você tem que filtrar todos os instrumentos e períodos indesejados, ou então haverá resultados esperados de sua estratégia. Outro ponto a ser observado é que o onBar oferece tanto um IBar askBar quanto um IBar bidBar, representando as barras ask e bid. Pergunta: O que acontece quando dois ou mais períodos se sobrepõem como em 13:45 1, 5 e 15 minutos barras estão chegando ao mesmo tempo (para não mencionar os períodos em segundos também). Resposta: De acordo com o Dukascopy Support no fórum, eles vêm em uma ordem estrita, por exemplo (1min 1min 1min 1min 1min 5min 1min 1min 1min 1min 1min 1min 5min) Eles vêm em ciclos, onde períodos menores vêm em primeiro lugar. JForex Support Forum Ao programar sua estratégia com a JForex, você sem dúvida terá suas próprias dúvidas. O melhor lugar para perguntar é no Fórum de Suporte oficial da JForex. Este é o último dos três recursos essenciais do JForex que eu aludi anteriormente. Mesmo que você não tenha nenhuma pergunta específica, existem códigos de amostra, discussão de codificação e centenas de QampA existentes de outros desenvolvedores JForex postados no fórum. Resumo A discussão até agora tem sido um nível muito alto. Para mostrar o que você realmente pode fazer em uma IStrategy, vamos dissecar uma estratégia de trabalho no próximo post. E o que é melhor examinar do que a estratégia JForex mais popular de todos eles - o MAPlay. java. Continuando a partir da Parte 1 desta série: Introdução à programação do JForex. agora estavam prontos para discutir a coisa real. Você constrói estratégias JForex usando a Interface IStrategy (O que é uma interface). Basicamente, uma interface é um esqueleto de código com um conjunto de métodos vazios predefinidos que você precisará implementar. Os seis métodos padrão da Interface IStrategy são: Abaixo está uma implementação da IStrategy Interface vazia, também conhecida como estratégia JForex. Este código irá compilar bem no JForex e você pode até executá-lo. Mas isso não faz nada porque não há código para executar em cada um dos métodos. Cada um dos seis métodos será chamado e sairá imediatamente. Cada um dos métodos é acionado por um evento específico. Você provavelmente pode adivinhar o que eles são de seu nome. onStart (linha 5) Este é o primeiro método que é chamado quando você executa sua estratégia. Ele será executado uma vez e apenas uma vez no início da sua estratégia. Normalmente você faz sua inicialização aqui. A coisa a observar para onStart está na linha 5 do código. A assinatura do método onStart é O objeto no parâmetro e dado a você neste método é um objeto IContext. Se IStrategy é o esqueleto, então IContext é o coração da estratégia. Por favor, dê uma olhada neste link javadoc para IContext para ver o que este objeto faz. Javadoc. Agora é um bom momento para apresentar o segundo dos três recursos essenciais de um programador JForex. O JForex Javadoc é a documentação de API mais atualizada que explica todos os objetos e métodos da API JForex. Pense nisso como um manual de referência. Note que, embora seja abrangente, a maior parte da explicação é muito esparsa e possivelmente incompleta. O IContext é um objeto central do JForex para acessar muitos componentes importantes do sistema JForex, como o mecanismo de pedidos, gráficos, console, indicadores. Você entendeu a ideia. É importante que você normalmente queira manter uma cópia local, já que esta é a única vez (em onStart) que este objeto será passado para você na IStrategy. onStop (linha 26) Como o nome sugere, esse método é chamado assim que você envia um comando de parada para sua estratégia. Você faz o seu resumo do programa, como registrar e liberar dados aqui. Não muito fora do comum com este. onMessage (linha 18) Considerando que sabemos quando onStart e onStop serão chamados, onMessage é um método assíncrono em que você não sabe exatamente quando será executado. Esse método é chamado quando o servidor Dukascopy envia uma mensagem à sua estratégia. Por exemplo, o servidor chama onMessage para informar que seu pedido foi preenchido. Você recebe e processa a mensagem do servidor acessando o objeto IMessage que é passado para você. Importante: Não há garantia de que você receberá todas as mensagens enviadas para sua estratégia do servidor. Talvez o seu processo de estratégia esteja entupido. Ou talvez sua conexão com a Internet tenha sido um soluço. Se a sua estratégia onMessage não for chamada pelo servidor por qualquer motivo, o servidor não poderia se importar menos e não irá verificar ou tentar novamente. Portanto, não faça nada de crítico, como gerenciar seus pedidos em onMessage onAccount (linha 22). Esse método é chamado sempre que a atualização de informações de sua conta é recebida. O método fornece acesso ao objeto IAccount. que você usa para obter as informações da sua conta. Digamos que, se você tiver uma posição aberta, as informações da sua conta serão alteradas a cada tique porque seu patrimônio é lucro / perda não realizado em dinheiro. Nesse caso, onAccount é chamado a cada 5 segundos pelo servidor, no máximo, para evitar inundar sua estratégia. Mais Importante: O objeto IAccount não está conectado ao vivo em sua conta no servidor. É apenas um instantâneo da sua conta. Por exemplo, se você mantiver uma cópia local de um objeto IAccount. Faça alguma negociação para alterar seu saldo. Em seguida, peça a mesma IAccount para obter informações sobre o saldo da conta, você não verá uma alteração. Como tal, atualize sempre a sua cópia local da IAccount dentro do método onAccount para manter as informações da sua conta atualizadas para o uso da sua estratégia. Os métodos onStart, onStop, onMessage e onAccount são métodos administrativos para sua estratégia. Os dois últimos métodos que bem discutem, onTick e onBar, são onde a mágica acontece em uma estratégia. Estou guardando o melhor para o final no próximo post. O maior problema que tive quando aprendi a programar minhas próprias estratégias de negociação no JForex é encontrar onde começar a aprender. Havia poucas documentações da JForex disponíveis na época e tive que me ensinar por meio de tentativa e erro com a ajuda do suporte técnico da Dukascopys. As coisas certamente mudaram para melhor, já que uma comunidade JForex está começando a brotar e a documentação, pelo menos, é suficiente para começar alguém. Este post é o primeiro de uma série de guia rápido de iniciantes para aprender programação JForex, colocando todos esses recursos em um tutorial. JForex é uma ferramenta Java JForex não é realmente uma linguagem de programação. É uma interface de programação de aplicativos (API) para uso com a linguagem de programação Java padrão. Como tal, o primeiro passo para aprender a programar no JForex é aprender Java. Felizmente, o Java é uma das linguagens de programação mais populares. Há muitos recursos dentro e fora da web para aprender programação Java. Alguns exemplos de tutoriais on-line gratuitos são: The Java Tutorials - Este é um tutorial oficial do próprio desenvolvedor Java. Altamente recomendado. Beginners Java Tutorial - Mais voltado para iniciantes na programação. Se você preferir um livro, eu recomendaria Head First Java, 2nd Edition. Eu escovei meu Java deste livro. Não pense muito em Java, pois você só precisa saber o básico para começar a usar o JForex. Basta ler alguns capítulos para entender a sintaxe Java e seguir em frente. Você sempre pode se referir a eles mais tarde. Mergulhando no JForex O Wiki do JForex é um dos três recursos essenciais para os programadores do JForex. Vou me referir a algumas páginas específicas do Wiki em grande parte desta série de posts. Se ainda não o fez, inscreva-se para uma conta DEMO na Dukascopy. Em seguida, inicie a plataforma JForex e siga as instruções na página Wiki Use in JForex para montar sua primeira estratégia JForex Resumo Até agora, tudo bem. Até este ponto, espero que você possa entender o código fonte Java básico e saber como iniciar / abrir, compilar, e executar uma estratégia JForex. No próximo post desta série de aprendizado da JForex, estudaremos a anatomia de uma estratégia JForex. API JForex A API JForex fornece a possibilidade de desenvolver aplicativos de software personalizados usando a linguagem de programação Java. A biblioteca do cliente da API pode ser vinculada aos sistemas do cliente. Comunica-se diretamente com os servidores de negociação do Dukascopy Bank sobre sessões de Internet seguras e autenticadas. Não é necessário executar a plataforma JForex ao mesmo tempo, mas a plataforma pode ser usada para monitorar em tempo real quaisquer ações tomadas por um sistema de clientes. Para começar a trabalhar com o Kit de Desenvolvimento de Software JForex (JForex SDK), faça o download e importe-o em um Ambiente de Desenvolvimento Integrado Java (IDE) de sua escolha: O JForex SDK contém exemplos de: estratégia em execução com back-testing de estratégia de dados ativos Testando no modo visual A visão geral do SDK do JForex descreve como modificar e aprimorar esses casos de uso. Para desenvolvimento de estratégia, comece com a visão geral da API de estratégia. As dependências mais recentes do JForex SDK sempre podem ser encontradas no repositório público do Dukascopy Maven. o que significa que é possível configurar seu projeto para sempre usar a versão mais recente da API do JForex. Mantenha-se atualizado com os últimos desenvolvimentos da API da Jforex e assine os e-mails automáticos da nota de lançamento da Jforex API. Além disso, não se esqueça de verificar nosso fórum de suporte à API onde todas as versões da API do Jforex são publicadas e discutidas. Quick AnswersReferences Websites Para obter uma referência a um website em texto, a URL é suficiente. Nenhuma entrada de lista de referências é necessária. Gussie Fink-Nottle criou um fórum de discussão para newt fanciers (gfnnfg. livejournal /). No entanto, quando você está citando um documento específico ou uma informação de um site, inclua uma entrada da lista de referência e uma citação no texto. A chave para criar a entrada da lista de referência é determinar o tipo de conteúdo na página da web. Basicamente, forneça as seguintes quatro informações: Autor, A. (data). Título do documento Descrição do formato. Retirado de xxxxxxxxx A citação no texto inclui o autor e a data (Autor, data), como em qualquer outra citação do estilo APA. Publication Manual (6a ed. Seção 6.32, pp. 189192 Capítulo 7, Exemplos 29, 30, 54, 55, e 76, pp. 198215) Do site APA Style: Do blog de estilo APA: citações no texto no texto citações consistem no sobrenome do (s) autor (es) e no ano de publicação. Se não houver autor, use o título (ou uma forma abreviada do título, se for longo) e o ano. Títulos que estão em itálico na lista de referências estão em itálico em títulos de texto que não estão em itálico na lista de referências aparecem entre aspas. Se não houver data, use n. d. (sem aspas) em vez disso. Publication Manual (6th ed. Sections 6.016.21, pp. 169179) Do site APA Style: Do blog de estilo APA: E-Books A entrada da lista de referência para um e-book inclui o autor, data, título e fonte ( URL ou DOI). Para um capítulo em um e-book, inclua o título do capítulo e os números das páginas (se disponíveis). Autor, A. (data). Título do livro. Retirado de xxxxxxxxx Autor, A. (data). Título do livro. doi: xxxxxxxxxxxx Autor, A. (data). Título do capítulo. Em E. Editor (Ed.), Título do livro (pp. Xxxx). Retirado de xxxxxxxxx Autor, A. (data). Título do capítulo. Em E. Editor (Ed.), Título do livro (pp. Xxxx). doi: xxxxxxxxxx A citação no texto inclui o autor e a data, como em qualquer outra citação do estilo APA. Publication Manual (6th ed. Section 7.02, pp. 202205) Do blog do estilo APA: Entrevistas A citação de entrevistas depende da natureza da entrevista. Entrevistas de terceiros: Se a entrevista estiver em uma forma recuperável (por exemplo, uma gravação, transcrição, publicação da QampA), use o formato de referência apropriado para a fonte na qual a entrevista está disponível. Entrevistas informativas: Se você entrevistou alguém para obter informações sobre seu tópico e essa pessoa concordou em ser identificada como uma fonte, cite a fonte como uma comunicação pessoal (somente em texto): (G. Fink-Nottle, comunicação pessoal, 5 de abril , 2011) As comunicações pessoais não têm entradas na lista de referências porque não podem ser recuperadas. Entrevistas de participantes da pesquisa: Nenhuma citação é necessária para observações feitas pelos participantes da pesquisa sobre a qual você está relatando. Não cite estes como comunicações pessoais que violariam os participantes garantia de confidencialidade. Manual de Publicação (6ª ed. Seção 1.11, pp. 16--17 seção 6.20, p. 179 seção 7.10, Exemplos 69 e 70, p. 214) Do blog estilo APA: Facebook Embora o Manual de Publicação (6a ed.) Não não inclua formatos de citação específicos do Facebook, você pode adaptar o formato básico de referência para se adequar. Publication Manual (6th ed. P. 193) Do blog de estilo da APA: DOIs Um identificador de objeto digital (DOI) é uma sequência única de letras, números e símbolos atribuídos a uma obra publicada para identificar conteúdo e fornecer um link persistente para sua publicação. localização na Internet. O DOI normalmente está localizado na primeira página de um documento eletrônico próximo ao aviso de direitos autorais e na página de entrada do banco de dados do documento. Quando os DOIs estiverem disponíveis, inclua-os nas informações de referência. Coloque o DOI no final da referência e não adicione um ponto final no final. Aqui está um exemplo: Autor, A. (ano). Título do artigo Título do Jornal, X. xxxxxx. doi: xxxxxx Manual de Publicação (6a ed. seções 6.316.32, pp. 187192) Do blog de estilo da APA: Bibliografia versus lista de referência No estilo APA, inclua uma lista de referência em vez de uma bibliografia com o seu trabalho. Qual é a diferença? Uma lista de referência consiste em todas as fontes citadas no texto de um artigo, listadas em ordem alfabética pelo sobrenome do autor. Uma bibliografia no entanto, pode incluir recursos que foram consultados, mas não citados no texto, bem como uma descrição anotada de cada um. As bibliografias podem ser organizadas cronologicamente, ou por assunto, em vez de alfabeticamente. Se você recebeu uma tarefa que pede uma bibliografia, consulte seu instrutor para obter mais detalhes sobre o formato necessário. Publication Manual (6th ed. Sections 6.226.32, pp. 180192) Do Blog de Estilo da APA:
Комментарии
Отправить комментарий