Forex Connect


Tecnologia de Forex Fornecedores de nuvem Necessidade de implementar taxas e informações de conta ea capacidade de enviar ou modificar encomendas Para um uso mais técnico da API, oferecemos opções para um nível mais alto de tecnologia. Nossas APIs para provedores de tecnologia e nuvem oferecem baixa largura de banda, arquitetura de puxar, sem mínimos de conta, uma gama completa de ordens de negociação e acesso a dados históricos de forex e CFD. Forexconnect API ForexConnect é nosso API8212 mais flexível usado pelas plataformas NinjaTrader e Mirror Trader. O ForexConnect é compatível com. Net, Linux, Mac, iOS e Android. Código em 30 funções e recursos diferentes Utilize estruturas de mensagens de baixo nível ou estruturas de tabela com campos calculados Conecte-se ao MATLAB para executar análises avançadas sobre dados de preços Começar Já tem uma conta FXCM Download Forexconnect SDK Uma conta FXCM, Um IDE ou editor de texto que executa LUA (ie Visual Studio) Precisa de mais informações Visite o Wiki ForexConnect para ler nossos guias para Java. NET e C e veja exemplos de snippets de código complexos para ações como Batch Commands e Contingency Groups. JAVA API Procurando criar um aplicativo cliente ou servidor Java é uma API escalável, leve e robusta baseada na especificação FIX para forex e personalizada para negociação com o FXCM. Compatível com qualquer sistema operacional compatível com Java Leve e com base em mensagens FIX Capaz de obter históricos de negócios e taxas Começar Já tem uma conta FXCM Baixar Java SDK Uma conta FXCM, incluindo conta de prática livre 8212no saldo mínimo necessário Um IDE (ou seja, Netbeans, Eclipse) Pergunte, encontre respostas, visualize o código de amostra e veja a documentação no FXCMAPI no GitHub. Quais são as jurisdições do corretor que é regulamentado, ação regulatória, anos de operação, segregação de contas, propriedade da empresa, segurança de dados pessoais. Comissões, spreads, taxas de depósito / retirada e outras taxas diversas. Metatrader, PC, Mac, e aplicações móveis, web browser trading. Instrumentos, gama de mercados, alavancagem, análise técnica e fundamental, recursos educacionais, notícias e pesquisa, comércio social, contas de demonstração, ferramentas de gráficos, sinais de negociação. 24 horas telefone suporte, gerente de conta pessoal, interface do usuário, prêmios de corretor. Spreads fixos ou variáveis, depósitos mínimos, tamanhos de lotes, moedas de base, tipos de contas, opções de financiamento. Top 5 Brokers Testimonials ConnectFX. org é um ótimo lugar para ir para uma visão inteligente sobre todas as coisas Forex e informações atualizadas sobre tendências tópicos em FX negociação, juntamente com as últimas opiniões de muitos corretores lá fora. Como começar a usar ForexConnect. NET API (Win32 / Win64) Este artigo descreve como começar a usar ForexConnect. NET API. Aqui você pode encontrar as explicações básicas da API e instruções passo a passo sobre a criação de uma amostra de trabalho de um aplicativo de negociação simples. Plataforma. Microsoft. NET Framework 2.0 e versões posteriores no MS Windows versão de 32 bits / 64 bits Language. C. NET IDE. Microsoft Visual Studio 2005, 2008, 2010 O uso da biblioteca. NET do ForexConnect com a estrutura de aplicativos do Microsoft Silverlight não é suportado. A biblioteca ForexConnect. NET que está sendo executada usando Mono não é suportada. Índice Obtenção e instalação de bibliotecas de API do ForexConnect Faça o download da última versão do ForexConnect API: Se você tiver uma versão de 32 bits do Microsoft Windows, baixe a versão de 32 bits da API do ForexConnect. Se você tiver uma versão de 64 bits do Microsoft Windows, baixe a compilação de 64 bits da API do ForexConnect. Consulte a caixa de diálogo Propriedades do sistema para obter informações sobre a versão do sistema. Observe que, se o sistema for o Windows XP e você não vir a edição x64 listada na caixa de diálogo Propriedades do Sistema, então você está executando uma versão de 32 bits do Windows XP. Inicie o instalador e, em seguida, siga as instruções do assistente de configuração. Além disso, vamos supor que a API do ForexConnect está instalada no C: Programa FilesCandleworksForexConnectAPI. Usando a API do ForexConnect com o Microsoft Visual Studio Você deve fazer as seguintes alterações em seu projeto C: 1. Configure o evento pós-compilação do seu projeto para copiar as bibliotecas da API do ForexConnect e Suportando arquivos para a pasta onde o programa é construído: No projeto Propriedades rarr Build Eventos rarr Post-Build linha de comando evento, adicione o seguinte texto: copy C: Program FilesCandleworksForexConnectAPIbin. (TargetDir) 2. Adicionar uma referência à assemblagem. NET fxcore2.dll ao projecto. Se você usar o. NET 4.0, em seguida, use o assembly. NET fxcore2.dll apropriado que pode ser encontrado na pasta C: Program FilesCandleworksForexConnectAPIbinnetdotnet40. Se você usar o. NET 2.0, use o assembly fxcore2.dll da pasta C: Program FilesCandleworksForexConnectAPIbinnetdotnet20. 3. Adicione o espaço de nomes fxcore2 ao seu código: Distribuição É necessário distribuir o programa com todas as bibliotecas binárias e ficheiros de suporte do C: Program FilesCandleworksForexConnectAPIbin. As bibliotecas do ForexConnect e os arquivos de suporte devem estar localizados na pasta onde o aplicativo está instalado. Observe que o assembly fxcore2.dll deve ser colocado na pasta onde o aplicativo também está instalado. Características da API do ForexConnect. NET Arquitetura Orientada a Eventos Todas as APIs usadas pelo ForexConnect são assíncronas, então você terá que implementar uma arquitetura orientada a eventos em seu código. Uma arquitetura baseada em eventos é um padrão de arquitetura de software que gerencia o comportamento da produção, detecção e consumo de eventos, bem como as respostas que eles evocam. Neste contexto, um evento deve ser tratado como algum valor ou mensagem que pode ser identificado dentro de um fluxo contínuo de entradas monitoradas, como condições ou sinais específicos ou qualquer outra coisa. As arquiteturas conduzidas por eventos geralmente consistem em produtores de eventos e consumidores de eventos. Os consumidores de eventos se inscrevem em algum gerente de eventos e os produtores de eventos publicam para esse gerente. Quando o gerente recebe um evento de um produtor, encaminha esse evento para todos os consumidores registrados ou armazena o evento para posterior encaminhamento. Um manipulador de eventos é uma rotina de retorno que funciona de forma assíncrona e manipula as entradas recebidas em um programa (eventos). Nesse contexto, um evento é um elemento significativo de informações de aplicativo de um framework de desenvolvimento subjacente, geralmente a partir de um toolkit de interface gráfica de usuário (GUI) ou algum tipo de rotina de entrada. No lado GUI, por exemplo, os eventos incluem traços de tecla, atividade do mouse, seleções de ação ou expirações de timer. Do lado da entrada, os eventos incluem abrir ou fechar arquivos e fluxos de dados, ler dados e assim por diante. Manipulação de eventos é o recebimento de um evento em algum manipulador de eventos de um produtor de eventos e processos subseqüentes. Os processos envolvidos no tratamento de eventos incluem: Identificar onde um evento deve ser encaminhado Fazer o encaminhamento Receber o evento encaminhado Tomar algum tipo de ação apropriada em resposta, como escrever em um log, enviar uma rotina de erro ou recuperação ou enviar uma mensagem O evento Pode eventualmente encaminhar o evento para um consumidor de eventos. O benefício das arquiteturas impulsionadas por eventos é que elas permitem coleções arbitrariamente grandes de consumidores e produtores, juntamente com alguns gestores, trocar informações sobre status e resposta contínuas. Eles geralmente também são bastante responsivos aos eventos à medida que ocorrem e funcionam bem em ambientes de comunicação imprevisíveis e assíncronos. ForexConnect. NET Event Handling Peculiarities A API do ForexConnect. NET já possui implementações de interfaces IO2GSessionStatus e IO2GResponseListener para receber notificações de mudanças de status de sessão e recebimento de dados. Portanto, você pode usar os eventos. NET apropriados do objeto O2GSession em vez de implementar essas interfaces por si mesmo. No entanto, você pode implementá-los e usá-los para receber notificações do objeto de sessão após a assinatura, se isso for mais adequado para você. Observe que todos os manipuladores de eventos que você implementou para eventos O2GSession são chamados em um segmento separado. Portanto, você deve ter em mente o seguinte: Você deve sempre fornecer acesso thread-safe a todos os dados armazenados em seu aplicativo que é atualizado a partir de seus manipuladores de eventos. Você não precisa sincronizar chamadas de manipuladores de eventos e não precisa pensar sobre o manipulador de eventos reentrar porque todos os eventos da API já estão sincronizados em um segmento. Portanto, manipuladores de eventos são chamados em seqüência. Você deve lidar com cada evento o mais rápido possível porque eles são sincronizados no thread de manipuladores pela biblioteca ForexConnect. Você pode executar seus próprios threads para acelerar o tratamento de eventos. Gerenciamento de Vida do Objeto Você não precisa de nenhum gerenciamento de recursos adicional para objetos obtidos usando a API do ForexConnect. NET. No entanto, é recomendável chamar o método Dispose () para todos os objetos obtidos que implementá-lo. Essas chamadas permitem que você livre recursos de sistema não utilizados de forma mais eficaz. Você pode usar a declaração using para esta finalidade: Exemplo de aplicativo usando ForexConnect. NET API Visão geral Este exemplo é um aplicativo de console simples que usa o ForexConnect. NET API. Esta aplicação tem as seguintes características: Conectando a um servidor de comércio usando as credenciais de usuário predefinidas Recuperando preços para EUR / USD Recuperando a tabela de contas para o usuário Criando uma ordem de mercado aberto para EUR / USD quando você insere b (comprar) ou s ) Recuperando a tabela de pedidos e recebendo notificações de atualizações nesta tabela Finalizando a execução do aplicativo ao inserir q (sair) Para simplificar o exemplo, toda a lógica do aplicativo é implementada em uma classe MyApp. Você pode fazer o download do código-fonte completo do exemplo: File: ForexConnect Sample Net. zip Conectando-se com o Trade Server O objeto principal do ForexConnect. NET API é um objeto de sessão O2GSession no namespace fxcore2. Este objeto representa uma sessão de conexão de usuários e pode ser criado usando um método estático da classe O2GTransport: O objeto O2GSession notifica assinantes de todas as alterações do estado de conexão através dos seguintes eventos: ou através da interface de retorno de chamada IO2GSessionStatus. As notificações de recebimento de dados podem ser manipuladas usando os seguintes eventos O2GSession: ou através da interface de retorno de chamada IO2GResponseListener. Para se conectar a um servidor comercial usando a API ForexConnect. NET, faça o seguinte: Crie um objeto de sessão. Implementar manipuladores para eventos de objeto de sessão para receber notificações de alterações no status da sessão. Chamar login () para a sessão e aguarde até que o processo de login seja concluído. Processe as notificações recebidas de alterações de status da conexão no onSessionStatusChanged para gerenciar o estado do processo de login. Consulte o seguinte código-fonte para detalhes de implementação: Observe que aguardamos uma notificação de conclusão de logon porque a chamada ltcodegtlogin () é assíncrona. Para isso, usamos um sinal de sincronização especial. Quando onSessionStatusChanged é chamado, o sinal é definido para retomar a execução thread após mSyncSessionEvent. WaitOne (5000) no método run (). Login com a escolha da sessão de negociação Quando uma conta de usuário tem várias sessões de negociação, o login é um processo de várias etapas: 1. Chame o método login () do objeto de sessão com um nome de usuário, senha, URL do servidor e nome do banco de dados especificado. 2. Processar o status recebido TradingSessionRequested no manipulador de eventos onSessionStatusChanged. Existem seguintes passos comuns para processar o status TradingSessionRequested: 2.1. Recupere a lista da sessão de negociação a partir do objeto O2GSession usando o método getTradingSessionDescriptors (). 2.2. Fornecer uma escolha da sessão de negociação para o usuário. 2.3. Solicitar um PIN secreto do usuário. 2.4. Defina a ID de sessão de negociação especificada e PIN usando setTradingSession (). Mostrar origem Gerir preços A gestão de preços inclui os seguintes passos: Verifique se há dados de preços solicitados automaticamente durante o início de sessão. Se sim, vá para a etapa 2. Se não, envie um pedido para os preços atuais de todos os instrumentos. Manipule a resposta. Controle a atualização de preço de um determinado instrumento. Para receber notificações de respostas de solicitação ou alterações de estado de objetos de servidor, você deve implementar e assinar manipuladores de eventos para os eventos apropriados da instância de O2G2Session. Para isso, modifique a classe MyApp para lidar com esses eventos: Solicitar preços atuais Dependendo das configurações do servidor comercial, os preços atuais de todos os instrumentos podem ser automaticamente recebidos durante o processo de login ou você pode solicitar explicitamente esses dados do servidor comercial . Assim, para obter os preços atuais, você deve fazer as seguintes ações: 1. Verifique se há ofertas de preço recebidas no login usando o método isTableLoadedByDefault () da instância O2GLoginRules. 2. Se eles estiverem carregados, obtenha o objeto de resposta de ofertas já recebido usando o método getTableRefeshResponse (Ofertas) da instância O2GLoginRules. Este objeto de resposta pode ser processado para extrair dados de ofertas. Para obter o leitor de ofertas para ler os dados de resposta, faça o seguinte: Obtenha a fábrica do leitor de resposta usando o método getResponseReaderFactory () da instância do objeto de sessão. Crie um leitor usando o método createOffersTableReader () da instância O2GResponseReaderFactory. 3. Se as ofertas não foram recebidas no login, envie uma solicitação para a tabela de ofertas explicitamente usando o método sendRequest () do objeto de sessão. Para criar a solicitação apropriada, faça o seguinte: Obtenha a fábrica de solicitações usando o método getRequestFactory () do objeto de sessão. Criar solicitação usando o método createRefreshTableRequest () da instância O2GRequestFactory. Para solicitar os preços atuais, adicione o seguinte código-fonte ao método run () do nosso exemplo após o processamento de login: Na amostra, esperamos receber a resposta da solicitação usando um sinal de sincronização. Então, pegamos o momento para iniciar o acompanhamento do preço mudando para EUR / USD a partir de. Naturalmente, devemos definir este sinal quando os dados de preços são recebidos. Na nossa amostra, um truque é usado para evitar a duplicação de código. Como você verá mais adiante, o processamento de resposta é o mesmo quando os dados de ofertas são recebidos do objeto O2GLoginRules e quando recuperamos explicitamente dados de ofertas. Então, para processar o objeto de resposta recebido de O2GLoginRules. Você pode chamar diretamente o manipulador de eventos implementado do evento RequestCompleted do objeto de sessão. Recebendo Dados de Preço Como uma chamada de sendRequest () é assíncrona, para receber uma resposta com dados de preço, você precisa implementar o manipulador de eventos para o evento RequestCompleted do objeto de sessão. Como este manipulador de eventos é usado para receber notificações de respostas de todas as solicitações, você deve fazer o seguinte: Verifique se o tipo de resposta é GetOffers. Obter o leitor de resposta O2GOffersTableResponseReader usando O2GResponseReaderFactory para obter dados de preço do objeto de resposta. Processar todas as linhas na tabela Ofertas usando o leitor. Você deve fornecer acesso thread-safe para as ofertas armazenadas em seu aplicativo. Veja o código fonte abaixo para uma amostra de como lidar com o recebimento de uma resposta. Para armazenar os preços atuais para o EUR / USD, as variáveis ​​apropriadas são definidas eo acesso thread-safe a elas é implementado. Um sinal de sincronização é definido quando o recebimento dos dados das ofertas é concluído. Este truque permite aguardar receber os preços atuais no segmento principal depois de enviar o pedido. Nosso aplicativo de amostra trata o evento RequestComplete e extrai o lance EUR / USD e o preço de solicitação. Os preços de pedido e oferta recebidos são armazenados nas variáveis ​​de nível de tabela mEURUSDBid e mEURUSDAsk, são implementados métodos thread-safe para ler e alterar essas variáveis. Recebendo Ofertas Atualizações Observe que a notificação é recebida em um segmento separado, portanto, você deve usar a leitura thread-safe e atualizar as variáveis ​​que armazenam os dados recebidos. Adicione o seguinte código ao MyApp para processar a actualização de preço EUR / USD: Processamento da actualização da tabela Ofertas inclui as seguintes etapas: 1. Obter O2GResponseReaderFactory a partir do objecto de sessão. 2. Obtenha um leitor O2GTablesUpdatesReader usando a fábrica através do método createTablesUpdatesReader. 3. Faça um loop para enumerar cada elemento da lista de atualizações porque os dados recebidos podem conter atualizações para qualquer tipo de objetos, não apenas para a tabela Ofertas. Portanto, você precisa verificar cada item na lista de atualizações para o tipo de tabela necessário e tipo de operação de atualização. 4. Para processar a alteração, use o método getOfferRow () do leitor para recuperar um objeto do tipo O2GOfferRow: Observe que a notificação é recebida em um segmento separado e, portanto, você deve usar leitura thread-safe e atualizar as variáveis ​​que Armazenar os dados recebidos. Adicione o seguinte código ao MyClass para lidar com a atualização de preços EUR / USD: Em nossa amostra, processamos atualizações de preço EUR / USD somente e armazenamos seus últimos valores nas variáveis ​​mEURUSDBid e mEURUSDAsk. Implementamos métodos thread-safe para acessar essas variáveis. Criação de Pedidos Para criar um pedido, faça o seguinte: 1. Certifique-se de ter pelo menos um ID de conta de usuário e um ID de oferta necessários para criar um pedido. Se não, solicite-os em primeiro lugar. 2. Use uma instância O2GRequestFactory para criar O2GValueMap para especificar os parâmetros da ordem. 3. Preencha o valoremap com os parâmetros necessários para criar um tipo específico de ordem Consulte ForexConnectAPI SDK para obter detalhes sobre parâmetros de comandos para criar ordens. 4. Crie um objeto O2GRequest usando O2GRequestFactory para o valor de valor cheio. 5. Inicie a execução do pedido. 6. Receber a resposta da solicitação para ter certeza de que a execução da solicitação foi bem-sucedida. Como precisamos de uma ID de conta para o nosso exemplo, vamos recuperar a tabela Contas em primeiro lugar. Recuperar dados da tabela Contas é semelhante à recuperação de dados da tabela Ofertas. Para simplificar o exemplo, obter a primeira conta da lista de contas de usuário e armazená-lo em uma variável de nível de classe para uso posterior. Esperamos a resposta para evitar a criação da ordem antes que o ID da conta seja recuperado. A melhor prática é o encapsulamento da lógica de criação de pedidos em um método separado da classe MyApp. Além disso, você deve tratar a resposta ao pedido de criação de ordem no manipulador de eventos onRequestCompleted para se certificar de que a ordem é criada. Veja o seguinte código-fonte que cria uma ordem de compra ou venda para o instrumento EUR / USD com 100K quantidade: Observe que existem algumas classes auxiliares úteis no namespace fxcore2.Constants para preencher o objeto valueMap com parâmetros de ordem: Você pode manter o pedido ID para processar a resposta de uma solicitação específica somente: Recuperando a tabela de encomendas Todas as informações sobre os estados das ordens existentes podem ser recuperadas da tabela Pedidos. A API ForexConnect permite recuperar a tabela Pedidos somente para uma conta especificada. Portanto, você precisa fazer o seguinte: Recuperar a tabela Contas. Aguarde até que os dados das contas sejam recebidos. Recupere a tabela Pedidos para cada conta recebida usando createRefreshTableRequestByAccount () da instância O2GRequestFactory. Gerencie a resposta de solicitação em um manipulador de eventos do evento RequestComplete. Manipular a atualização da tabela Orders em um manipulador de eventos do evento TablesUpdates. Para simplificar o nosso exemplo, tomamos a ID da conta armazenada e usá-la no exemplo da recuperação da tabela Pedidos. Observe que, se você armazenar dados de pedidos, você deve fornecer acesso thread-safe a esses dados e gerenciamento correto de contadores de referência para os objetos armazenados. Em nossa amostra, os dados dos pedidos não são armazenados, portanto, a sincronização não é implementada. Finalizando o Aplicativo. Logout Como você pode ver, o método stop () de nossa classe MyApp libera todos os recursos do sistema usados ​​e desinscreve todos os manipuladores de eventos dos eventos da sessão para parar de receber notificações. Você deve chamar logout () antes da rescisão do seu aplicativo. Além disso, você deve chamar o método Dispose () da instância de sessão antes que tmain () retorna o controle. Erros de solicitação de manipulação Quando ocorre um erro durante a execução assíncrona de uma solicitação, o manipulador de eventos do evento RequestFailed é invocado. Em nossa amostra, podemos lidar com o erro, colocando a descrição do erro na saída da consola e parando o aplicativo: Lançamento da amostra Por agora, nosso exemplo pode entrar, recuperar as alterações de preço EUR / USD, mostrar informações sobre ordens existentes e tem um método Para criar uma Ordem de Mercado Aberto. Para lançar a amostra nesta etapa, precisamos implementar o uso de nossa classe MyApp. Para isso, faça o seguinte: Dentro da função principal do nosso aplicativo de console, crie uma instância de nossa classe MyApp. Chame o método run () da instância para efetuar login no servidor comercial e começar a receber atualizações de EUR / USD. Fornecer leitura de entrada de usuários para executar comandos: quando b é entrada, criar uma ordem de mercado de compra quando s é entrada, criar uma ordem de mercado de venda quando q é entrada, saia da aplicação. O método run () da amostra prepara o aplicativo para negociação. Após a preparação é feita, ele retorna verdadeiro se tudo é bom. Como você pode ver, esse método chama todas as funções API de forma assíncrona, mas espera por suas respostas usando objetos de sincronização especiais. Observe que isso não é um método eficaz de usar o ForexConnectAPI, mas é fácil de entender. Não esqueça de especificar um nome de usuário e uma senha válidos para uma chamada do método login (). Agora você pode criar e executar o exemplo. Se você tiver qualquer problema com a construção da amostra, compare-a com o código-fonte do exemplo: File: ForexConnect Sample Net. zip. O que vem a seguir Para obter informações detalhadas sobre todas as classes de API e seus métodos, consulte ForexConnectAPI SDK. Este Artigo em Outros Idiomas

Comments

Popular posts from this blog

Binary Options Pro Signals Testimonials Samples

Programa De Orientação De Forex

Forex Lira Italiana