Saturday 18 November 2017

Wiki De Estratégia De Jforex


API de estratégia A seção a seguir contém uma descrição detalhada da JForex Strategy API. A API permite o desenvolvimento de estratégias de negociação JForex personalizadas. As configurações da plataforma de negociação não afetam a estratégia personalizada. Esta seção descreve as rotinas que o usuário da API da Estratégia pode automatizar programaticamente, como: Além disso, outros aspectos são abordados sobre os quais não se relacionam diretamente com a lógica estratégica do negócio, como Threading e outras práticas. Essencialmente, uma estratégia pode fazer o que a Java SE pode fazer. Estratégia simples descreve um processo passo a passo de criação de uma estratégia simples. SMA Simple descreve uma estratégia simples usando um indicador. Cada uma das seções acima mencionadas é fornecida com exemplos para ajudar o usuário a criar e modificar seu próprio JForex startegy personalizado. Interface IStrategy Cada estratégia deve implementar a interface IStrategy que contém seis métodos de retorno de chamada: onStart é chamado no início da estratégia. Aqui, normalmente, inicializaremos as variáveis ​​mantidas pelo IContext. Assine os feeds (por exemplo, período personalizado, barras de intervalo, tijolos renko, etc.) e faça outras operações de configuração de estratégia. OnTick é chamado em cada marca de cada Instrumento em que o aplicativo está inscrito, então, para trabalhar com instrumentos específicos, você deve considerar a filtragem de tiques. O método recebe o último ITick do Instrumento específico do qual o usuário pode recuperar os preços ASK e BID mais recentes, bem como os volumes. Aqui se implementaria uma lógica de estratégia relacionada à mudança de preço. OnBar é chamado quando uma barra é concluída para cada Período e Instrumento básico em que o aplicativo está inscrito, então, para trabalhar com instrumentos e períodos específicos, você deve considerar o Filtro de Barra. O método recebe o último BID e ASK IBar do Instrumento e Período específico do qual o usuário pode recuperar os preços aberto, fechado, alto e baixo, bem como o volume. Aqui implementaria uma lógica de estratégia relacionada ao período de tempo. OnMessage é chamado quando uma nova mensagem é recebida. Mais proeminente, o método recebe um IMessage sempre que o estado da ordem de qualquer ordem muda. Desta forma, permitindo gerenciar o estado da ordem. OnAccount é chamado quando uma atualização da Informação da Conta é recebida. OnStop é chamado antes que uma estratégia seja interrompida. Aqui, dependendo da lógica da estratégia, consideraria o fechamento de todas as ordens ativas, a remoção de objetos de gráfico criados, a eliminação de objetos GUI personalizados, etc. Tendo estudado a anatomia de uma estratégia JForex vazia (Parte 1 e Parte 2), é hora de dissecar um Trabalhando um. 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. Eles 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 do tick. 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 tanto no OnTick quanto no OnBar). É o código-fonte do 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 fazer uma engenharia reversa 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 ocorreu 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 em 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. Ao mover 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 no 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 a condição longa ou curta, as 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 do envio de ordens de mercado são descritas no Wiki JForex. Quando você interrompe essa estratégia, o onStop (linhas 48-53) é chamado. Para esta estratégia, o programador acompanha todas as ordens novamente usando engine. getOrders () e fecha cada uma das posições com um comando order. close () na linha 50. É isso mesmo para essa estratégia trivial. Se houver um ponto que você deve lembrar. Observe meu uso de 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 executarmos 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ê coloca seu algoritmo de negociação. Sua estratégia seria então capaz de processar os dados do 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 da sua estratégia. OnTickonBar é o chefe da sua estratégia, que contém o 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 instrumento em que a sua plataforma JForex está inscrito. A prática padrão é filtrar os carrapatos para os instrumentos que você não deseja com uma declaração de retorno IF simples. 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 AskBar quanto o IBB 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 Ao programar 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 essenciais do JForex 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 um nível muito alto. 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 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 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 de sua estratégia. Normalmente você faz sua inicialização aqui. O ponto a seguir para o 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 IStraegy é o esqueleto, o IContext é o coração da estratégia. Por favor, dê uma olhada neste link javadoc para 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 central do JForex 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 (no 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 de 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 o 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. Nesse caso, onAccount é chamado a cada 5 segundos pelo servidor no máximo para evitar inundações da 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, uma vez que 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 do próprio 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 de Java e depois seguir em frente. Você sempre pode voltar para eles mais tarde. Mergulho 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ê não tiver feito isso, inscreva-se para uma conta DEMO na Dukascopy. Em seguida, inicie a plataforma JForex e siga as instruções na página de Utilização na wiki JForex para montar sua primeira estratégia JForex Até agora tão bom. Neste ponto, espero que você possa entender o código-fonte básico do Java 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. JForex Import JForex é um software para comércio Forex da Ducascopy. Seu programa permite que você baixe os dados do mercado, incluindo os dados do tick. Você pode ver como importar esses dados no nosso tutorial de Importação de JForex Data. Neste artigo, mostraremos você ao redor da interface do usuário da ferramenta JForex Import. Você pode abrir este painel da Importação JForex do History Center. 1. Diretório de entrada de importação de dados JForex, esta é a pasta que contém os dados do diretório de saída JForex, onde os dados convertidos serão salvos para uso pelo FSB Pro, você pode colocar o caminho para uma pasta de fonte de dados, de modo que os dados serão adicionados instantaneamente Naquela Data Source. A hora de fechamento do mercado na sexta-feira, horário de abertura do mercado no domingo, é uma característica dos dados da JForex, que inclui registros durante o fim de semana, onde há barras de movimento zero ou algumas grandes espiras no movimento de preços. Os dados no fim de semana não são reais e, portanto, não são adequados para backtesting. É por isso que definimos o fechamento e o horário de abertura, ao converter os dados e filtrar essas barras. O FSB Pro tentará detectar esses bares por conta própria, mas recomendamos verificar novamente. Como verificar novamente: em nossa prática, é às 21 horas quando o mercado fecha na sexta-feira e quando abre no domingo. Não podemos ter certeza do que essas horas são para o seu fuso horário, mas você pode obtê-las do JForex durante a execução e definir os valores apropriados na ferramenta Importação JForex. O número máximo de barras a serem importadas irá filtrar os dados até essa quantidade de barras. Importação JForex Ajuda um link para o tutorial sobre Importar importação de dados JForex, clicando no botão, iniciará o processo de importação. A barra verde superior mostrará o status de importação do arquivo atual. A barra inferior mostra o status de todo o processo de importação, considerando todos os arquivos a serem importados. 2. Registro de Saída O Registro de Saída mostra o nome de cada arquivo importado o símbolo do dado quantas barras estão no arquivo Se as barras forem menores do que o número máximo de barras para importar número, o FSB Pro irá converter e salvá-los para um Arquivo no diretório de saída. Se houver muitos bares em um arquivo, você verá: Cortando quantas barras foram cortadas do final do arquivo. Restante quantos barras foram convertidos para dados utilizáveis ​​do FSB Pro, as barras restantes serão salvas em um arquivo também.

No comments:

Post a Comment