Oanda Trailing Stops - Um tutorial para usar Trailing Stops com Oanda.
Este tutorial pressupõe que você esteja familiarizado com a plataforma Oanda e saiba como negociar com ela. Se não, veja o tutorial Fazendo o seu primeiro negócio.
Em seguida, decida qual par de moedas você deseja negociar. Neste tutorial, você iniciará a ordem de negociação usando as paradas finais. Paradas à direita estão vendendo ou comprando ordens que fecham o negócio e seguem o preço de mercado para cima e para baixo por uma porcentagem ou um número fixo de pips, o prazo usual para os pontos. Em ambos os casos, a quantidade referida é o valor mínimo pelo qual um pedido pode ser alterado. Para moedas denominadas nos EUA, isso equivale a 1/100 de um por cento. Trailing stops são uma ferramenta essencial de gestão de risco para os comerciantes forex. Eles permitem que seus negócios vencedores sejam executados, ao mesmo tempo em que fornecem uma ordem de parada que continua se ajustando para cima à medida que o preço de mercado melhora.
Abra a janela de pedidos de mercado e configure sua negociação. Neste exemplo, a ordem de negociação é para o par de moedas AUD / JPY a um preço de mercado de 78.15. Agora marque a caixa que diz "Trailing Stop". # 34; A parada móvel geralmente pode ser definida em qualquer lugar; no tutorial, a parada é definida em 78, 15 pontos-base atrás do valor de mercado atual e uma parada relativamente apertada.
Observe que, embora geralmente seja possível especificar um trailing stop para rastrear o preço de mercado pelo valor que desejar, ocasionalmente - e particularmente nos casos em que o spread de compra / venda é amplo ou abrangente - os corretores podem não aceitar paradas próximas muito próximas o preço de mercado.
Note também que não há ninguém correto & # 34; quantidade a parada móvel deve ficar atrás do preço de mercado. Os day traders podem usar uma parada de 15 pip, enquanto um operador de swing pode definir uma parada mais ampla e uma negociação de longo prazo ou posição pode definir uma parada mais ampla - um, por exemplo, que é cerca de três vezes maior que a faixa média diária de preços. Outra maneira de olhar para definir a quantidade adequada à direita é considerar a maior perda que você pode tolerar, por um lado eo outro a probabilidade de uma parada apertada resultando em seu ser vendido por um balanço de mercado inconsequente.
Agora, apenas permita que o comércio siga seu curso. O trailing stop cuidará da saída nesse comércio se o preço cair. Se isso não acontecer, o seu trade vencedor continuará a ser executado.
Neste exemplo, o mercado se move a seu favor e o trailing stop se move para cima com ele. Para a parada móvel de Oanda, quando o preço de mercado ultrapassar seu ponto de entrada mais o custo do spread, a parada subirá um tick para cada tick ascendente no preço de mercado.
Neste exemplo, o preço de mercado caiu e a negociação foi interrompida em 78,08 para uma perda de 7 pips.
Embora nunca seja divertido ver o seu comércio interrompido, o Trailing Stop fez o seu trabalho e as suas perdas foram limitadas.
EDUCAÇÃO DE NEGOCIAÇÃO.
Você é novo na negociação forex e CFD & # 160; Ou você é um profissional experiente que precisa testar suas estratégias em condições reais de mercado? Use qualquer uma das premiadas plataformas de negociação, desktop, MT4 ou aplicativos móveis da OANDA, com sua conta demo gratuita.
EXPLORE RECURSOS EDUCACIONAIS.
Escolha qualquer um dos tópicos abaixo ou visite nossos webinars e agenda de eventos instruídos por nossos traders profissionais.
COMEÇANDO & # 13;
Novo para CFD e forex trading, ou para OANDA? Aprenda tudo o básico aqui.
FERRAMENTAS E ESTRATÉGIAS.
Desenvolva sua estratégia de negociação e aprenda a usar ferramentas de negociação para análise de mercado.
GESTÃO DE CAPITAL
Aprenda a aplicar ferramentas de gerenciamento de risco para preservar seu capital.
WEBINARS E EVENTOS & # 13;
Melhore sua estratégia de negociação com a orientação e experiência de nossos instrutores profissionais. Escolha entre uma vasta gama de webinars e eventos de negociação.
MERCADOS FOREX E CFD.
Comércio livre de comissão em mais de 100 instrumentos, incluindo pares de moedas, índices, commodities, títulos e metais & # 8224 ;.
COMECE O SEU CAMINHO
PLATAFORMA DE NEGOCIAÇÃO DE MESA.
Gráficos avançados e poderosos.
Plataforma fácil de usar e personalizável.
PLATAFORMA DE NEGOCIAÇÃO MÓVEL.
Gráficos ricos e análise técnica.
Notícias atualizadas e notificações push.
METATRADER 4.
Negociação automatizada e suporte completo da EA.
Indicadores personalizáveis e negociação de gráficos.
Somos um tipo diferente de corretor, com base na premissa de que a negociação forex e CFD deve ser acessível a todos os traders, com base em práticas comerciais justas e transparentes.
Os números de velocidade de execução baseiam-se nas medianas das medições de latência de ida e volta do recebimento para resposta de todas as solicitações de ordem de compra e fechamento de mercado executadas entre 1º de agosto e 30 de novembro de 2017 na plataforma de execução OANDA V20, exceto ordens iniciadas pelo MT4.
Contratos por Diferença (CFDs) ou Metais Preciosos NÃO estão disponíveis para residentes dos Estados Unidos.
Os recursos de cobertura MT4 NÃO estão disponíveis para os residentes dos Estados Unidos.
A Comissão de Negociação de Futuros de Commodities (CFTC) limita a alavancagem disponível para os comerciantes forex de varejo nos Estados Unidos para 50: 1 nos principais pares de moedas e 20: 1 para todos os outros. A OANDA Asia Pacific oferece a alavancagem máxima de 50: 1 em produtos FX e os limites de alavancagem oferecidos em CFDs se aplicam. A alavancagem máxima para os clientes da OANDA Canada é determinada pelo IIROC e está sujeita a alterações. Para mais informações, consulte nossa seção de conformidade regulatória e financeira.
& # 169; 1996 - 2018 OANDA Corporation. Todos os direitos reservados. "OANDA", "fxTrade" e a família "fx" de marcas registradas da OANDA são de propriedade da OANDA Corporation. Todas as outras marcas registradas que aparecem neste site são de propriedade de seus respectivos proprietários.
A negociação alavancada de contratos em moeda estrangeira ou outros produtos fora de bolsa, na margem, carrega um alto nível de risco e pode não ser adequada para todos. Aconselhamos que você considere cuidadosamente se o comércio é apropriado para você em função de suas circunstâncias pessoais. Você pode perder mais do que você investe. As informações neste site são de natureza geral. Recomendamos que você procure aconselhamento financeiro independente e assegure-se de entender completamente os riscos envolvidos antes de negociar. A negociação através de uma plataforma on-line traz riscos adicionais. Consulte nossa seção legal aqui.
As apostas de spread financeiro só estão disponíveis para clientes da OANDA Europe Ltd que residem no Reino Unido ou na República da Irlanda. CFDs, recursos de hedge MT4 e índices de alavancagem superiores a 50: 1 não estão disponíveis para residentes nos EUA. As informações contidas neste site não são direcionadas a residentes de países onde sua distribuição, ou uso por qualquer pessoa, seria contrária à lei ou regulamentação local.
A OANDA Corporation é uma empresa registrada na Bolsa de Mercados e Comércio Varejista da Futures Commission, com a Comissão de Negociação de Futuros de Commodities e é membro da National Futures Association. No: 0325821. Por favor, consulte o FOREX INVESTER ALERT da NFA, quando apropriado.
As contas OANDA (Canada) Corporation ULC estão disponíveis para qualquer pessoa com uma conta bancária canadense. OANDA (Canada) Corporation A ULC é regulada pela Organização Reguladora da Indústria de Investimento do Canadá (IIROC), que inclui o banco de dados de verificação de conselheiros on-line da IIROC (IIROC AdvisorReport) e contas de clientes são protegidas pelo Fundo Canadense de Proteção ao Investidor dentro dos limites especificados. Um folheto descrevendo a natureza e os limites da cobertura está disponível mediante solicitação ou no site cipf. ca.
A OANDA Europe Limited é uma empresa registrada na Inglaterra número 7110087 e tem sua sede registrada no andar 9a, Torre 42, 25 Old Broad St, Londres EC2N 1HQ. É autorizado e regulado pela "Autoridade de Conduta Financeira", no: 542574.
A OANDA Asia Pacific Pte Ltd (Co. Reg. No 200704926K) detém uma Licença de Serviços de Mercado de Capitais emitida pela Autoridade Monetária de Cingapura e também é licenciada pela International Enterprise Singapore.
A OANDA Australia Pty Ltd é regulada pela Comissão Australiana de Valores Mobiliários e Investimentos ASIC (ABN 26 152 088 349, AFSL No. 412981) e é a emissora dos produtos e / ou serviços neste website. É importante que você considere o atual Guia de Serviços Financeiros (FSG), a Declaração de Divulgação do Produto ('PDS'), os Termos da Conta e quaisquer outros documentos relevantes da OANDA antes de tomar qualquer decisão de investimento financeiro. Esses documentos podem ser encontrados aqui.
OANDA Japan Co., Ltd. Primeira Diretora de Negócios de Instrumentos Financeiros do Tipo I do Kanto Local Financial Bureau (Kin-sho) número 2137 Institute Financial Futures Association número de assinante 1571.
Oanda Trailing Stops & # 8211; Um tutorial para usar o Trailing Stops com o Oanda.
Oanda Trailing Stops & # 8211; Um tutorial para usar o Trailing Stops com o Oanda, explicado por especialistas profissionais em operações Forex, a equipe de negociação Forex “ForexSQ”.
Oanda Trailing Stops & # 8211; Um tutorial para usar o Trailing Stops com o Oanda.
Abra a plataforma.
Este tutorial pressupõe que você esteja familiarizado com a plataforma Oanda e saiba como negociar com ela. Se não, veja o tutorial Fazendo o seu primeiro negócio.
O primeiro passo é abrir a plataforma de negociação e configurá-la da maneira que preferir.
Em seguida, decida qual par de moedas você deseja negociar. Neste tutorial, você iniciará a ordem de negociação usando os pontos de fuga. Paradas à direita estão vendendo ou comprando ordens que fecham o negócio e seguem o preço de mercado para cima e para baixo por uma porcentagem ou um número fixo de pips, o prazo usual para os pontos. Em ambos os casos, a quantidade referida é o valor mínimo pelo qual um pedido pode ser alterado. Para moedas denominadas nos EUA, isso equivale a 1/100 de um por cento. Trailing stops são uma ferramenta essencial de gestão de risco para os comerciantes forex. Eles permitem que seus negócios vencedores sejam executados, ao mesmo tempo em que fornecem uma ordem de parada que continua se ajustando para cima à medida que o preço de mercado melhora.
Faça o seu comércio.
Abra a janela de pedidos de mercado e configure sua negociação. Neste exemplo, a ordem de negociação é para o par de moedas AUD / JPY a um preço de mercado de 78.15. Agora marque a caixa que diz "Trailing Stop". # 8221; A parada móvel geralmente pode ser definida em qualquer lugar; no tutorial, a parada é definida em 78, 15 pontos-base atrás do valor de mercado atual e uma parada relativamente apertada.
Note que, embora você geralmente possa especificar um trailing stop para rastrear o preço de mercado pelo valor que desejar, ocasionalmente & # 8212; e, particularmente, nos casos em que o spread de compra / venda é amplo ou está aumentando # 8212; os corretores não podem aceitar paradas finais muito próximas do preço de mercado.
Note também que não há ninguém "correto", & # 8221; quantidade a parada móvel deve ficar atrás do preço de mercado. Os comerciantes de dia podem usar uma parada de 15 pip, enquanto um operador de swing pode definir uma parada mais ampla e uma negociação de longo prazo ou posição pode definir uma parada mais ampla & # 8212; um, por exemplo, que é cerca de três vezes maior que a faixa média diária de preços. Outra maneira de olhar para definir a quantidade adequada à direita é considerar a maior perda que você pode tolerar, por um lado eo outro a probabilidade de uma parada apertada resultando em seu ser vendido por um balanço de mercado inconsequente.
Deixe o comércio funcionar.
Agora, apenas permita que o comércio siga seu curso. O trailing stop cuidará da saída nesse comércio se o preço cair. Se isso não acontecer, o seu trade vencedor continuará a ser executado.
A Parada Móvel ativa.
Neste exemplo, o mercado se move a seu favor e o trailing stop move-se para cima com ele. Para a parada móvel de Oanda, quando o preço de mercado ultrapassar seu ponto de entrada mais o custo do spread, a parada subirá um tick para cada tick ascendente no preço de mercado.
Aqui, o stop móvel foi movido para 78.05 à medida que o mercado se moveu para cima.
Comércio parado.
Neste exemplo, o preço de mercado caiu e a negociação foi interrompida em 78,08 para uma perda de 7 pips.
Embora nunca seja divertido ver o seu comércio interrompido, o Trailing Stop fez o seu trabalho e as suas perdas foram limitadas.
Forex Trading Diary # 1 - Negociação Forex Automatizada com a API OANDA.
Forex Trading Diary # 1 - Negociação Forex Automatizada com a API OANDA.
Eu mencionei anteriormente no artigo QuantStart: 2014 In Review que eu estaria gastando parte de 2015 escrevendo sobre negociação forex automatizada.
Como eu geralmente faço pesquisas em bolsas de valores e mercados futuros, achei que seria divertido (e educativo!) Escrever sobre minhas experiências de entrar no mercado forex no estilo de um diário. Cada "entrada de diário" tentará construir sobre todos aqueles antes, mas também deve ser relativamente independente.
Nesta primeira entrada do diário estarei descrevendo como configurar uma nova conta de corretagem prática com a OANDA, além de como criar um mecanismo de negociação básico orientado a eventos multithreaded que pode executar negociações automaticamente em uma configuração prática e ao vivo.
No ano passado, passamos muito tempo examinando o backtester orientado a eventos, principalmente para ações e ETFs. O que eu apresento abaixo é voltado para o forex e pode ser usado para negociação de papel ou negociação ao vivo.
Eu escrevi todas as instruções a seguir para o Ubuntu 14.04, mas elas devem ser facilmente traduzidas para o Windows ou Mac OS X, usando uma distribuição Python como o Anaconda. A única biblioteca adicional usada para o mecanismo de negociação Python é a biblioteca de solicitações, necessária para a comunicação HTTP com a API OANDA.
Uma vez que este é o primeiro post diretamente sobre a troca de moeda estrangeira, e o código apresentado abaixo pode ser diretamente adaptado para um ambiente de negociação ao vivo, eu gostaria de apresentar as seguintes declarações de exoneração de responsabilidade:
Isenção de responsabilidade: Negociar divisas na margem implica um elevado nível de risco e pode não ser adequado para todos os investidores. O desempenho passado não é indicativo de resultados futuros. O alto grau de alavancagem pode funcionar contra você e também para você. Antes de decidir investir em moeda estrangeira, você deve considerar cuidadosamente seus objetivos de investimento, nível de experiência e apetite de risco. Existe a possibilidade de você sustentar uma perda de parte ou de todo o seu investimento inicial e, portanto, não deve investir dinheiro que não pode perder. Você deve estar ciente de todos os riscos associados à negociação em moeda estrangeira e procurar orientação de um consultor financeiro independente, caso tenha alguma dúvida.
Este software é fornecido "como está" e quaisquer garantias expressas ou implícitas, incluindo, mas não se limitando a, garantias implícitas de comercialização e adequação a uma finalidade específica são renunciadas. Em nenhum caso os regentes ou contribuintes serão responsáveis por quaisquer danos diretos, indiretos, incidentais, especiais, exemplares ou consequentes (incluindo, mas não se limitando a, aquisição de bens ou serviços substitutos, perda de uso, dados ou lucros; ou interrupção de negócios), no entanto causada e em qualquer teoria de responsabilidade, seja em contrato, responsabilidade estrita, ou delito (incluindo negligência ou de outra forma) decorrentes de qualquer uso do software, mesmo se avisado da possibilidade de tal dano.
Configurando uma conta com o OANDA.
A primeira pergunta que vem à mente é "Por que escolher o OANDA?". Simplificando, depois de pesquisar um pouco sobre forex brokers que tinham APIs, vi que a OANDA havia lançado recentemente uma API REST adequada que poderia ser facilmente comunicada de praticamente qualquer idioma de uma maneira extremamente simples. Depois de ler a documentação da API do desenvolvedor, decidi tentar, pelo menos com uma conta prática.
Para ser claro - não tenho nenhum relacionamento anterior ou existente com a OANDA e estou apenas fornecendo esta recomendação com base na minha experiência limitada de brincar com sua API de prática e algum uso breve (para download de dados de mercado) enquanto empregado em um fundo anteriormente. Se alguém se deparar com quaisquer outros corretores de forex que também tenham uma API similarmente moderna, então eu ficaria feliz em dar-lhes uma aparência também.
Antes de utilizar a API, é necessário se inscrever para uma conta prática. Para fazer isso, vá para o link de inscrição. Você verá a seguinte tela:
Você poderá então entrar com suas credenciais de login. Certifique-se de selecionar a guia "fxTradePractice" na tela de login:
Quando chegar, você precisará anotar seu ID da conta. Ele está listado abaixo do cabeçalho "Meus Fundos", ao lado de "Primário". O meu é um número de 7 dígitos. Além disso, você também precisará gerar um token de API pessoal. Para fazer isso, clique em "Gerenciar acesso à API" abaixo da guia "Outras ações" na parte inferior esquerda:
Nesse estágio, você poderá gerar um token de API. Você precisará da chave para usá-la mais tarde, portanto, certifique-se de anotá-la também.
Agora você vai querer lançar o aplicativo FXTrade Practice, que nos permitirá ver as ordens executadas e nosso (papel!) Lucro & amp; perda.
Se você estiver executando um sistema Ubuntu, precisará instalar uma versão ligeiramente diferente do Java. Em particular, a versão Oracle do Java 8. Se você não fizer isso, o simulador de prática não será carregado a partir do navegador. Eu corri estes comandos no meu sistema:
Agora você poderá iniciar o ambiente comercial de prática. Volte para o painel OANDA e clique no link verde destacado "Ativar FXTrade Practice". Ele abrirá uma caixa de diálogo Java perguntando se você deseja executá-lo. Clique em "Executar" e a ferramenta fxTrade Practice será carregada. O meu padrão foi um gráfico de velas de 15 min de EUR / USD com o painel de cotações à esquerda:
Tela OANDA fxTrade Practice.
Neste ponto, estamos prontos para começar a projetar e codificar nosso sistema automatizado de negociação forex contra a API OANDA.
Visão geral da arquitetura de negociação.
Se você tem acompanhado a série de backtester orientada a eventos para ações e ETFs que eu criei no ano passado, você estará ciente de como um sistema de negociação orientado a eventos funciona. Para aqueles de vocês que são novos no software orientado a eventos, sugiro fortemente ler o artigo para obter algumas dicas sobre como eles funcionam.
Em essência, todo o programa é executado em um infinte, enquanto o loop só termina quando o sistema de negociação é desligado. O mecanismo central de comunicação do programa é dado por meio de uma fila que contém eventos.
A fila é constantemente consultada para verificar novos eventos. Uma vez que um evento tenha sido retirado do topo da fila, ele deve ser tratado por um componente apropriado do programa. Portanto, um feed de dados de mercado pode criar TickEvents que são colocados na fila quando chega um novo preço de mercado. Um objeto de estratégia de geração de sinal pode criar OrderEvents que devem ser enviados para uma corretora.
A utilidade de tal sistema é dada pelo fato de que não importa qual ordem ou tipos de eventos são colocados na fila, pois eles sempre serão tratados corretamente pelo componente certo dentro do programa.
Além disso, diferentes partes do programa podem ser executadas em encadeamentos separados, o que significa que nunca há qualquer espera por qualquer componente em particular antes do processamento de qualquer outro. Isso é extremamente útil em situações de negociação algorítmica em que os manipuladores de feed de dados de mercado e os geradores de sinal de estratégia têm características de desempenho muito diferentes.
O loop de negociação principal é dado pelo seguinte pseudocódigo do Python:
Como afirmamos acima, o código é executado em um loop infinito. Em primeiro lugar, a fila é pesquisada para recuperar um novo evento. Se a fila estiver vazia, o loop simplesmente reinicia após um curto período de suspensão conhecido como "heartbeat". Se um evento for encontrado, seu tipo é avaliado e, em seguida, o módulo relevante (a estratégia ou o manipulador de execução) é chamado para manipular o evento e, possivelmente, gerar novos que retornam à fila.
Os componentes básicos que criaremos para nosso sistema de negociação incluem o seguinte:
Manipulador de Preço de Transmissão - Isso manterá uma conexão de longa duração aberta aos servidores da OANDA e enviará dados de tick (ou seja, lance / pedido) através da conexão para quaisquer instrumentos que nos interessem. Gerador de Sinal de Estratégia - Isso levará uma sequência de marcações eventos e usá-los para gerar ordens de negociação que serão executadas pelo manipulador de execução. Manipulador de Execução - Executa um conjunto de eventos de pedido e executa-os cegamente com OANDA. Eventos - Esses objetos constituem as "mensagens" transmitidas na fila de eventos. Nós só precisamos de dois para esta implementação, ou seja, o TickEvent e o OrderEvent. Ponto de entrada principal - O ponto de entrada principal também inclui o loop de "troca" que pesquisa continuamente a fila de mensagens e envia mensagens para o componente correto. Isso geralmente é conhecido como "event loop" ou "event handler".
Vamos agora discutir a implementação do código em detalhe. Na parte inferior do artigo está a lista completa de todos os arquivos de código-fonte. Se você colocá-los no mesmo diretório e executar python trading. py, você começará a gerar pedidos, desde que tenha preenchido seu ID de conta e token de autenticação da OANDA.
Implementação Python.
É uma prática ruim armazenar senhas ou chaves de autenticação dentro de uma base de código, pois você nunca pode prever quem terá acesso permitido a um projeto. Em um sistema de produção, armazenamos essas credenciais como variáveis de ambiente com o sistema e, em seguida, consultamos esses "envvars" sempre que o código é reimplantado. Isso garante que senhas e tokens de autenticação nunca sejam armazenados em um sistema de controle de versão.
No entanto, como estamos apenas interessados em criar um sistema de negociação de "brinquedos" e não nos preocupamos com detalhes de produção neste artigo, iremos separar esses tokens de autenticação em um arquivo de configurações.
No arquivo de configuração settings. py a seguir, temos um dicionário chamado ENVIRONMENTS, que armazena os endpoints da API para a API de streaming de preço OANDA e para a API de negociação. Cada sub dicionário contém três endpoints de API separados: real, prática e sandbox.
A sandbox API é puramente para testar código e verificar se não há erros ou bugs. Ele não tem garantias de tempo de atividade das APIs reais ou práticas. A prática API, em essência, fornece a capacidade de comércio de papel. Ou seja, ele fornece todos os recursos da API real em uma conta de prática simulada. A API real é apenas isso - é negociação ao vivo! Se você usar esse endpoint em seu código, ele será negociado com o saldo da sua conta ativa. SEJA EXTREMAMENTE CUIDADO!
IMPORTANTE: Ao negociar com a API da prática, lembre-se de que um custo de transação importante, o impacto no mercado, não é considerado. Como nenhum negócio está realmente sendo colocado no ambiente, esse custo deve ser contabilizado de outra maneira em outro lugar, usando um modelo de impacto de mercado, se você quiser avaliar realisticamente o desempenho.
A seguir, estamos usando a conta de prática conforme fornecida pela configuração DOMAIN. Precisamos de dois dicionários separados para os domínios, um para os componentes da API de streaming e de negociação. Finalmente, temos o ACCESS_TOKEN e o ACCOUNT_ID. Eu preenchi os dois abaixo com IDs fictícios, então você precisará utilizar os seus próprios, que podem ser acessados na página da conta OANDA:
A próxima etapa é definir os eventos que a fila usará para ajudar todos os componentes individuais a se comunicarem. Precisamos de dois: TickEvent e OrderEvent. A primeira armazena informações sobre os dados do mercado de instrumentos, como o (melhor) lance / pedido e o tempo de negociação. O segundo é usado para transmitir ordens para o manipulador de execução e, portanto, contém o instrumento, o número de unidades a negociar, o tipo de ordem ("mercado" ou "limite") eo "lado" (ou seja, "comprar" e "vender" ).
Para tornar nosso código de eventos à prova do futuro, criaremos uma classe base chamada Event e teremos todos os eventos herdados disso. O código é fornecido abaixo em events. py:
A próxima aula que vamos criar lidará com a estratégia de negociação. Nesta demonstração, vamos criar uma estratégia sem sentido que simplesmente recebe todos os ticks do mercado e, a cada 5 ticks, compra ou vende aleatoriamente 10.000 unidades de EUR / USD.
Claramente esta é uma "estratégia" ridícula! No entanto, é fantástico para fins de teste, porque é simples de codificar e entender. Em futuras entradas no diário, estaremos substituindo isso por algo significativamente mais excitante que (esperançosamente) gerará lucro!
O arquivo strategy. py pode ser encontrado abaixo. Vamos trabalhar nisso e ver o que está acontecendo. Em primeiro lugar, importamos a biblioteca aleatória e o objeto OrderEvent de events. py. Precisamos da biblioteca aleatória para selecionar uma ordem aleatória de compra ou venda. Precisamos de OrderEvent, pois é assim que o objeto de estratégia enviará pedidos para a fila de eventos, que será posteriormente executada pelo manipulador de execução.
A classe TestRandomStrategy simplesmente pega o instrumento (nesse caso, EUR / USD), o número de unidades e a fila de eventos como um conjunto de parâmetros. Em seguida, ele cria um contador de ticks que é usado para informar quantas ocorrências de TickEvent ele viu.
A maior parte do trabalho ocorre no método calculate_signals, que simplesmente recebe um evento, determina se é um TickEvent (caso contrário, ignora) e incrementa o contador de ticks. Em seguida, ele verifica se a contagem é divisível por 5 e, em seguida, compra ou vende aleatoriamente, com uma ordem de mercado, o número especificado de unidades. Certamente não é a maior estratégia de negociação do mundo, mas será mais do que adequada para nossos testes com a API de corretagem da OANDA!
O próximo componente é o manipulador de execução. Esta classe é encarregada de atuar em instâncias de OrderEvent e fazer solicitações ao broker (neste caso, OANDA) de uma maneira "burra". Ou seja, não há gerenciamento de riscos ou sobreposição de construção de portfólio. O manipulador de execução simplesmente executará qualquer pedido que tenha sido dado.
Devemos transmitir todas as informações de autenticação para a classe Execution, incluindo o "domínio" (prática, real ou sandbox), o token de acesso e o ID da conta. Em seguida, criamos uma conexão segura com o httplib, um dos Pythons construídos em bibliotecas.
A maior parte do trabalho ocorre em execute_order. O método requer um evento como um parâmetro. Em seguida, ele constrói dois dicionários - os cabeçalhos e os parâmetros. Esses dicionários serão então codificados corretamente (parcialmente por urllib, outra biblioteca Python) para serem enviados como uma solicitação HTTP POST para a API OANDAs.
Nós passamos os parâmetros do cabeçalho Content-Type e Authorization, que incluem nossas informações de autenticação. Além disso, codificamos os parâmetros, que incluem o instrumento (EUR / USD), unidades, tipo de ordem e lado (compra / venda). Finalmente, fazemos o pedido e salvamos a resposta:
O componente mais complexo do sistema de negociação é o objeto StreamingForexPrices, que lida com as atualizações de preço de mercado do OANDA. Existem dois métodos: connect_to_stream e stream_to_queue.
O primeiro método usa a biblioteca de pedidos do Python para se conectar a um soquete de fluxo com os cabeçalhos e parâmetros apropriados. Os parâmetros incluem o ID da conta e a lista de instrumentos necessários que devem ser ouvidos para atualizações (neste caso, são apenas EUR / USD). Observe a seguinte linha:
Isso informa a conexão a ser transmitida e, portanto, mantida aberta de uma maneira longa.
O segundo método, stream_to_queue, realmente tenta se conectar ao fluxo. Se a resposta não for bem sucedida (ou seja, o código de resposta não é HTTP 200), então simplesmente retornamos e saímos. Se for bem-sucedido, tentamos carregar o pacote JSON retornado em um dicionário Python. Finalmente, convertemos o dicionário do Python com o instrumento, bid / ask e timestamp em um TickEvent que é enviado para a fila de eventos:
Agora temos todos os componentes principais no lugar. O passo final é finalizar tudo o que escrevemos até agora em um programa "principal". O objetivo deste arquivo, conhecido como trading. py, é criar dois encadeamentos separados, um dos quais executa o manipulador de precificação e o outro que executa o manipulador de negociação.
Por que precisamos de dois segmentos separados? Simplificando, estamos executando dois códigos de código "separados", ambos em execução contínua. Se fôssemos criar um programa sem encadeamento, o soquete de fluxo contínuo usado para as atualizações de preços nunca "liberaria" de volta para o caminho do código principal e, portanto, nunca executaríamos nenhuma negociação. Da mesma forma, se executássemos o loop de negociação (veja abaixo), nós nunca retornaríamos o caminho do fluxo para o soquete de streaming de preço. Por isso, precisamos de vários segmentos, um para cada componente, para que possam ser realizados de forma independente. Ambos se comunicarão através da fila de eventos.
Vamos examinar isso um pouco mais. Criamos dois segmentos separados com as seguintes linhas:
Passamos o nome da função ou método para o argumento da palavra-chave target e passamos uma iterável (como uma lista ou tupla) para o argumento da palavra-chave args, que então passa esses argumentos para o método / função real.
Finalmente nós começamos os dois tópicos com as seguintes linhas:
Assim, somos capazes de executar dois segmentos de código efetivamente looping infinitos, que se comunicam através da fila de eventos. Observe que a biblioteca de threads do Python não produz um verdadeiro ambiente multithread com vários núcleos devido à implementação do CPython do Python e do Global Interpreter Lock (GIL). Se você gostaria de ler mais sobre multithreading em Python, por favor dê uma olhada neste artigo.
Vamos examinar o resto do código em detalhes. Primeiramente, importamos todas as bibliotecas necessárias, incluindo fila, encadeamento e hora. Em seguida, importamos todos os arquivos de código acima. Eu pessoalmente prefiro capitalizar qualquer configuração, que é um hábito que eu aprendi trabalhando com o Django!
Depois disso, definimos a função trade, que foi explicada no Python-pseudocode acima. Um loop while infinito é executado (enquanto True:), que continuamente pesquisa a partir da fila de eventos e apenas pula o loop se for encontrado vazio. Se um evento for encontrado, então é um TickEvent ou um OrderEvent e, em seguida, o componente apropriado é chamado para executá-lo. Nesse caso, é uma estratégia ou um manipulador de execução. O loop, em seguida, simplesmente dorme por "heartbeat" segundos (neste caso, 0,5 segundos) e continua.
Finalmente, definimos o ponto de entrada principal do código na função __main__. É bem comentado abaixo, mas vou resumir aqui. Em essência, instanciamos a fila de eventos e definimos os instrumentos / unidades. Em seguida, criamos a classe de streaming de preço StreamingForexPrices e, em seguida, o manipulador de execução Execution. Ambos recebem os detalhes de autenticação necessários fornecidos pela OANDA ao criar uma conta.
Em seguida, criamos a instância de TestRandomStrategy. Por fim, definimos os dois threads e depois os iniciamos:
Para executar o código, basta colocar todos os arquivos no mesmo diretório e chamar o seguinte no terminal:
Note que para parar o código neste estágio é necessário matar o processo Python, via "Ctrl-Z" ou equivalente! Eu não adicionei um segmento adicional para lidar com procurando o sys. exit () que seria necessário para parar o código com segurança. Uma maneira potencial de parar o código em uma máquina Ubuntu / Linux é digitar:
E, em seguida, passe a saída deste (um número de processo) para o seguinte:
Onde PROCESS_ID deve ser substituído pela saída do pgrep. Note que esta NÃO é uma boa prática!
Em artigos posteriores, estaremos criando um mecanismo de stop / start mais sofisticado que faz uso da supervisão de processos do Ubuntu para ter o sistema de negociação funcionando 24 horas por dia, 7 dias por semana.
A saída após 30 segundos ou mais, dependendo da hora do dia em relação às principais horas de negociação para EUR / USD, para o código acima, é dada abaixo:
As primeiras cinco linhas mostram os dados do tíquete JSON retornados da OANDA com preços de compra / venda. Posteriormente, você pode ver a ordem de execução! a saída, bem como a resposta JSON retornada da OANDA confirmando a abertura de uma transação de compra para 10.000 unidades de EUR / USD e o preço em que ela foi atingida.
Isso continuará funcionando indefinidamente até você matar o programa com um comando "Ctrl-Z" ou similar.
Qual é o próximo?
Em artigos posteriores, vamos realizar algumas melhorias muito necessárias, incluindo:
Estratégias reais - estratégias de forex adequadas que geram sinais lucrativos. Infraestrutura de produção - Implementação remota do servidor e sistema de negociação monitorado 24/7, com capacidade de parada / partida. Portfolio e gestão de risco - Portfolio e sobreposições de risco para todas as ordens sugeridas da estratégia. Múltiplas estratégias - Construindo um portfólio de estratégias que se integram na sobreposição de gerenciamento de riscos.
Tal como acontece com o backtester acionado por eventos de ações, também precisamos criar um módulo de backtest de forex. Isso nos permitirá realizar pesquisas rápidas e facilitar o desenvolvimento de estratégias.
settings. py (lembre-se de alterar ACCOUNT_ID e ACCESS_TOKEN!):
A Quantcademy.
Participe do portal de associação da Quantcademy que atende à crescente comunidade de traders de quantificação de varejo e aprenda como aumentar a lucratividade de sua estratégia.
Negociação Algorítmica Bem Sucedida.
Como encontrar novas ideias de estratégia de negociação e avaliá-las objetivamente para o seu portfólio usando um mecanismo de backtesting personalizado no Python.
Comércio Algorítmico Avançado.
Como implementar estratégias de negociação avançadas usando análise de séries temporais, aprendizado de máquina e estatísticas Bayesianas com R e Python.
Tutorial Forex: O que é Forex Trading?
O mercado de câmbio é o "lugar" onde as moedas são negociadas. As moedas são importantes para a maioria das pessoas em todo o mundo, quer elas percebam ou não, porque as moedas precisam ser trocadas para conduzir negócios e comércio exterior. Se você está morando nos EUA e quer comprar queijo da França, você ou a empresa de quem você compra o queijo tem que pagar os franceses pelo queijo em euros (EUR). Isso significa que o importador dos EUA teria que trocar o valor equivalente de dólares americanos (USD) em euros. O mesmo vale para viajar. Um turista francês no Egito não pode pagar em euros para ver as pirâmides porque não é a moeda localmente aceita. Como tal, o turista tem que trocar os euros pela moeda local, neste caso a libra egípcia, à taxa de câmbio atual.
A necessidade de trocar moedas é a principal razão pela qual o mercado cambial é o maior e mais líquido mercado financeiro do mundo. Ele supera outros mercados em tamanho, até mesmo o mercado de ações, com um valor médio negociado de cerca de US $ 2.000 bilhões por dia. (O volume total muda o tempo todo, mas a partir de agosto de 2012, o Bank for International Settlements (BIS) informou que o mercado forex era negociado em excesso de US $ 4,9 trilhões por dia.)
Um aspecto único deste mercado internacional é que não há mercado central para o câmbio. Em vez disso, o comércio de moeda é conduzido eletronicamente no mercado de balcão (OTC), o que significa que todas as transações ocorrem via redes de computadores entre traders em todo o mundo, e não em uma central centralizada. O mercado está aberto 24 horas por dia, cinco dias e meio por semana, e as moedas são negociadas em todo o mundo nos principais centros financeiros de Londres, Nova York, Tóquio, Zurique, Frankfurt, Hong Kong, Cingapura, Paris e Sydney. cada fuso horário. Isto significa que quando termina o dia de negociação nos EUA, o mercado forex começa novamente em Tóquio e Hong Kong. Como tal, o mercado forex pode ser extremamente ativo a qualquer hora do dia, com cotações de preços mudando constantemente.
Mercado à vista e os mercados a termo e futuro.
Na verdade, existem três maneiras pelas quais as instituições, corporações e indivíduos negociam forex: o mercado à vista, o mercado a termo e o mercado futuro. A negociação forex no mercado à vista sempre foi o maior mercado, porque é o ativo real "subjacente" em que os mercados a termo e futuros se baseiam. No passado, o mercado de futuros era o local mais popular para os comerciantes, porque estava disponível para investidores individuais por um longo período de tempo. No entanto, com o advento da negociação eletrônica e de numerosos corretores de forex, o mercado spot testemunhou um enorme aumento na atividade e agora supera o mercado de futuros como o mercado de negociação preferencial para investidores individuais e especuladores. Quando as pessoas se referem ao mercado forex, geralmente se referem ao mercado spot. Os mercados futuro e futuro tendem a ser mais populares entre as empresas que precisam proteger seus riscos de câmbio em uma data específica no futuro.
Qual é o mercado spot?
Mais especificamente, o mercado à vista é onde as moedas são compradas e vendidas de acordo com o preço atual. Esse preço, determinado pela oferta e demanda, é um reflexo de muitas coisas, incluindo taxas de juros atuais, desempenho econômico, sentimento diante de situações políticas em andamento (tanto local quanto internacionalmente), bem como a percepção do desempenho futuro de uma moeda em relação a outra. . Quando uma transação é finalizada, isso é conhecido como "transação spot". É uma transação bilateral pela qual uma parte entrega uma quantia de moeda acordada à contraparte e recebe uma quantia especificada de outra moeda ao valor da taxa de câmbio acordada. Depois que uma posição é fechada, a liquidação é em dinheiro. Embora o mercado à vista seja comumente conhecido como aquele que lida com transações no presente (e não no futuro), essas transações realmente levam dois dias para serem liquidadas.
Quais são os mercados a termo e futuros?
Ao contrário do mercado à vista, os mercados futuro e futuro não negociam moedas reais. Em vez disso, eles negociam contratos que representam reivindicações para um determinado tipo de moeda, um preço específico por unidade e uma data futura para liquidação.
No mercado a termo, os contratos são comprados e vendidos OTC entre duas partes, que determinam os termos do acordo entre si.
No mercado de futuros, contratos futuros são comprados e vendidos com base em um tamanho padrão e data de liquidação em mercados públicos de commodities, como o Chicago Mercantile Exchange. Nos EUA, a National Futures Association regula o mercado de futuros. Os contratos de futuros têm detalhes específicos, incluindo o número de unidades negociadas, datas de entrega e liquidação e incrementos mínimos de preço que não podem ser personalizados. A troca funciona como uma contrapartida para o comerciante, proporcionando compensação e liquidação.
Ambos os tipos de contratos são vinculativos e normalmente são liquidados em dinheiro para a troca em questão no vencimento, embora os contratos também possam ser comprados e vendidos antes de expirarem. Os mercados a termo e futuros podem oferecer proteção contra risco quando negociam moedas. Normalmente, grandes corporações internacionais usam esses mercados para se proteger contra flutuações futuras da taxa de câmbio, mas os especuladores também participam desses mercados.
Note que você verá os termos: FX, forex, mercado de câmbio e mercado de câmbio. Esses termos são sinônimos e todos se referem ao mercado forex.
Комментариев нет:
Отправить комментарий