Thursday, 29 March 2018

Estratégia de negociação de luxor


Estratégias de Backtesting com R.
Vamos começar com uma variação da estratégia de negociação de Luxor. Esta estratégia usa dois indicadores SMA: SMA (10) e SMA (30).
Se o indicador SMA (10) for maior ou igual ao indicador SMA (30), enviaremos uma ordem longa stoplimit para abrir e fechar quaisquer posições curtas que possam estar abertas. Se o SMA (10) for menor que o SMA (30), enviaremos uma ordem curta stoplimit para abrir e fechar quaisquer posições longas abertas.
Nota: Lembre-se de que já estabelecemos algumas variáveis ​​no início do livro. Se você copiar e colar o código abaixo por si mesmo, você receberá erros. Haverá tutoriais completos listados mais tarde no livro.
5.1 Configuração de Estratégia.
Carregamos nossos símbolos em símbolos.
Depois de carregarmos nossos símbolos, usamos o FinancialInstrument :: stock () para definir os meta-dados para nossos símbolos. Neste caso, estamos definindo a moeda em USD (dólares americanos) com um multiplicador de 1. O multiplicador é aplicado ao preço. Isso variará de acordo com o instrumento financeiro em que você está trabalhando, mas para ações deve ser sempre 1.
Em seguida, vamos atribuir nomes próprios para nossos objetos de portfólio, conta e estratégia. Estes podem ser qualquer nome que você deseja e deve ser baseado em como você pretende registrar os dados mais tarde.
Removemos os resíduos das corridas anteriores, eliminando os valores da carteira e da conta. Neste ponto, o que fizemos até agora é desnecessário. No entanto, é um bom hábito incluir isso com todos os seus scripts, pois os dados armazenados na memória podem afetar os resultados ou gerar erros.
Agora, inicializamos nosso portfólio, conta e pedidos. Também armazenamos nossa estratégia para economizar para mais tarde.
5.2 Adicionar indicadores.
Os indicadores são funções usadas para medir uma variável. Um SMA é apenas uma média dos preços anteriores; tipicamente preço de fechamento. Portanto, a SMA (10) é apenas uma média dos últimos 10 preços de fechamento.
Este é o lugar onde a biblioteca TTR entra; abreviação de Regras de Negociação Técnicas. SMA () é uma função da TTR, assim como muitos outros indicadores. Se você quer MACD, RSI, Bollinger Bands, etc., você usará a biblioteca TTR.
add. indicator é uma função do quantstrat e adiciona nossos indicadores ao nosso objeto de estratégia. Por enquanto, usaremos os seguintes parâmetros:
estratégia: ao armazenar nosso nome de estratégia na variável strategy. st tudo o que precisamos fazer é passar essa variável. Caso contrário, forneceríamos uma string. Use variáveis ​​quando isso se tornará redundante à medida que nos movemos.
Nome: função de indicador; para este exemplo, SMA. Nós apenas passamos o nome da função como uma seqüência de caracteres. Parâmetros para a função são passados ​​para o parâmetro de argumentos ...
argumentos: se olharmos? SMA, vemos os parâmetros necessários são x e n com o n padrão sendo 10. x é o objeto de preço. No nosso exemplo, estamos usando preços de fechamento.
etiqueta: rótulo da variável que será adicionada ao nosso conjunto de dados. Isso deve ser exclusivo para cada indicador que adicionamos.
Vamos pausar por um momento e examinar os argumentos. Observe que estamos passando uma série de funções para x. Se você quisesse acessar a variável Fechar do conjunto de dados IWM, você normalmente faria isso, ligando para IWM $ Close ou IWM [, 4]. Aqui estamos acessando um objeto de dados mktdata.
mktdata é um conjunto de dados especial criado para cada símbolo que irá armazenar todos os nossos indicadores e sinais. Quando a estratégia é executada, você verá o objeto mktdata em seu ambiente. Só existirá para o último símbolo, a estratégia executada.
A função add. indicator () (juntamente com add. signal e add. rules que discutiremos momentaneamente) não é avaliada até que executem nossa estratégia. Tudo o que faz é adicionar nossas especificações ao objeto de estratégia. Quando executamos nossa estratégia, o objeto mktdata é criado para cada iteração de símbolos em que nossos dados serão adicionados.
Cl é realmente curto para Close como você pode ter adivinhado. Na verdade, temos várias funções de mão curta para nossas variáveis:
OpCl (): Abrir e fechar (conjunto de dados n x 2)
HLC (): alto, baixo e fechado (conjunto de dados n x 3)
Veja a ajuda para qualquer um desses símbolos acima para uma listagem mais detalhada.
quote () é uma função R que simplesmente envolve o parâmetro fornecido entre aspas.
Então, adicionamos dois indicadores ao nosso objeto mktdata, nFast (SMA (10)) e nSlow (SMA (30)). Vamos agora adicionar sinais.
5.3 Adicionar sinais.
Os sinais são um valor dado quando as condições são atendidas por nossos indicadores. Por exemplo, nesta estratégia, queremos um sinal sempre que nFast seja maior ou igual a nSlow. Nós também queremos outro sinal onde nFast é menor do que nSlow. Vamos nomear estes sinais longos e curtos, respectivamente.
Mais uma vez, estamos passando strategy. st para o parâmetro de estratégia. O nome toma uma função assim como ocorreu no add. indicator. Aqui vamos usar algumas funções de Quantstrat embutidas. Vamos dar uma olhada no que está disponível:
sigComparison: booleano, compare duas variáveis ​​por relação gt maior que lt inferior a eq igual a gte maior ou igual a lte menor ou igual a.
sigCrossover: booleano, VERDADEIRO quando um sinal cruza outro. Usa os mesmos relacionamentos como sigComparison.
sigFormula: aplique uma fórmula para múltiplas variáveis.
sigPeak: identifique mínimos locais ou máximos de um indicador.
sigThreshold: booleano, quando um indicador cruza um valor. Usa relacionamentos como identificados acima.
sigTimestamp: gera um sinal com base em um timestamp.
Nós tentaremos usar cada um desses sinais ao longo do livro quando possível.
5.4 Adicionar regras.
Nós construímos agora nossos indicadores nFast e nSlow e geramos sinais baseados nesses indicadores. Agora, temos que adicionar regras para esses sinais.
add. rules determinará as posições que tomamos, dependendo dos nossos sinais, que tipo de ordem vamos colocar e quantos compartilhamentos compraremos.
Sempre que nossa variável longa (sigcol) é TRUE (sigval), queremos colocar uma ordem stoplimit (tipo de ordem). Nossa preferência está no limite superior (preferir) mais. Queremos comprar 100 ações (orderqty). Uma nova variável EnterLONG será adicionada ao mktdata. Quando entramos (digitar), uma posição EnterLONG será VERDADEIRA, caso contrário FALSO. Este pedido não substituirá quaisquer outras ordens abertas.
Se a nossa variável curta (sigcol) for TRUE (sigval), colocamos outra ordem stoplimit (tipo de ordem) com uma preferência no Low (preferir). Vamos vender 100 ações (orderqty). Este pedido não substituirá nenhuma ordem aberta (substituir).
Agora temos regras configuradas para inserir posições com base nos nossos sinais. No entanto, não temos regras para sair de posições abertas. Vamos criar esses agora.
Nossa próxima regra, Exit2SHORT, é uma ordem de mercado simples para sair (tipo) quando breve é ​​VERDADEIRO (sigcol, sigval). Isso encerra todas as posições longas (orderside, orderqty). Este pedido irá substituir (substituir) quaisquer ordens abertas.
Por fim, fechamos as posições curtas (ordens) quando há tempo é VERDADEIRO (sigcol, sigval). Nós sairemos (tipo) ao preço de mercado (tipo de ordem) todas as posições abertas (orderqty). Este pedido irá substituir quaisquer ordens abertas que possamos (substituir).
TxnFees são taxas de transação associadas a um pedido. Isso pode ser qualquer valor que você escolher, mas deve refletir com precisão as taxas cobradas pelo corretor selecionado. Além disso, mostramos apenas aqui as saídas. Alguns corretores cobram taxas em posições de entrada também. TxnFees pode ser adicionado a qualquer conjunto de regras.
Se você não tem certeza de quais taxas o corretor selecionado cobra - o que há de errado com você? Vá descobrir agora. Alguns corretores de varejo (TD Ameritrade, ETrade) cobrará menos de US $ 10 por posição em ações ilimitadas; alguns como Interactive Brokers ou TradeStation cobrará ainda menos dependendo do número de ações. $ 10 é um bom ponto de partida.
5.5 Aplicar estratégia.
Agora chegamos à parte divertida! Faz ou morre. Aqui vamos descobrir se nós construímos nossa estratégia corretamente ou se temos algum erro em nosso código. Cruze seus dedos. Vamos!
Impressionante! Sabemos que pelo menos o nosso código é bom.
applyStrategy () é a função que vamos executar quando tivermos uma estratégia direta. O que quero dizer com isso é uma estratégia que não testa parâmetros diferentes. Chegaremos a esse tipo de teste mais tarde.
Você pode ver que é uma chamada muito simples; Nós apenas passamos nossa variável strategy. st como o primeiro parâmetro e nosso portfólio como o segundo parâmetro. Não há necessidade de entrar em parâmetros adicionais no momento.
Não mostraremos os resultados de mais corridas de applyStrategy para economizar espaço. Basta saber que, se você obtiver saída de comércio, você deveria estar bem.
Em seguida, atualizamos nosso portfólio e objetos de conta. Fazemos isso com as funções updatePortf (), updateAcct () e updateEndEq (). updatePortf calcula o P & amp; L para cada símbolo nos símbolos. updateAcct calcula o patrimônio dos dados do portfólio. E updateEndEq atualiza o patrimônio final para a conta. Eles devem ser chamados em ordem.

Forex.
38 & # 32; пользователей находятся здесь.
МОДЕРАТОРЫ.
Wrayjustin Trading Pennies for Dollars FXMarketMaker Professional Trader Hot_Biscuits_ Modelos e Garrafas spicy_pasta RichJG Financial Astrologer El_Huachinango MOD finance_student Prop Trader о команде модераторов & raquo;
Bem-vindo ao Reddit,
a primeira página da internet.
e inscreva-se em uma das milhares de comunidades.
Quer adicionar à discussão?
помощь правила сайта центр поддержки вики реддикет mod guidelines связаться с нами.
приложенияи инструменты Reddit para iPhone Reddit para o site móvel Android кнопки.
Использование данного сайта означает, что вы принимаете & # 32; пользовательского соглашения & # 32; и & # 32; Политика конфиденциальности. &cópia de; 2018 reddit инкорпорейтед. Все права защищены.
REDDIT e o logotipo ALIEN são marcas registradas da reddit inc.
& pi; Renderizado pelo PID 9356 em & # 32; app-512 & # 32; em 2018-01-13 02: 41: 56.025153 + 00: 00 executando o código do país b995ef9: UA.

Blog DotheFinancial.
& raquo; Sistemas de negociação.
O código do sistema LUXOR gratuito.
Os programadores que desejam implementar esta lógica podem encontrar o código do sistema de negociação no Easy Language da TradeStation abaixo. (Outros leitores podem ignorar este parágrafo e continuar com a descrição do sistema de negociação). Adicionamos alguns comentários ao código para que você saiba o que está feito e para que você possa alterar o código facilmente de acordo com suas necessidades.
Texto 3.1: Código de linguagem fácil do sistema de negociação LUXOR. Letras em negrito: Código para as entradas. Letras normais: filtro de tempo adicionado. Em colchetes de comentários: possíveis saídas simples.
Modificado em 18 de junho de 2006 e 15 de julho de 2008 por Urban Jaekle Modificado em 1 de janeiro de 2007 por Russell Stagg>
MP (0), Rápido (0), Lento (0), GoLong (Falso), GoShort (Falso), BuyStop (0), SellStop (0), BuyLimit (0), SellLimit (0), tEnd (1700);
tende = tset + WindowDist; se o tempo & gt; tset - 5 e time & lt; tende então a começar.
Rápido = Média (Close, FastLength); Slow = Average (Close, SlowLength);
Se Fast cruza acima Slow então comece BuyStop = High + 1 point; BuyLimit = Alto + 5 pontos;
Se Fast cruza abaixo Slow, então comece SellStop = Low - 1 ponto; SellLimit = Low - 5 pontos;
Se GoLong e C & lt; BuyLimit então.
Compre (& quot; Long; quot;) barra seguinte no BuyStop Stop; Se GoShort e C & gt; SellLimit então.
Vender Short (& Short; quot;) next bar no SellStop Stop;
Venda a barra seguinte em Lento - 1 ponto Parada;
Compre para cobrir a próxima barra em Lento + 1 ponto Parada;
O código de linguagem fácil pode ser dividido em diferentes partes:
1. Definição de entradas e variáveis.
2. Filtro de tempo (discutido abaixo em 3.4)
3. Configuração de entrada e saída.
Uma vez que esta primeira seção deste capítulo se concentra na lógica de entrada, colocamos a parte de saída do sistema de negociação no Código de linguagem fácil entre parênteses. Isso significa que primeiro deixamos as saídas e apenas recebemos as entradas deste sistema. Mais tarde, neste capítulo, usamos essas entradas e aplicamos nossas próprias saídas para elas.

Estratégia de negociação de Luxor
Puxe pedidos 0.
Clone este wiki localmente.
Clone na área de trabalho.
Este é o Trading Strategies usando o R wiki!
Usando quantstrat para avaliar as estratégias de negociação intradiária, por Jan Humme e Brian G. Peterson [The Luxor Strategy, por Guy Yollin] (r-programming / files / quantstrat-IV. pdf)
[Uma tendência muito simples seguindo a estratégia usando R, por Brian G. Peterson] (rinfinance / agenda / 2018 / BrianPeterson. pdf) [IBrokers - Automated Trading with R e Interactive Brokers, de Jeffrey A. Ryan] (rinfinance / agenda / 2018 /JeffRyan_Tutorial. pdf) [Trabalhando com xts e quantmod, por Jeffrey A. Ryan] (rinfinance / RinFinance2009 / presentations / xts_quantmod_workshop. pdf) [Financial Time-Series Tomou, xts e chartSeries, por Jeffrey A. Ryan e Joshua M. Ulrich ] (https: //rmetrics/files/Meielisalp2008/Presentations/Ryan. pdf) [Rmetrics 2009 Presentation on Real Time Trading com R e IBrokers, de Jeffrey A. Ryan] (quantmod / Rmetrics2009 / RealTimeTrading. pdf) [Market Scale Data - Um tour de xts, xtime, mmap, indexação e muito mais! (R / Finance 2018), por Jeffrey A. Ryan] (rinfinance / agenda / 2018 / talk / JeffRyan. pdf) [Quantstat, Blotter, Quantmod lectory notes, de Guy Yollin] (r-programming / papers) Sobre quantstrat [quantmod links] (quantmod / links /) [R Financial Time Series Plotting] (oportunoportfolio. github. io/rCharts_time_series/history. html)
&cópia de; 2018 GitHub, Inc. Termos Privacidade Segurança Status Ajuda.
Você não pode executar essa ação neste momento.
Você fez login com outra guia ou janela. Recarregue para atualizar sua sessão. Você se separou em outra guia ou janela. Recarregue para atualizar sua sessão.

Estratégia de negociação de Luxor
Puxe pedidos 0.
Participe do GitHub hoje.
O GitHub é o lar de mais de 20 milhões de desenvolvedores que trabalham juntos para hospedar e rever o código, gerenciar projetos e criar software juntos.
Clone com HTTPS.
Use o Git ou o check-out com o SVN usando o URL da web.
Estratégias de negociação implementadas em R.
&cópia de; 2018 GitHub, Inc. Termos Privacidade Segurança Status Ajuda.
Você não pode executar essa ação neste momento.
Você fez login com outra guia ou janela. Recarregue para atualizar sua sessão. Você se separou em outra guia ou janela. Recarregue para atualizar sua sessão.

No comments:

Post a Comment