Monday 23 October 2017

Jforex api ibar


Há apenas mais dois dias de negociação no Concurso de Estratégia de Dukascopy JForex de abril. Atualmente, estou no 6º lugar. Mas há uma luta feroz pelo meu lugar. Eu tenho movido entre 6 e 8 durante toda a semana, embora eu não tenha feito nenhum comércio. As outras pessoas estão fazendo grandes apostas na esperança de espremer em um top 6. Por que, de acordo com a premiação premiada, os vencedores do 4º ao 6º receberão cada um 1000. Enquanto o 7º ao 10º receberá apenas 500. Com a minha conta atual em 120.032 (20 ganho) este mês, é bastante viável para os outros tentarem ocupar meu local. Veja a tabela abaixo para as 10 principais classificações a partir desta escrita. Minhas opções são para ativar minha estratégia para fazer mais negócios ou não fazer nada. O risco de executar minha estratégia novamente é que eu poderia perder dinheiro e me tornar ainda menos competitivo. O tempo de trabalho de minhas estratégias é em horas, então não há muito espaço para erros. Como tal, eu sinto que com apenas dois dias de negociação à esquerda, o tempo não está do meu lado. Por outro lado, provavelmente vou perder o meu 6º lugar, pois não estou longe dos outros atrás de mim. Então, se eu não fizer nada, provavelmente acabarei 7 ou 8 e perder metade do prêmio em dinheiro. Depois de pensar sobre isso brevemente, eu decidi não fazer nada. As chances são demais contra mim. Eu vi muitas pessoas neste concurso de meses correrem o risco de subir de uma boa classificação apenas para se exporem demais e perderem o top 10 completamente. Descobri que a estratégia concorrente no Concurso de Estratégia Dukascopy JForex não precisa ser 100 automática De acordo com o Suporte do Concurso no fórum oficial. Posso definir parâmetros como levar objetivo de lucro, parar de perder e trocas únicas ou de longa duração. Isso torna este concurso substancialmente mais fácil de programar, pois posso implementar uma estratégia semi-automática, que é o que eu prefiro na minha negociação real. O problema com a construção de um sistema de negociação automatizado é que as condições do mercado mudam com freqüência e sem aviso prévio. Assim, leva mais do que algumas linhas para programar um sistema consistentemente rentável para filtrar condições indesejáveis. Como já discuti antes, porque todos os vencedores deste concurso devem publicar seus códigos fonte, não quero passar muito tempo neste concurso. Agora que eu sei que posso negociar semi-automaticamente neste concurso. Posso fazer a minha análise manualmente e, em seguida, usar a estratégia para executar trocas quando desejo. Isso é exatamente como o meu processo de negociação real como mostrado anteriormente. Como você pode imaginar, estou muito feliz com esta notícia. Eu não preciso arranhar minha cabeça mais para construir uma nova estratégia para os próximos meses concurso. Eu programei e testei várias idéias novas nas últimas 2 semanas, mas não encontrei nada melhor do que a minha estratégia existente. Que foi bom em abril. Este Concurso de Estratégia Dukascopy JForex foi um grande incentivo para me familiarizar com o JForex. Como eu pretendo usá-lo para minha negociação real na Dukascopy (abra uma conta com este link de afiliado para receber 35 desconto em comissões) no final deste ano, esta é uma situação de ganha-ganha para mim quando aprendo a API e, possivelmente, ganhei algum prêmio Dinheiro ao mesmo tempo. Esta é uma explicação da minha estratégia de negociação automatizada para o Concurso de Estratégia Dukascopy JForex em abril. Esta estratégia acabou de fazer seu primeiro comércio hoje depois de correr por cerca de 72 horas. Minha conta de demonstração do concurso foi fechada com um ganho de 7 neste primeiro comércio. Note-se que esta estratégia é construída para competir em um concurso e não para negociação real (ou seja, apenas uma aposta sem custo). Aqui está o conceito para esta configuração de negociação de alta probabilidade. Referindo-se à Figura 1 abaixo, a seta vermelha marca minha curta entrada no EURGBP hoje. Estes são os indicadores de análise técnica que a estratégia usa: Tendência: Sinalizado por 50 bar de média móvel acima (alta) ou abaixo (baixa), a média móvel de 200 bar. Momentum: condições de RSI sobrecarregadas ou sobrecompra, mas não utilizadas de forma tradicional. Volatilidade: uso o canal Keltner para medir a volatilidade. Acção de preço: observe o comportamento do castiçal para identificar a continuação da tendência. É aí que acontece o segredo desta estratégia. Vou explicar isso abaixo. Note-se que usei um Bollinger Bands no gráfico da Figura 1 porque não consegui encontrar o indicador Keltner Channel no Metatrader (meu software de gráficos). Isso não afeta minha ilustração conceitual de qualquer forma. A configuração: identifique a tendência global através de médias móveis 50200 como explicado acima. O preço de confirmação ainda está sendo reproduzido na tendência, verificando se o preço atual do mercado está no lado direito da média móvel de 200 bares. Preço acima para otimista e abaixo para baixar. Uma vez que as etapas 1-2 estão em vigor, é assumido que a tendência é forte. Buscamos uma configuração na direção das tendências. Em particular, procuramos uma configuração de retracement de contra-tendência falhada usando castiçal em combinação com o canal Keltner. Parece sofisticado, mas é simples. Usando um exemplo de lado curto, as barras altas devem penetrar acima do canal Keltner, mas ele se fecha dentro dela. Em seguida, a entrada curta é sinalizada. O oposto para uma entrada de lado longo. As condições de sobrecompra e sobrevenda de RSI são usadas para filtrar movimentos de tendência retardada e estável (aqueles são maus). Outro benefício de usar um canal de preço é que eu também uso isso para fixar meu alvo de lucro e parar a perda. Como eu disse na minha publicação anterior, porque a Dukascopy espera ganhar concorrentes para enviar seus códigos-fonte, não uso nada exclusivo ou extraordinário aqui. Como tal, isso é totalmente diferente do que eu uso para trocar sozinho. Ou seja, mais depender de indicadores e menos na ação de preços e gerenciamento de risco. Tendo estudado a anatomia de uma estratégia JForex vazia (Parte 1 e Parte 2), é hora de dissecar um trabalho. MAPlay é a estratégia que está incluída em cada download da JForex API como demonstração. Você pode encontrar o código-fonte completo desta estratégia no srcsinglejartest no pacote compactado da API 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. As variáveis ​​motorizadas. Indicadores. E console são campos da classe MAPlay. São variáveis ​​globais dentro da classe. O que as linhas 42 a 44 fazem é salvar o IEngine. IIndicadores. E os objetos IConsole para uso posterior. A última linha do OnStart, linha 45, é apenas para imprimir uma mensagem no seu console do programa JForex para notificar o usuário de que a estratégia começou. Uma vez que o OnStart tenha terminado o processamento, o servidor provavelmente encaminhará onTick se um cheque de mercado chegar. Se não for durante as horas de mercado, então não há marca e algum outro evento pode acontecer em vez de onTick. Pense nos métodos como eventos em vez de um processo linear. Você programa sua estratégia JForex de acordo com o que você quer fazer com cada um dos seis eventos IStrategy Interface. Para esta estratégia particular, o programador decide implementar sua estratégia no nível de seleção. Como tal, grande parte do algoritmo de negociação reside em onTick para MAPlay. Observe que esta é uma escolha de design, você pode usar o OnBar se desejar que sua estratégia seja processada no nível da barra (ou você pode usar o OnTick e o OnBar). Heres o código-fonte para onTick no MAPlay. De uma aparência, você pode notar que as variáveis ​​ma0 e ma1 desempenham um papel fundamental na determinação da configuração. Dica: para reverter a engenharia de uma estratégia, pode ser mais fácil trabalhar para trás quando a ordem é colocada, o que é feito pelo engine. submitOrder neste caso. Ma0 e ma1 possuem resultados de médias móveis exponenciais (EMA). Ma0 é o valor atual. Ma1 é o valor das barras anteriores. Linhas 56--63 verificam usando testes IF (linhas 56 e 60) para ver se qualquer uma das variáveis ​​contém dados inválidos. Se os dados forem inválidos, o indicador será calculado e o resto do onTick será ignorado com a declaração de retorno na linha 62. Nota: Os valores dos indicadores às vezes podem ser inválidos (zero, negativo ou Double. NaN., Dependendo da implementação do indicador particular ) Se não houver dados suficientes para calcular ou ocorrer um erro, por exemplo. Os EMAs são obtidos nas linhas 57 e 59 usando o objeto IIndicators (que foi inicializado em onStart). O JForex Wiki fornece uma explicação sobre 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 no ma1instrument. ordinal (). Em outras palavras, está pedindo o slot de instrumentos atual na matriz ma1. O instrumento atual é aquele que é passado para o método na linha 55. Deslizando 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ção é zero. Se for, o que significa que não há posição aberta, a estratégia prossegue para verificar o sinal de entrada para entrar em um comércio (linhas 68-76). PositionsTotal () é um método personalizado definido nas linhas 84--92. Ele usa um loop FOR para percorrer todos os pedidos obtidos do engine. getOrders (instrumento) Uma vez que uma das condições longas ou curtas, linhas 68 e 72, respectivamente, são atendidas, a estratégia envia um pedido nas linhas 69 para um curto e Linha 73 por um longo período. As especificações de submeter ordens de mercado são descritas no Wiki JForex. Quando você interrompe essa estratégia, onStop (linhas 48-53) é chamado. Para esta estratégia, o programador rola todas as ordens novamente usando engine. getOrders () e fecha cada uma das posições com um comando order. close () na linha 50. É por essa estratégia trivial. Se houver um ponto que você deve lembrar. Observe meu uso dos muitos links para JForex javadoc e JForex Wiki ao longo desta publicação. É provável que você encontre muitas das suas respostas dessas duas fontes. Caso contrário, há sempre o JForex Support Board. Agora que você teve uma idéia de como o MAPlay. java funciona, é hora de testá-lo. Na próxima publicação em janeiro, discutiremos o JForex Historical Tester e o que observar quando estiver executando uma estratégia ao vivo. Examinamos quatro dos seis métodos na interface IStrategy em uma publicação anterior. Os dois últimos métodos, onTick e onBar, são onde sua estratégia se conecta com os dados do mercado. Um ou ambos, esses métodos, é onde você colocou seu algoritmo de negociação. Sua estratégia seria capaz de processar os dados de mercado à medida que eles chegam a um tickbar de cada vez. Lembre-se de que a IStrategy Interface é o esqueleto da sua estratégia. E esse objeto IContext é o coração de sua estratégia. OnTickonBar é o chefe de sua estratégia, que contém seu algoritmo de negociação, que é o cérebro. Heres a definição de método de onTick. Importante: onTick é chamado para todos e cada um dos instrumentos em que a sua plataforma JForex está inscrito (a lista de instrumentos na sua caixa de espaço de trabalho). Deixe-me dizer isso novamente, onTick é chamado para todos e cada um dos instrumentos em que a sua plataforma JForex está inscrito. A prática padrão é filtrar os carrapatos para instrumentos que você não deseja com uma simples declaração de retorno IF. Se (instrumento myInstrument) retornar Os dados do tick real são passados ​​para sua estratégia usando o objeto ITick do parâmetro de métodos OnTick. Dê uma olhada na entrada ITick javadoc para ver o que oferece. OnBar funciona de forma semelhante a onTick. No qual onBar é chamado para todos e cada um dos instrumentos subscritos e período conhecido por JForex. Da mesma forma, você deve filtrar todos os instrumentos e períodos indesejados, ou então haverá resultados esperados da sua estratégia. Outro ponto a observar é que o OnBar fornece tanto um IBar como um AskBar e IBar bidBar, representando as barras de solicitação e oferta. Pergunta: o que acontece quando dois ou mais períodos se sobrepõem, como em 13:45 as barras de 1, 5 e 15 minutos estão chegando ao mesmo tempo (sem mencionar os períodos em segundos também). Resposta: De acordo com o Suporte Dukascopy no fórum, eles vêm em uma ordem rígida, por exemplo (1min 1min 1min 1min 1min 5min 1min 1min 1min 1min 1min 5min.) Eles vêm em ciclos, onde períodos menores chegam em primeiro lugar. Fórum de suporte do JForex À medida que você programa sua estratégia com o JForex, você, sem dúvida, encontrará perguntas próprias. O melhor lugar para perguntar é no fórum oficial de suporte JForex. Este é o último dos três recursos JForex essenciais aos quais eu aludi anteriormente. Mesmo que você não tenha nenhuma pergunta específica, existem exemplos de códigos, discussões de codificação e centenas de QampA existentes de outros desenvolvedores JForex postados no fórum. A discussão até agora tem sido muito alta. Para mostrar o que você pode realmente fazer em um IStrategy, vamos dissecar uma estratégia de trabalho na próxima publicação. E o que mais é melhor examinar do que a estratégia JForex mais popular de todos eles - MAPlay. java. Continuando na Parte 1 desta série: Começando a aprender a programação JForex. Agora estavam prontos para discutir o real. Você cria 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 IStrategy Interface 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 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 é desencadeado 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 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 de onStart é O objeto no parâmetro e dado a você neste método é um objeto IContext. Se IStrakie é o esqueleto, o IContext é o coração da estratégia. Por favor, veja este link do javadoc para o IContext para ver o que esse 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 da API mais atualizada que explica todos e cada um dos objetos e métodos da API JForex. Pense nisso como um manual de referência. Note-se que, embora seja abrangente, a maior parte da explicação é muito esparsa e possivelmente incompleta. O IContext é um objeto JForex central para acessar muitos componentes importantes do sistema JForex, como o mecanismo de pedidos, gráficos, consoles, indicadores. Você consegue a ideia. É importante Você normalmente deseja manter uma cópia local, pois esta é a única vez (em onStart) que esse objeto será passado para você no IStrategy. OnStop (linha 26) Como o nome sugere, este método é chamado uma vez que você envia um comando de parada para sua estratégia. Você faz o encerramento do seu programa, como o registro e a descarga de dados aqui. Não muito fora do comum com este. OnMessage (linha 18) Enquanto sabemos quando onStart e onStop serão chamados, onMessage é um método assíncrono em que você não sabe exatamente quando ele será executado. Esse método é chamado quando o servidor Dukascopy envia sua estratégia para uma mensagem. Por exemplo, o servidor chama onMessage para que você saiba 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 e cada uma das mensagens enviadas para a sua estratégia a partir do servidor. Talvez seu processo de estratégia esteja obstruído. Ou talvez sua conexão com a internet tivesse 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 estará checando nem tentando novamente. Então, não faça nada crítico, como gerenciar suas ordens no onMessage onAccount (linha 22). Esse método é chamado sempre que a atualização de informações da sua conta é recebida. O método fornece acesso ao objeto IAccount. Que você usa para obter as informações da sua conta. Diga se você tem uma posição aberta, as informações da sua conta mudam em cada tiquetaque porque seu patrimônio líquido é um lucro líquido 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 algumas negociações para alterar seu saldo. Em seguida, peça a mesma conta IAccount para informações de saldo da conta, você não verá uma alteração. Como tal, sempre atualize sua cópia local do IAccount dentro do método onAccount para manter as informações da sua conta atualizadas para o uso de suas estratégias. Para continuar 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, é onde a magia acontece em uma estratégia. Estou guardando o melhor para o último na próxima publicação. O maior problema que tive ao aprender a programar minhas próprias estratégias de negociação no JForex é descobrir onde começar a aprender. Havia pouca documentação JForex disponível no momento e eu tive que me ensinar através de tentativas e erros difíceis com a ajuda do suporte técnico da Dukascopys. As coisas certamente mudaram para melhor enquanto uma comunidade JForex está começando a brotar e a documentação é pelo menos suficiente para que alguém comece. Este post é o primeiro de uma série de iniciantes rápidos a orientar a aprendizagem da programação JForex, colocando todos esses recursos em um tutorial. JForex é uma ferramenta Java O JForex na verdade não é uma linguagem de programação. É uma interface de programação de aplicativos (API) para usar com a linguagem de programação Java padrão. Como tal, o primeiro passo para aprender a programar no JForex é aprender Java. Felizmente, Java é uma das linguagens de programação mais populares. Então, há muitos recursos dentro e fora da web para aprender a programação Java. Alguns exemplos de tutoriais on-line gratuitos são: Os Tutoriais Java - Este é um tutorial oficial do desenvolvedor de Java. Altamente recomendado. Tutorial para iniciantes em Java - Mais orientado para iniciantes absolutos para a programação. Se você preferir um livro, eu recomendaria Head First Java, 2nd Edition. Eu escovei meu Java a partir deste livro. Não hesite em Java, porém, como você só precisa saber o básico para começar com o JForex. Basta ler alguns capítulos para entender a sintaxe do Java e depois seguir em frente. Você sempre pode se referir a eles mais tarde. Mergulhar no JForex O JForex Wiki é um dos três recursos essenciais para os programadores JForex. Vou me referir a algumas páginas específicas do Wiki em grande parte dessa série de postagens. Se você ainda não fez isso, inscreva-se para uma conta DEMO na Dukascopy. Em seguida, inicie a plataforma JForex e siga as instruções na página Utilizar no wiki JForex para montar sua primeira estratégia JForex Até agora tão bom. Por esse ponto, espero que você possa entender o código-fonte Java básico e saber como startopen, compilar e executar um Estratégia JForex. Na próxima publicação nesta série JForex de aprendizagem, estudaremos a anatomia de uma estratégia JForex. Há apenas mais dois dias de negociação no Concurso de Estratégia de Dukascopy JForex de abril. Atualmente, estou no 6º lugar. Mas há uma luta feroz pelo meu lugar. Eu tenho movido entre 6 e 8 durante toda a semana, embora eu não tenha feito nenhum comércio. As outras pessoas estão fazendo grandes apostas na esperança de espremer em um top 6. Por que, de acordo com a premiação premiada, os vencedores do 4º ao 6º receberão cada um 1000. Enquanto o 7º ao 10º receberá apenas 500. Com a minha conta atual em 120.032 (20 ganho) este mês, é bastante viável para os outros tentarem ocupar meu local. Veja a tabela abaixo para as 10 principais classificações a partir desta escrita. Minhas opções são para ativar minha estratégia para fazer mais negócios ou não fazer nada. O risco de executar minha estratégia novamente é que eu poderia perder dinheiro e me tornar ainda menos competitivo. O tempo de trabalho de minhas estratégias é em horas, então não há muito espaço para erros. Como tal, eu sinto que com apenas dois dias de negociação à esquerda, o tempo não está do meu lado. Por outro lado, provavelmente vou perder o meu 6º lugar, pois não estou longe dos outros atrás de mim. Então, se eu não fizer nada, provavelmente acabarei 7 ou 8 e perder metade do prêmio em dinheiro. Depois de pensar sobre isso brevemente, eu decidi não fazer nada. As chances são demais contra mim. Eu vi muitas pessoas neste concurso de meses correrem o risco de subir de uma boa classificação apenas para se exporem demais e perderem o top 10 completamente. Descobri que a estratégia concorrente no Concurso de Estratégia Dukascopy JForex não precisa ser 100 automática De acordo com o Suporte do Concurso no fórum oficial. Posso definir parâmetros como levar objetivo de lucro, parar de perder e trocas únicas ou de longa duração. Isso torna este concurso substancialmente mais fácil de programar, pois eu posso implementar uma estratégia semi-automática, que é o que eu prefiro na minha negociação real. O problema com a construção de um sistema de negociação automatizado é que as condições do mercado mudam com freqüência e sem aviso prévio. Assim, leva mais do que algumas linhas para programar um sistema consistentemente rentável para filtrar condições indesejáveis. Como já discuti antes, porque todos os vencedores deste concurso devem publicar seus códigos fonte, não quero passar muito tempo neste concurso. Agora que eu sei que posso negociar semi-automaticamente neste concurso. Posso fazer a minha análise manualmente e, em seguida, usar a estratégia para executar negócios quando desejo. Isso é exatamente como o meu processo de negociação real como mostrado anteriormente. Como você pode imaginar, estou muito feliz com esta notícia. Eu não preciso arranhar minha cabeça mais para construir uma nova estratégia para os próximos meses concurso. Eu programei e testei várias idéias novas nas últimas 2 semanas, mas não encontrei nada melhor do que a minha estratégia existente. Que foi bom em abril. Este Concurso de Estratégia Dukascopy JForex tem sido um grande incentivo para me familiarizar com o JForex. Como eu pretendo usá-lo para minha negociação real na Dukascopy (abra uma conta com este link de afiliado para receber 35 desconto em comissões) no final deste ano, esta é uma situação de ganha-ganha para mim quando aprendo a API e, possivelmente, ganhei algum prêmio Dinheiro ao mesmo tempo. Esta é uma explicação da minha estratégia de negociação automatizada para o Concurso de Estratégia Dukascopy JForex em abril. Esta estratégia acabou de fazer seu primeiro comércio hoje depois de correr por cerca de 72 horas. Minha conta de demonstração do concurso foi fechada com um ganho de 7 neste primeiro comércio. Note-se que esta estratégia é construída para competir em um concurso e não para negociação real (ou seja, é puramente uma aposta sem custo). Aqui está o conceito para esta configuração de negociação de alta probabilidade. Referindo-se à Figura 1 abaixo, a seta vermelha marca minha curta entrada no EURGBP hoje. Estes são os indicadores de análise técnica que a estratégia usa: Tendência: Sinalizado por 50 bar de média móvel acima (alta) ou abaixo (baixa), a média móvel de 200 bar. Momentum: condições de RSI sobrecarregadas ou sobrecompra, mas não utilizadas de forma tradicional. Volatilidade: uso o canal Keltner para medir a volatilidade. Ação de preço: observe o comportamento do castiçal para identificar a continuação da tendência. Este é o lugar onde o segredo desta estratégia acontece. Vou explicar isso abaixo. Note-se que usei um Bollinger Bands no gráfico da Figura 1 porque não consegui encontrar o indicador Keltner Channel no Metatrader (meu software de gráficos). Isso não afeta minha ilustração conceitual de qualquer forma. A configuração: identifique a tendência global através de médias móveis 50200 como explicado acima. O preço de confirmação ainda está sendo reproduzido na tendência, verificando se o preço atual do mercado está no lado direito da média móvel de 200 bares. Preço acima para otimista e abaixo para baixar. Uma vez que as etapas 1-2 estão em vigor, é assumido que a tendência é forte. Buscamos uma configuração na direção das tendências. Em particular, procuramos uma configuração de retracement de contra-tendência falhada usando castiçal em combinação com o canal Keltner. Parece sofisticado, mas é simples. Usando um exemplo de lado curto, as barras altas devem penetrar acima do canal Keltner, mas elas se fecham dentro dela. Em seguida, a entrada curta é sinalizada. O oposto para uma entrada de lado longo. As condições de sobrecompra e sobrevenda de RSI são usadas para filtrar movimentos de tendência retardada e estável (aqueles são maus). Outro benefício de usar um canal de preço é que eu também uso isso para fixar meu alvo de lucro e parar a perda. Como eu disse na minha publicação anterior, porque a Dukascopy espera ganhar concorrentes para enviar seus códigos-fonte, não uso nada exclusivo ou extraordinário aqui. Como tal, isso é totalmente diferente do que eu uso para trocar sozinho. Ou seja, mais depender de indicadores e menos na ação de preços e gerenciamento de risco. Tendo estudado a anatomia de uma estratégia JForex vazia (Parte 1 e Parte 2), é hora de dissecar um trabalho. MAPlay é a estratégia que está incluída em cada download da JForex API como demonstração. Você pode encontrar o código-fonte completo desta estratégia no srcsinglejartest no pacote compactado da API 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. As variáveis ​​motorizadas. Indicadores. E console são campos da classe MAPlay. São variáveis ​​globais dentro da classe. O que as linhas 42 a 44 fazem é salvar o IEngine. IIndicadores. E os objetos IConsole para uso posterior. A última linha do OnStart, linha 45, é apenas para imprimir uma mensagem no seu console do programa JForex para notificar o usuário de que a estratégia começou. Uma vez que o OnStart tenha terminado o processamento, o servidor provavelmente encaminhará onTick se um cheque de mercado chegar. Se não for durante as horas de mercado, então não há marca e algum outro evento pode acontecer em vez de onTick. Pense nos métodos como eventos em vez de um processo linear. Você programa sua estratégia JForex de acordo com o que você quer fazer com cada um dos seis eventos IStrategy Interface. Para esta estratégia particular, o programador decide implementar sua estratégia no nível de seleção. Como tal, grande parte do algoritmo de negociação reside em onTick para MAPlay. Observe que esta é uma escolha de design, você pode usar o OnBar se desejar que sua estratégia seja processada no nível da barra (ou você pode usar o OnTick e o OnBar). Heres o código-fonte para onTick no MAPlay. De uma aparência, você pode notar que as variáveis ​​ma0 e ma1 desempenham um papel fundamental na determinação da configuração. Dica: para reverter a engenharia de uma estratégia, pode ser mais fácil trabalhar para trás quando a ordem é colocada, o que é feito pelo engine. submitOrder neste caso. Ma0 e ma1 possuem resultados de médias móveis exponenciais (EMA). Ma0 é o valor atual. Ma1 é o valor das barras anteriores. Linhas 56--63 verificam usando testes IF (linhas 56 e 60) para ver se qualquer uma das variáveis ​​contém dados inválidos. Se os dados forem inválidos, o indicador será calculado e o resto do onTick será ignorado com a declaração de retorno na linha 62. Nota: Os valores dos indicadores às vezes podem ser inválidos (zero, negativo ou Double. NaN., Dependendo da implementação do indicador particular ) Se não houver dados suficientes para calcular ou ocorrer um erro, por exemplo. Os EMAs são obtidos nas linhas 57 e 59 usando o objeto IIndicators (que foi inicializado em onStart). O JForex Wiki fornece uma explicação sobre 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 no ma1instrument. ordinal (). Em outras palavras, está pedindo o slot de instrumentos atual na matriz ma1. O instrumento atual é aquele que é passado para o método na linha 55. Deslizando 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ção é zero. Se for, o que significa que não há posição aberta, a estratégia prossegue para verificar o sinal de entrada para entrar em um comércio (linhas 68-76). PositionsTotal () é um método personalizado definido nas linhas 84--92. Ele usa um loop FOR para percorrer todos os pedidos obtidos do engine. getOrders (instrumento) Uma vez que uma das condições longas ou curtas, linhas 68 e 72, respectivamente, são atendidas, a estratégia envia um pedido nas linhas 69 para um curto e Linha 73 por um longo período. As especificações de submeter ordens de mercado são descritas no Wiki JForex. Quando você interrompe essa estratégia, onStop (linhas 48-53) é chamado. Para esta estratégia, o programador rola todas as ordens novamente usando engine. getOrders () e fecha cada uma das posições com um comando order. close () na linha 50. É por essa estratégia trivial. Se houver um ponto que você deve lembrar. Observe meu uso dos muitos links para JForex javadoc e JForex Wiki ao longo desta publicação. É provável que você encontre muitas das suas respostas dessas duas fontes. Caso contrário, há sempre o JForex Support Board. Agora que você teve uma idéia de como o MAPlay. java funciona, é hora de testá-lo. Na próxima publicação em janeiro, discutiremos o JForex Historical Tester e o que observar quando estiver executando uma estratégia ao vivo. Examinamos quatro dos seis métodos na interface IStrategy em uma publicação anterior. Os dois últimos métodos, onTick e onBar, são onde sua estratégia se conecta com os dados do mercado. Um ou ambos, esses métodos, é onde você colocou seu algoritmo de negociação. Sua estratégia seria capaz de processar os dados de mercado à medida que eles chegam a um tickbar de cada vez. Lembre-se de que a IStrategy Interface é o esqueleto da sua estratégia. E esse objeto IContext é o coração de sua estratégia. OnTickonBar é o chefe de sua estratégia, que contém seu algoritmo de negociação, que é o cérebro. Heres a definição de método de onTick. Importante: onTick é chamado para todos e cada um dos instrumentos em que a sua plataforma JForex está inscrito (a lista de instrumentos na sua caixa de espaço de trabalho). Deixe-me dizer isso novamente, onTick é chamado para todos e cada um dos instrumentos em que a sua plataforma JForex está inscrito. A prática padrão é filtrar os carrapatos para instrumentos que você não deseja com uma simples declaração de retorno IF. Se (instrumento myInstrument) retornar Os dados do tick real são passados ​​para sua estratégia usando o objeto ITick do parâmetro de métodos OnTick. Dê uma olhada na entrada ITick javadoc para ver o que oferece. OnBar funciona de forma semelhante a onTick. No qual onBar é chamado para todos e cada um dos instrumentos subscritos e período conhecido por JForex. Da mesma forma, você deve filtrar todos os instrumentos e períodos indesejados, ou então haverá resultados esperados da sua estratégia. Outro ponto a observar é que o OnBar fornece tanto um IBar como um AskBar e IBar bidBar, representando as barras de solicitação e oferta. Pergunta: o que acontece quando dois ou mais períodos se sobrepõem, como em 13:45 as barras de 1, 5 e 15 minutos estão chegando ao mesmo tempo (sem mencionar os períodos em segundos também). Resposta: De acordo com o Suporte Dukascopy no fórum, eles vêm em uma ordem rígida, por exemplo (1min 1min 1min 1min 1min 5min 1min 1min 1min 1min 1min 5min.) Eles vêm em ciclos, onde períodos menores chegam em primeiro lugar. Fórum de suporte do JForex À medida que você programa sua estratégia com o JForex, você, sem dúvida, encontrará perguntas próprias. O melhor lugar para perguntar é no fórum oficial de suporte JForex. Este é o último dos três recursos JForex essenciais aos quais eu aludi anteriormente. Mesmo que você não tenha nenhuma pergunta específica, existem exemplos de códigos, discussões de codificação e centenas de QampA existentes de outros desenvolvedores JForex postados no fórum. A discussão até agora tem sido muito alta. Para mostrar o que você pode realmente fazer em um IStrategy, vamos dissecar uma estratégia de trabalho na próxima publicação. E o que mais é melhor examinar do que a estratégia JForex mais popular de todos eles - MAPlay. java. Continuando na Parte 1 desta série: Começando a aprender a programação JForex. Agora estavam prontos para discutir o real. Você cria 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 IStrategy Interface 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 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 é desencadeado 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 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 de onStart é O objeto no parâmetro e dado a você neste método é um objeto IContext. Se IStrakie é o esqueleto, o IContext é o coração da estratégia. Por favor, veja este link do javadoc para o IContext para ver o que esse 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 da API mais atualizada que explica todos e cada um dos objetos e métodos da API JForex. Pense nisso como um manual de referência. Note-se que, embora seja abrangente, a maior parte da explicação é muito esparsa e possivelmente incompleta. O IContext é um objeto JForex central para acessar muitos componentes importantes do sistema JForex, como o mecanismo de pedidos, gráficos, consoles, indicadores. Você consegue a ideia. É importante Você normalmente deseja manter uma cópia local, pois esta é a única vez (em onStart) que esse objeto será passado para você no IStrategy. OnStop (linha 26) Como o nome sugere, este método é chamado uma vez que você envia um comando de parada para sua estratégia. Você faz o encerramento do seu programa, como o registro e a descarga de dados aqui. Não muito fora do comum com este. OnMessage (linha 18) Enquanto sabemos quando onStart e onStop serão chamados, onMessage é um método assíncrono em que você não sabe exatamente quando ele será executado. Esse método é chamado quando o servidor Dukascopy envia sua estratégia para uma mensagem. Por exemplo, o servidor chama onMessage para que você saiba 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 e cada uma das mensagens enviadas para a sua estratégia a partir do servidor. Talvez seu processo de estratégia esteja obstruído. Ou talvez sua conexão com a internet tivesse 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 estará checando nem tentando novamente. Então, não faça nada crítico, como gerenciar suas ordens no onMessage onAccount (linha 22). Esse método é chamado sempre que a atualização de informações da sua conta é recebida. O método fornece acesso ao objeto IAccount. Que você usa para obter as informações da sua conta. Diga se você tem uma posição aberta, as informações da sua conta mudam em cada tiquetaque porque seu patrimônio líquido é um lucro líquido 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 algumas negociações para alterar seu saldo. Em seguida, peça a mesma conta IAccount para informações de saldo da conta, você não verá uma alteração. Como tal, sempre atualize sua cópia local do IAccount dentro do método onAccount para manter as informações da sua conta atualizadas para o uso de suas estratégias. Para continuar 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, é onde a magia acontece em uma estratégia. Estou guardando o melhor para o último na próxima publicação. O maior problema que tive ao aprender a programar minhas próprias estratégias de negociação no JForex é descobrir onde começar a aprender. Havia pouca documentação JForex disponível no momento e eu tive que me ensinar através de tentativas e erros difíceis com a ajuda do suporte técnico da Dukascopys. As coisas certamente mudaram para melhor enquanto uma comunidade JForex está começando a brotar e a documentação é pelo menos suficiente para que alguém comece. Este post é o primeiro de uma série de iniciantes rápidos a orientar a aprendizagem da programação JForex, colocando todos esses recursos em um tutorial. JForex é uma ferramenta Java JForex na verdade não é 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, Java é uma das linguagens de programação mais populares. Então, há muitos recursos dentro e fora da web para aprender a programação Java. Alguns exemplos de tutoriais on-line gratuitos são: Os Tutoriais Java - Este é um tutorial oficial do desenvolvedor de Java. Altamente recomendado. Tutorial para iniciantes em Java - Mais orientado para iniciantes absolutos para a programação. Se você preferir um livro, eu recomendaria Head First Java, 2nd Edition. Eu escovei meu Java a partir deste livro. Não hesite em Java, porém, como você só precisa saber o básico para começar com o JForex. Basta ler alguns capítulos para entender a sintaxe do Java e depois seguir em frente. Você sempre pode se referir a eles mais tarde. Mergulhar no JForex O JForex Wiki é um dos três recursos essenciais para os programadores JForex. Vou me referir a algumas páginas específicas do Wiki em grande parte dessa série de postagens. Se você ainda não fez isso, inscreva-se para uma conta DEMO na Dukascopy. Em seguida, inicie a plataforma JForex e siga as instruções na página Utilizar no wiki JForex para montar sua primeira estratégia JForex Até agora tão bom. Por esse ponto, espero que você possa entender o código-fonte Java básico e saber como startopen, compilar e executar um Estratégia JForex. Na próxima publicação nesta série JForex de aprendizagem, estudaremos a anatomia de uma estratégia JForex.

No comments:

Post a Comment