Design do sistema de comércio amibroker
ami broker.
Use a ferramenta de Exploração AmiBroker poderosa e ultra-rápida para explorar o mercado para oportunidades e ineficiências - sua vantagem para ficar à frente da multidão.
Definir entrada objetiva & amp; saia regras para remover as emoções da sua negociação. Use Backtesting no nível da carteira e amp; Otimização para ajustar o desempenho. Valide a robustez usando Walk-forward & amp; Simulação de Monte Carlo.
Troque visualmente por Gráficos ou use a ferramenta Análise para gerar lista de pedidos, ou faça pedidos diretamente do seu código usando a interface de negociação automática. Seja qual for o seu estilo. A escolha é sua.
Atualize sua negociação para o próximo nível.
Gráficos poderosos, fáceis de usar e bonitos.
As médias, bandas e indicadores de arrastar e soltar, outros parâmetros, modifiquem parâmetros em tempo real usando controles deslizantes e personalizem usando muitos estilos diferentes e amp; gradientes para torná-los bonitos.
O backtesting e otimização de portfólio mais rápido do mundo.
A velocidade surpreendente vem junto com recursos sofisticados como: dimensionamento de posições avançadas, pontuação e classificação, negociação rotacional, métricas personalizadas, backtesters personalizados, suporte a múltiplas moedas.
Automação e processamento em lote.
Não gaste seu tempo e energia em tarefas repetidas. Deixe a AmiBroker automatizar sua rotina usando um processador Batch recém-integrado. Não há mais chatos repetidos. Você pode executá-lo a partir do agendador do Windows para que o AmiBroker possa funcionar enquanto você dorme.
Toda a informação ao seu alcance.
Esta é apenas uma das muitas coisas que você pode fazer usando a Exploração.
A janela Análise é o lar de backtesting, otimização, walk-forward e simulação de Monte Carlo.
Ferramentas poderosas para o comerciante do sistema.
A janela Análise.
A janela Análise é o lar de todas as suas verificações, explorações, backtests de portfólio, otimizações, testes avançados e simulação de Monte Carlo.
Selecione mercados para oportunidades.
Exploração é ferramenta de triagem multidimensional / mineração de dados que produz saída tabular totalmente programável com número ilimitado de linhas e colunas de todos os dados de símbolos.
Teste seu sistema.
O Backtest permite testar o desempenho do seu sistema em dados históricos. A simulação é realizada em nível de carteira como na vida real, com vários títulos negociados ao mesmo tempo, cada um com uma regra de dimensionamento de posição definível pelo usuário.
Pontuação & amp; ranking.
Se os sinais de entrada múltipla ocorrerem na mesma barra e você fica sem poder de compra, o AmiBroker realiza um ranking bar-by-bar com base na classificação de posição definível pelo usuário para encontrar comércio preferível.
Encontre valores de parâmetros ótimos.
Diga à AmiBroker que tente milhares de combinações de parâmetros diferentes para encontrar os melhores. Use a Otimização de Inteligência Artificial Inteligente (Embreagem de Partículas e CMA-ES) para procurar espaços enormes em tempo limitado.
Teste avançado.
Não caia em uma armadilha sobreposta. Valide a robustez do seu sistema, verificando o desempenho fora da amostra após o processo de otimização em amostra.
Simulação de Monte Carlo.
Prepare-se para condições de mercado difíceis. Verifique os cenários do pior caso e a probabilidade de arruinar. Veja as informações estatísticas de seu sistema comercial.
Linguagem de fórmula concisa e rápida para expressar suas idéias de negociação.
Processamento rápido de matriz e matriz.
Nos vetores e matrizes de AmiBroker Formula Language (AFL) são tipos nativos como números simples. Para calcular o ponto médio dos arrays High e Low element-by-element, basta digitar MidPt = (H + L) / 2; // H e L são arrays e é compilado para o código da máquina vectorizada. Não é necessário escrever loops. Isso permite executar suas fórmulas na mesma velocidade que o código escrito no montador. Os operadores e as funções de matriz rápida nativas tornam os cálculos estatísticos uma brisa.
Uma linguagem concisa significa menos trabalho.
Seus sistemas de negociação e indicadores escritos na AFL terão menos digitação e menos espaço do que em outras línguas, porque muitas tarefas típicas na AFL são apenas single-liners. Por exemplo, a parada de Chandelier baseada em ATR é dinâmica: ApplyStop (stopTypeTrailing, stopModePoint, 3 * ATR (14), True, True);
Depurador interno.
O depurador permite que você faça um passo único através do seu código e veja as variáveis em tempo de execução para entender melhor o que a sua fórmula está fazendo.
Editor de código de última geração.
Desfrute de um editor avançado com destaque de sintaxe, auto-completar, dicas de chamada de parâmetro, dobramento de código, auto-indentação e relatórios de erros em linha. Quando você encontra um erro, a mensagem significativa é exibida diretamente na linha, portanto, não esticar seus olhos.
Menos digitação, resultados mais rápidos.
A codificação de sua fórmula nunca foi tão fácil com fragmentos de código prontos para uso. Use dezenas de fragmentos pré-escritos que implementam tarefas e padrões comuns de codificação, ou crie seus próprios trechos!
Multi-threading.
Todas as suas fórmulas beneficiam automaticamente de vários processadores / núcleos. Cada fórmula de gráfico, renderizador gráfico e cada janela de análise são executadas em segmentos separados.
Três edições AmiBroker para escolher.
Edição Padrão.
Versão de nível de entrada para comerciantes de fim de dia e swing. Fim de dia e Tempo real. Intraday a partir do intervalo de 1 minuto. Limite de 10 símbolos na janela de cotações em tempo real. 2 threads simultâneos por janela de análise. Apenas 32 bits.
Edição Profissional.
Plataforma profissional em tempo real e analítica com backtesting e otimização avançados. Fim de dia e Tempo real. Todos Intraday Tick / Second / Minute intervalos, símbolos ilimitados na janela de cotação em tempo real. Símbolos ilimitados em Time & amp; Sales. Estatísticas de MAE / MFE incluídas. Até 32 threads simultâneos por janela de análise. Inclui versões de 64 bits e 32 bits.
Ultimate Pack Pro.
Tudo o que a AmiBroker Professional Edition possui mais dois programas muito úteis:
AmiQuote - download de citações de múltiplas fontes em linha com dados EOD e intraday gratuitos e dados fundamentais gratuitos.
Assistente de código AFL - cria fórmulas AFL fora de frases em inglês simples. Ferramenta de aprendizagem inestimável para iniciantes. (AmiQuote e as licenças do Assistente de Código AFL valem US $ 198 quando compradas separadamente, para que você economize 8% ao comprar este pacote)
Requisitos do sistema: Microsoft Windows 10, 8.1, 7, Vista, XP, 2000, pelo menos 512 MB de RAM. Os usuários do Apple Mac podem usar o Bootcamp / Parallels / VMWare para executar o AmiBroker.
Empresa Sobre Nós Termos de Branding & amp; Condições Política de privacidade Envie-nos um e-mail e # x2709; Docs Lista de recursos O que há de novo Guia do usuário Fontes de dados Vídeos Suporte Suporte técnico & amp; Área de Membros de Vendas Área de Conhecimento Base de Conhecimento do DevLog KB Outros AmiBroker YahooGroup Links úteis.
Este site usa cookies. Ao navegar neste site você concorda com nossa privacidade e amp; política de cookies.
Design do sistema de comércio Amibroker
NOTA: Este é um tópico bastante avançado. Leia primeiro os tutoriais AFL anteriores.
A idéia por trás de uma otimização é simples. Primeiro, você precisa ter um sistema comercial, isso pode ser um simples cruzamento de média móvel, por exemplo. Em quase todos os sistemas, existem alguns parâmetros (como período de média) que decidem como o sistema se comporta (ou seja, é adequado para longo prazo ou curto prazo, como é reagir em estoques altamente voláteis, etc.). A otimização é o processo de encontrar valores ótimos desses parâmetros (dando o maior lucro do sistema) para um determinado símbolo (ou um portfólio de símbolos). AmiBroker é um dos poucos programas que permitem otimizar seu sistema em vários símbolos ao mesmo tempo.
Para otimizar seu sistema, você deve definir de um até dez parâmetros para serem otimizados. Você decide o que é um valor mínimo e máximo permitido do parâmetro e em que incrementos este valor deve ser atualizado. O AmiBroker então executa vários testes de retorno do sistema usando TODAS as possíveis combinações de valores de parâmetros. Quando este processo está concluído, o AmiBroker exibe a lista de resultados ordenados pelo lucro líquido. Você pode ver os valores dos parâmetros de otimização que dão o melhor resultado.
Escrevendo fórmula AFL.
A otimização no testador traseiro é suportada por uma nova função chamada otimização. A sintaxe desta função é a seguinte:
variável - é uma variável AFL normal que recebe o valor retornado pela função de otimização.
Com os modos normal de backtesting, digitalização, exploração e comentário, a função de otimização retorna o valor padrão, portanto, a chamada de função acima é equivalente a: variável = padrão;
Na função de otimização, otimizar a função retorna valores sucessivos de min para max (inclusive) com step stepping.
& quot; Descrição " é uma string que é usada para identificar a variável de otimização e é exibida como um nome de coluna na lista de resultados de otimização.
O padrão é um valor padrão que otimiza a função retorna na exploração, no indicador, nos comentários, na varredura e nos modos normais de teste de volta.
min é um valor mínimo da variável que está sendo otimizada.
max é um valor máximo da variável otimizada.
step é um intervalo usado para aumentar o valor de min para max.
AmiBroker suporta até 64 chamadas para otimizar a função (portanto, até 64 variáveis de otimização), note que, se você estiver usando uma otimização exaustiva, é realmente uma boa idéia limitar o número de variáveis de otimização a apenas alguns. Cada chamada para otimizar gerar loops de otimização de geração (max - min) / passo e múltiplas chamadas para otimizar multiplique o número de execuções necessárias. Por exemplo, otimizar dois parâmetros usando 10 etapas exigirá 10 * 10 = 100 loops de otimização. Chamar otimizar a função apenas UMA VEZ por variável no início da sua fórmula à medida que cada chamada gera novos laços de otimização A otimização de vários símbolos é totalmente suportada pelo AmiBroker O espaço de busca máximo é de 2 64 (10 19 = 10,000,000,000,000,000,000) de combinações.
1. Otimização de variável única:
sigavg = Otimizar ("Média do sinal", 9, 2, 20, 1);
Sell = Cross (Signal (12, 26, sigavg), MACD (12, 26));
2. Otimização de duas variáveis (adequado para gráficos em 3D)
per = Optimize ("per", 2, 5, 50, 1);
Nível = Otimizar ("nível", 2, 2, 150, 4);
Vender = Cruzar (Nível, CCI (per));
3. Otimização variável múltipla (3):
mfast = Optimize ("MACD Fast", 12, 8, 16, 1);
mslow = Optimize ("MACD Slow", 26, 17, 30, 1);
sigavg = Otimizar ("Média do sinal", 9, 2, 20, 1);
Buy = Cross (MACD (mfast, mslow), Signal (mfast, mslow, sigavg));
Sell = Cross (Signal (mfast, mslow, sigavg), MACD (mfast, mslow));
Depois de inserir a fórmula, basta clicar no botão Otimizar em & quot; Análise automática & quot; janela. AmiBroker começará a testar todas as combinações possíveis de variáveis de otimização e informará os resultados na lista. Após a otimização é feita, a lista de resultado é apresentada ordenada pelo lucro líquido%. Como você pode classificar os resultados por qualquer coluna na lista de resultados, é fácil obter os melhores valores de parâmetros para o menor desconto, o menor número de negócios, o maior fator de lucro, a menor exposição ao mercado e o maior retorno anual ajustado pelo risco. As últimas colunas da lista de resultados apresentam os valores das variáveis de otimização para teste dado.
Quando você decide qual combinação de parâmetros atende às suas necessidades, o melhor que você precisa fazer é substituir os valores padrão em otimizar as chamadas de função com os valores ótimos. Na fase atual você precisa digitá-los manualmente na janela de edição da fórmula (o segundo parâmetro da função otimizar a chamada).
Exibição de gráficos de otimização animada 3D.
Para exibir o gráfico de otimização 3D, você precisa primeiro executar a otimização de duas variáveis. A otimização de duas variáveis precisa de uma fórmula que tenha 2 chamadas de função otimizadas (). Um exemplo de fórmula de otimização de duas variáveis parece assim:
per = Optimize ("per", 2, 5, 50, 1);
Nível = Otimizar ("nível", 2, 2, 150, 4);
Vender = Cruzar (Nível, CCI (per));
Depois de inserir a fórmula, você precisa clicar em & quot; Otimizar & quot; botão.
Uma vez que a otimização esteja completa, você deve clicar na seta suspensa no botão Otimizar e escolher Exibir gráfico de otimização 3D. Em alguns segundos, um gráfico de superfície tridimensional colorido aparecerá em uma janela de visualização de gráfico 3D. Um exemplo de gráfico 3D gerado usando a fórmula acima é mostrado abaixo.
Por padrão, os gráficos 3D exibem valores de lucro líquido contra variáveis de otimização. No entanto, você pode plotar gráfico de superfície 3D para qualquer coluna na tabela de resultados de otimização. Basta clicar no cabeçalho da coluna para ordená-lo (uma seta azul aparecerá indicando que os resultados de otimização são classificados pela coluna selecionada) e, em seguida, escolha Exibir gráfico de otimização 3D novamente.
Ao visualizar como os parâmetros do seu sistema afetam o desempenho da negociação, você pode decidir mais facilmente quais valores de parâmetro produzem "frágil" e que produzem "robusto" performance do sistema. Configurações robustas são regiões no gráfico 3D que mostram mudanças graduais em vez de abruptas no gráfico de superfície. Os gráficos de otimização 3D são uma ótima ferramenta para evitar o ajuste de curvas. O ajuste de curvas (ou sobre otimização) ocorre quando o sistema é mais complexo do que precisa ser, e toda essa complexidade foi focada em condições de mercado que talvez nunca mais aconteçam. Mudanças radicais (ou espigões) nos gráficos de otimização 3D mostram claramente áreas de otimização excessiva. Você deve escolher uma região de parâmetros que produza um amplo e amplo patamar no gráfico 3D para o seu comércio de vida real. Os conjuntos de parâmetros que produzem picos de lucro não funcionarão de forma confiável na negociação real.
Controles do visualizador de gráficos 3D.
O visualizador de gráficos 3D da AmiBroker oferece capacidades de visualização totais com rotação e animação completas de gráficos. Agora você pode visualizar os resultados do sistema de todas as perspectivas possíveis. Você pode controlar a posição e outros parâmetros do gráfico usando o mouse, a barra de ferramentas e os atalhos do teclado, o que você achar mais fácil para você. Abaixo, você encontrará a lista.
- para rodar - mantenha pressionado o botão esquerdo do mouse e mova-se nas direções X / Y.
- para Zoom-in, zoom-out - mantenha pressionado o botão RIGHT do mouse e mova-se nas direções X / Y.
- para mover (traduzir) - mantenha pressionado o botão esquerdo do mouse e a tecla CTRL e mova-se nas direções X / Y.
- para animar - mantenha pressionado o botão esquerdo do mouse, arraste rapidamente e solte o botão enquanto arrasta.
SPACE - animate (auto-rotate)
CHAVE DE FLECHA ESQUERDA - rotate vert. esquerda.
CHAVE DE SETA PARA A DIREITA - rotate vert. certo.
CHAVE DE SETA PARA CIMA - gire horiz. acima.
CHAVE DE SETA PARA BAIXO - gire horiz. baixa.
NUMPAD + (PLUS) - Perto (aproximar)
NUMPAD - (MINUS) - Far (zoom out)
NUMPAD 4 - mover para a esquerda.
NUMPAD 6 - mude para a direita.
NUMPAD 8 - mova-se para cima.
NUMPAD 2 - mova para baixo.
PAGE UP - nível da água para cima.
PAGE DOWN - nível da água para baixo.
Otimização inteligente (não exaustiva).
A AmiBroker agora oferece otimização inteligente (não exaustiva) além da busca regular e exaustiva. A pesquisa não exaustiva é útil se o número de todas as combinações de parâmetros de um determinado sistema de negociação for simplesmente muito grande para ser viável para uma busca exaustiva.
A busca exaustiva é perfeitamente adequada, desde que seja razoável usá-la. Digamos que você tenha 2 parâmetros cada um variando de 1 a 100 (passo 1).
São 10000 combinações - perfeitamente corretas para pesquisa exaustiva. Agora, com 3 parâmetros, você obteve 1 milhão de combinações - ainda está correto para pesquisa exaustiva (mas pode ser lenta). Com 4 parâmetros você tem 100 milhões de combinações e com 5 parâmetros (1..100) você tem 10 bilhões de combinações. Nesse caso, seria muito demorado verificá-los, e esta é a área onde os métodos de pesquisa inteligente não exaustivos podem resolver o problema que não são solucionáveis em um tempo razoável usando uma busca exaustiva.
Aqui está absolutamente a instrução SIMPLES sobre como usar um novo otimizador não exaustivo (neste caso CMA-ES).
1. Abra sua fórmula no Editor de fórmulas.
2. Adicione esta única linha no topo da sua fórmula:
OptimizerSetEngine (& quot; cmae & quot;); // você também pode usar & quot; spso & quot; ou "trib" Aqui.
3. (Opcional) Selecione seu alvo de otimização em Análise automática, Configurações, & Walker Forward & quot; guia, campo de destino de otimização. Se você ignorar este passo, ele irá otimizar o CAR / MDD (retorno anual composto dividido pelo máximo% de redução).
Agora, se você executar a otimização usando esta fórmula, usará o novo otimizador CMA-ES evolutivo (não exaustivo).
Como funciona ?
A otimização é o processo de encontrar o mínimo (ou o máximo) de função dada. Qualquer sistema comercial pode ser considerado como uma função de certo número de argumentos. As entradas são parâmetros e dados de cotação, a saída é o seu objetivo de otimização.
(diga CAR / MDD). E você está procurando o máximo de função dada.
Alguns algoritmos de otimização inteligente são baseados na natureza (comportamento animal) - algoritmo PSO, ou processo biológico - Algoritmos genéticos,
e alguns são baseados em conceitos matemáticos derivados de humanos - CMA-ES.
Esses algoritmos são usados em muitas áreas diferentes, incluindo finanças. Insira "PSO finance & quot; ou "CMA-ES finance" no Google e você encontrará muitas informações.
Métodos não exaustivos (ou "inteligentes") encontrarão otimizar global ou local. O objetivo é, naturalmente, encontrar um global, mas se houver um único pico afiado.
As combinações de parâmetros fora de zilhões, métodos não-exaustivos podem não conseguir esse único pico, mas assumi-lo de acordo com a perspectiva do comerciante, encontrar único pico afiado é inútil para negociação, porque esse resultado seria instável (muito frágil) e não replicável na negociação real. No processo de otimização, estamos procurando por regiões de platô com parâmetros estáveis e esta é a área onde brilham métodos inteligentes.
Quanto ao algoritmo usado por pesquisa não-exaustiva, ele se destaca da seguinte maneira:
a) o otimizador gera alguma (inicialmente aleatória) população inicial de conjuntos de parâmetros.
b) o backtest é realizado pela AmiBroker para cada conjunto de parâmetros da população.
c) os resultados dos backtests são avaliados de acordo com a lógica do algoritmo.
e a nova população é gerada com base na evolução dos resultados,
d) se o novo melhor for encontrado - salve-o e vá para a etapa b) até que os critérios de parada sejam atendidos.
Os critérios de parada de exemplo podem incluir:
a) atingindo as iterações máximas especificadas.
b) pare se o intervalo dos melhores valores objetivos das últimas gerações X é zero.
c) pare se adicionar 0,1 vetor de desvio padrão em qualquer direção do eixo principal não altera o valor do valor objetivo.
Para usar qualquer otimizador inteligente (não exaustivo) no AmiBroker, você precisa especificar o mecanismo otimizador que deseja usar na fórmula AFL usando a função OptimizerSetEngine.
A função seleciona o mecanismo de otimização externo definido pelo nome. AmiBroker atualmente é fornecido com 3 motores: Otimizador de enxame de partículas padrão ("spso"), Tribes ("trib") e CMA-ES ("cmae") - os nomes em chaves devem ser usados em chamadas OptimizerSetEngine.
Além de selecionar o mecanismo do otimizador, você pode querer definir alguns dos seus parâmetros internos. Para isso use a função OptimizerSetOption.
Função OptimizerSetOption (& quot; name & quot ;, value).
A função define parâmetros adicionais para o mecanismo de otimização externo. Os parâmetros são dependentes do motor.
Todos os três otimizadores fornecidos com AmiBroker (SPSO, Trib, CMAE) suportam dois parâmetros: & quot; Executa & quot; (número de execuções) e "MaxEval" (avaliações máximas (testes) por única execução). O comportamento de cada parâmetro é dependente do motor, então os mesmos valores podem e, geralmente, produzir resultados diferentes com diferentes motores usados.
A diferença entre Runs e MaxEval é a seguinte. A avaliação (ou teste) é um teste simples (ou avaliação do valor da função objetivo).
RUN é uma execução completa do algoritmo (encontrando o melhor valor) - geralmente envolvendo muitos testes (avaliações).
Cada execução simplesmente RESTAURA todo o processo de otimização desde o novo início (nova população aleatória inicial).
Portanto, cada execução pode levar a encontrar diferentes locais max / min (se não encontrar um global). Assim, o parâmetro Runs define o número de algoritmos subseqüentes. MaxEval é o número máximo de avaliações (bactests) em qualquer execução única.
Se o problema for relativamente simples e 1000 testes forem suficientes para encontrar o máximo global, é mais provável que 5x1000 encontre o máximo global.
porque há menos chances de ficar preso no máximo local, pois as corridas subseqüentes começam a partir de diferentes populações aleatórias iniciais.
Escolher valores de parâmetros pode ser complicado. Depende do problema sob teste, da sua complexidade, etc., etc.
Qualquer método estocástico não exaustivo não lhe dá garantia de encontrar max / min global, independentemente do número de testes se for menor.
do que exaustivo. A resposta mais fácil é: especificar como grande número de testes como é razoável para você em termos de tempo necessário para concluir.
Outro conselho simples é multiplicar por 10 o número de testes com a adição de nova dimensão. Isso pode levar a superestimar o número.
de testes necessários, mas é bastante seguro. Os motores enviados são projetados para ser simples de usar, portanto, "razoável" Os valores padrão / automático são usados, de modo que a otimização pode geralmente ser executada sem especificar nada (aceitando padrões).
É importante entender que todos os métodos inteligentes de otimização funcionam melhor em espaços de parâmetros contínuos e funções objetivas relativamente lisas. Se o espaço dos parâmetros é discreto, os algoritmos evolutivos podem ter problemas para encontrar o melhor valor. É especialmente verdade para parâmetros binários (on / off) - não são adequados para qualquer método de pesquisa que use gradiente de mudança de função objetiva (como a maioria dos métodos inteligentes o fazem). Se o seu sistema comercial contiver muitos parâmetros binários, você não deve usar o otimizador inteligente diretamente neles. Em vez disso, tente otimizar apenas os parâmetros contínuos usando otimizador inteligente e altere os parâmetros binários manualmente ou através de um script externo.
SPSO - Otimizador padrão de enxertia de partículas.
O otimizador padrão de enxertia de partículas é baseado no código SPSO2007 que é suposto produzir bons resultados desde que os parâmetros corretos (ou seja, Runs, MaxEval) sejam fornecidos para um problema específico.
Escolher as opções corretas para o otimizador de PSO pode ser complicado, portanto, os resultados podem variar significativamente caso a caso.
SPSO. dll vem com códigos de fonte completos dentro de "ADK & quot; subpasta.
(encontrando o valor ideal em 1000 testes dentro do espaço de busca de 10000 combinações)
Buy = Cross (MACD (fa, sl), 0);
Sell = Cross (0, MACD (fa, sl));
TRIBES - Otimizador de enxertia de partículas sem parâmetros adaptáveis.
Tribes é uma versão adaptável e sem parâmetros do otimizador não-exaustivo PSO (otimização de enxame de partículas). Para o conhecimento científico, veja:
Em teoria, ele deve ter um desempenho melhor do que o PSO normal, pois pode ajustar automaticamente o tamanho dos enxames e a estratégia do algoritmo para o problema a ser resolvido.
A prática mostra que seu desempenho é bastante semelhante ao PSO.
O plugin Tribes. DLL implementa & quot; Tribes-D & quot; (ou seja, sem adição). Baseado em clerc. maurice. free. fr/pso/Tribes/TRIBES-D. zip por Maurice Clerc. Códigos fonte originais utilizados com permissão do autor.
Tribes. DLL vem com o código fonte completo (dentro da pasta "ADK")
"MaxEval" - número máximo de avaliações (backtests) por execução (padrão = 1000).
O padrão 1000 é bom para 2 ou máximo 3 dimensões.
& quot; Executa & quot; - número de execuções (reinicia). (padrão = 5)
Você pode deixar o número de execuções no valor padrão de 5.
Por padrão, o número de execuções (ou reinicia) é definido como 5.
Para usar o otimizador Tribes, você só precisa adicionar uma linha ao seu código:
OptimizerSetOption (& quot; MaxEval & quot; 5000); // 5000 avaliações máx.
CMA-ES - Covariance Matrix Adaptation Otimizador de estratégia evolutiva.
CMA-ES (Covariance Matrix Adaptation Evolutionary Strategy) é otimizador avançado não-exaustivo.
Para o conhecimento científico, veja:
De acordo com benchmarks científicos, supera as nove outras estratégias evolutivas mais populares (como PSO, evolução genética e diferencial).
O plugin CMAE. DLL implementa & quot; Global & quot; variante de pesquisa com vários reinícios com o aumento do tamanho da população.
CMAE. DLL vem com o código fonte completo (dentro da pasta "ADK")
Por padrão, o número de execuções (ou reinicia) é definido como 5.
É aconselhável deixar o número padrão de reinícios.
Você pode alterá-lo usando OptimizerSetOption (& quot; Runs & quot ;, N) call, onde N deve estar no intervalo 1..10.
Especificar mais de 10 execuções não é recomendado, embora possivel.
Observe que cada execução usa TWICE o tamanho da população da corrida anterior para que ela cresça exponencialmente.
Portanto, com 10 corridas, você acaba com a população 2 ^ 10 maior (1024 vezes) do que a primeira corrida.
Existe outro parâmetro "MaxEval". O valor padrão é ZERO, o que significa que o plugin irá calcular automaticamente o MaxEval necessário. É aconselhável NÃO definir o MaxEval sozinho, pois o padrão funciona bem.
O algoritmo é inteligente o suficiente para minimizar o número de avaliações necessárias e converge muito rápido para o ponto de solução, muitas vezes encontra soluções mais rápidas do que outras estratégias.
É normal que o plugin ignore algumas etapas de avaliação, se detectar que a solução foi encontrada, portanto, você não deve se surpreender que a barra de progresso de otimização possa se mover muito rápido em alguns pontos. O plugin também possui capacidade para aumentar o número de etapas sobre o valor inicialmente estimado se for necessário encontrar a solução. Devido à sua natureza adaptativa, o "tempo estimado deixado" e / ou "número de etapas" exibido pela caixa de diálogo de progresso é apenas "melhor adivinhação no tempo" e pode variar durante o curso de otimização.
Para usar o otimizador CMA-ES, você só precisa adicionar uma linha ao seu código:
Isso executará a otimização com configurações padrão que são boas para a maioria dos casos.
Deve-se notar, como é o caso com muitos algoritmos de pesquisa de espaço contínuo, que diminui o "passo" o parâmetro nas chamadas do Optimize () funciton não afeta significativamente os tempos de otimização. O único que importa é o problema "dimensão", isto é, o número de parâmetros diferentes (número de otimização de chamadas de função). O número de & quot; passos & quot; por parâmetro pode ser definido sem afetar o tempo de otimização, então use a melhor resolução que você deseja. Em teoria, o algoritmo deve ser capaz de encontrar solução em no máximo 900 * (N + 3) * (N + 3) backtests em que "N" é a dimensão. Na prática, ele converge muito mais rápido. Por exemplo, a solução em espaço de parâmetros dimensionais 3 (N = 3) (digamos 100 * 100 * 100 = 1 milhão de etapas exaustivas) pode ser encontrada em apenas 500 a 900 passos CMA-ES.
Otimização individual multi-threaded.
A partir do AmiBroker 5.70, além do multithreading de vários símbolos, você pode executar otimização de um único símbolo multi-threaded. Para acessar esta funcionalidade, clique na seta suspensa ao lado de "otimizar" na janela Nova Análise e selecione & quot; Individual Optimize & quot ;.
"otimizar individual" usará todos os núcleos de processador disponíveis para executar otimização de um único símbolo, tornando-o muito mais rápido do que otimização regular.
1. O backtester personalizado NÃO é suportado (ainda)
2. Os motores de otimização inteligentes NÃO são suportados - apenas otimização EXHAUSTIVA funciona.
Eventualmente, podemos eliminar a limitação (1) - quando o AmiBroker é alterado, então o backtester personalizado não usa mais OLE. Mas (2) provavelmente está aqui para ficar por muito tempo.
Base de Conhecimento dos Usuários.
14 de outubro de 2018.
EOD Gap-Trading Portfolio sistema.
Adicionado em 29 de fevereiro de 2018, pontos adicionais a considerar:
1) Este sistema depende da obtenção de preenchimentos precisos ao preço aberto. Para obter esses preenchimentos, é necessário um feed de dados de atraso mínimo de qualidade e habilidades avançadas de programação para implementar a automação comercial.
2) Ao definir o preço de entrada ligeiramente abaixo do preço de abertura (tentando melhorar o desempenho), o sistema falha miseravelmente. Mesmo melhorar o preço por apenas um centavo mata o sistema. Isso sugere que a maior parte do lucro vem dos dias em que o preço do Open foi igual ao Baixo diário, ou seja, o preço subiu do Open e nunca caiu abaixo dele. Isso, é claro, é óbvio. Para confirmar isso, adicionei esta condição de teste (olha para frente) para excluir dias em que Open == Low:
Compre = Compre E NÃO O == L;
Isso mata o sistema e prova que a maior parte do lucro vem dos dias em que O == L. Para confirmar ainda isso adicionei a condição oposta:
Comprar = Comprar AND O == L;
Isso dá lucros quase infinitos e prova que a maioria dos lucros vem de dias em que o preço se move imediatamente a partir do Open e nunca retorna abaixo dele. Tentando melhorar o preço de entrada é um erro; deve-se entrar em um Stop set 1-2 ct acima do preço Open, isso eliminará os dias em que o preço cai e nunca volta. Isso melhora significativamente o desempenho.
3) Este sistema comercializa respostas / padrões de tradutores do joelho. Esses padrões geralmente são afogados por grande volume de negócios, portanto, esse sistema funciona muito melhor quando você seleciona tickers com volumes entre 500.000 e 5.000.000 ações / dia. Isso também melhora significativamente o desempenho.
A adição das duas características acima resulta em uma curva de equidade muito melhor do que a mostrada abaixo. Desculpe, não tenho tempo para documentar o acima em maior detalhe. Boa sorte!
Esta publicação descreve uma idéia de negociação muito simples apenas para Long-only que compra em uma determinada porcentagem abaixo de ontem e baixa, e sai no dia seguinte # 8217; s Open. Às vezes, pode ser difícil obter o preço aberto exato, a alta rentabilidade deste sistema torna um bom candidato para novas experiências. O sistema funciona bem com Watchlists como N100, SP500, SP1500, Russel 1000, etc. Desempenho no Russel 1000, com max. posições abertas definidas em 1, para o período de 12/10/2003 a 12/10/2018, tem essa aparência:
Algumas das outras Watchlists dão menos exposição (lucros), mas isso vem com DDs menores. As comissões foram fixadas em US $ 0,005 por ação. Nenhuma margem utilizada.
Não é utilizada classificação explícita; Os tickers são negociados com base em seu tipo alfabético na Watchlist. Isso pode parecer estranho, mas é significativo: ao reverter esse tipo, o sistema falha. Isso pode significar que, devido a problemas de varredura em tempo real, os símbolos listados no topo deste tipo podem ser negociados de forma diferente dos listados na parte inferior.
Preste atenção ao Liquidity (você pode querer negociar mais de uma posição) e slppage (A entrada é bastante livre de risco, mas as saídas podem ser problemáticas). Os DDs são significativos, mas podem ser compensados com entradas e saídas negociadas em tempo real melhoradas. Ao negociar automaticamente, pode ser possível colocar ordens de entrada OCA DAY-LMT para todos os sinais e apenas esperar e ver o que preencher. Como as saídas são mais difíceis do que as entradas, você pode querer explorar outras estratégias de saída.
Os valores padrão dos parâmetros são escolhidos apenas de um chapéu. Praticamente você pode otimizá-los ou ajustá-los dinamicamente para os tickers individuais. Testei brevemente este sistema no modo Walk-Forward e os resultados foram lucrativos para todos os anos testados. Exceto pelo número de ações, os parâmetros negociados não são muito críticos. O excesso de otimização não parece um problema neste caso.
O código abaixo é muito simples e requer poucas explicações. No entanto, é importante entender que este sistema goza de uma pequena vantagem ao negociar no Open e ao calcular o TrendMA usando o mesmo preço Open. Alguns podem interpretar isso como vazamento futuro, no entanto, se você trocar este sistema em tempo real, não é. Muitas pessoas não percebem que, se você trocar no Open, você também pode usar esse preço em seus cálculos e # 8212; contanto que você os execute em tempo real & # 8212; É aqui que a AmiBroker e a tecnologia podem lhe dar uma vantagem. Se você Ref () retornar a TrendMA por uma barra, o sistema ainda é muito lucrativo, porém os DDs aumentam para algumas Listas de Verificação. Se você usa investimentos fixos, a diferença é insignificante.
O procedimento de negociação seria começar a digitalizar antes do mercado abrir e remover os tickers com preços tão remotos que não são susceptíveis de atender ao OpenThresh. Assim, você pode começar a escanear 1000 símbolos, mas muito rapidamente o número escaneado diminui para apenas uma dúzia de tickers. Quando você se aproxima das 9h30, sua varredura em tempo real será muito rápida e você poderá colocar sua ordem LMT muito próxima do Open & # 8211; você pode até mesmo melhorar o preço aberto.
Embora algumas pessoas tenham olhado o código abaixo e não encontraram nada errado, os lucros parecem bastante elevados para um sistema tão simples. Informe os erros que você pode ver.
Arquivado por Herman às 7:03 pm sob Ideas (Experimental)
Comentários desativados no sistema EOD Gap-Trading Portfolio.
1 de setembro de 2018.
Uma idéia comercial de EOD Gap de longa duração.
Essa idéia foi postada (# 161332) na lista principal do AmiBroker em 3 de julho de 2018. Houve inúmeros comentários excelentes na lista e se você está interessado em trabalhar neste sistema, você faz bem em lê-los todos antes de começar. Depois de postar, encontrei uma série de postagens na web discutindo essa idéia comercial, alguns alegaram estar negociando um sistema similar com um bom sucesso.
Eu me referi a este sistema a & # 8220; Gap Trading & # 8221; sistema, mas isso pode ser um pouco de um nome incorreto, & # 8220; Reversão média & # 8221; pode ser uma classificação melhor. Googling para isso irá obter muitos mais hits para sistemas semelhantes. Aqui estão alguns links:
Parece ser uma idéia comercial bastante amplamente discutida e eu sugiro que você faça alguns Googling por conta própria para aprender o mais recente. Como um usuário Amibroker, você possui melhores ferramentas do que a maioria dos comerciantes e você tem uma chance melhor do que a maioria de apresentar uma variação que funcione. Talvez com um pouco menos lucros, e com uma quantidade significativa de código adicional # 8212; ele ganhou & # 8217; t ser um & # 8220; quicky & # 8221; projeto :-)
Algumas pessoas comentaram que este sistema não funcionará na negociação real, enquanto eles podem estar certos, outros dizem que regimes como este trabalho. Eu não terminei o sistema e não posso reivindicar se é negociável ou não.
O sistema compra a uma determinada porcentagem abaixo de ontem & # 8217; s Low, em uma ordem LMT, e sai no mesmo dia no fim.
Arquivado por Herman às 6:53 pm sob Ideias (Experimental)
Comentários desativados em uma idéia de negociação de Long-only EOD Gap.
28 de novembro de 2007.
Retorno inverso ao sistema médio.
Arquivado por brian_z às 11:54 pm sob Ideas (Experimental)
Comentários desativados no sistema Inverse Return To Mean.
22 de outubro de 2007.
MACD Trend System.
Eu uso um pequeno critério de configuração para procurar minhas ações.
Procuro guias de histograma 4 e 1 barra para sinal de compra (eu tenho o histograma definido como vermelho para baixo e azul para cima para que eu possa ver.
MACD acima da Linha Zero.
Este sistema baseia-se no comércio de tendências. Comprar no pullback quando o mercado continuar sua tendência ascendente.
Para procurar MACD Trend setups:
1) Insira a seguinte fórmula em um gráfico.
Os estoques que atendam aos critérios serão reportados na lista de resultados.
Nota: algumas variações das regras de configuração podem definir sinais que são bastante raros e, em bancos de dados pequenos, é possível que não haja configurações em nenhum dia determinado (portanto, nenhum estoque será relatado pela verificação).
3) Clique em qualquer símbolo no painel Resultados para visualizar o gráfico, para esse símbolo, em segundo plano.
Nota: neste exemplo, foi utilizado um banco de dados de treinamento, que apenas contém dados até 5/11/2007.
Idéia comercial por protraderinc. Comentários e fórmulas de Bill & # 8211; WaveMechanic.
Arquivado por brian_z às 11:06 pm sob Ideias (Experimental)
Comentários desativados no MACD Trend System.
14 de outubro de 2007.
Sistema de negociação de 15 dias.
Arquivado por brian_z às 10:43 pm sob Ideas (Experimental)
Comments Off no 15 Day Performers Trading System.
19 de agosto de 2007.
KISS-001: Intraday Gap Trading.
Esta é a primeira de uma série de idéias de negociação KISS (mantê-lo simples, estúpido) para você brincar. Todas as ideias do sistema apresentadas aqui não são comprovadas, não finalizadas e podem conter erros. Eles são destinados a mostrar padrões possíveis para uma maior exploração. Como sempre, você é convidado a fazer comentários e / ou adicionar suas próprias idéias a esta série.
Eu prefiro os sistemas em tempo real que comercializam rápido, são automatizados e estão desprovidos de indicadores tradicionais. De preferência, eles não devem ter parâmetros otimizáveis; No entanto, eu nem sempre posso conseguir esse objetivo. Nem todos os sistemas serão "isso" simples; haverá alguns que utilizam funções de média simples ou de tipo HHV / LLV. O primeiro sistema mostrado abaixo é uma cópia do sistema de demonstração que uso para desenvolver rotinas de Automação de Comércio em outros lugares neste site.
Para ver como isso funciona, você deve fazer o Backtest em dados de 1 minuto com uma periodicidade no intervalo de 5-60 minutos. Sua primeira impressão pode ser que esses lucros são simplesmente devido a um mercado superior, no entanto, o fato de que os lucros Longos e Curtos são aproximadamente iguais sugerem que há mais. Porque 98% de todos os negócios caem entre as 9:30 da manhã e as 10:30 da manhã, esse tipo de sistema é bom se você quer trocar pouco tempo a cada dia. Isso reduz o risco em relação à exposição ao mercado e dá mais tempo para aproveitar outras atividades.
Backtesting isso na lista de vigilância NASDAQ-100 (backtests individuais, 15 min. Periodicidade) dá os lucros mostrados abaixo para o período de 1 MAR 2007 até 17 de agosto de 2007. Os nomes de Ticker são omitidos para manter o gráfico compacto; O gráfico mostra simplesmente uma barra de lucro líquido para cada ticker testado. A exposição média deste sistema é de cerca de 15%; daí, você pode negociar carteiras para aumentar os lucros e suavizar as curvas de equidade. Seja advertido que, em sua forma bruta, as retiradas são inaceitáveis e que pode haver restrições de volume para muitos tickers.
Uma vez que este sistema tem pouca exposição, pode ser um candidato para escaneamento de mercado e negociação de carteira classificada. RARs seria uma indicação dos lucros máximos absolutos que poderiam ser obtidos se conseguisse aumentar a exposição a cerca de 100%. No entanto, o movimento de preços de diferentes tickers pode ser correlacionado, e os negócios de diferentes tickers podem se sobrepor. Se muitos tickers operarem ao mesmo tempo, seria difícil aumentar a exposição do sistema.
Editado por Al Venosa.
Arquivado por Herman às 1:49 pm sob Ideias (Experimental)
Comentários desativados no KISS-001: Intraday Gap Trading.
17 de agosto de 2007.
System Ideas na Internet.
Você está convidado a enviar links para ideias do sistema em comentários para esta publicação.
Arquivado por Herman às 7:46 pm sob Sistemas de Negociação.
16 de julho de 2007.
Introdução aos Sistemas de Negociação & # 8211; Prático.
Esta categoria é reservada para sistemas de negociação reais, ou seja, que você negociou em algum momento ou que consideraria negociar. Uma vez que os critérios de negociação variam de pessoa para pessoa, e como os sistemas podem funcionar ou não dependendo de como eles são negociados, será difícil fazer a seleção de contribuições aqui. Com respeito ao que é publicado aqui, mantenha uma mente aberta e considere que o autor considera o sistema negociável.
Você pode contribuir postando como autor (requer registro) ou em um comentário para esta publicação.
Arquivado por Herman às 11:14 am sob Prático (Rentável)
Comentários desativados na Introdução aos Sistemas de Negociação & # 8211; Prático.
Introdução aos Sistemas de Negociação & # 8211; Idéias.
É aqui que você pode compartilhar sistemas de negociação que são marginalmente lucrativos, ou seja, aqueles que não devem ser negociados como estão, mas que mostram potencial. Normalmente, este seria um sistema básico que é rentável, mas as experiências diminuem 50%. Tais sistemas geralmente podem ser aprimorados pela adição de paradas, metas, gerenciamento de dinheiro, técnicas de portfólio, etc. A realidade é que, embora você não tenha a experiência para fazê-lo funcionar, outra pessoa pode.
Quase todos nós encontramos idéias do sistema de comércio em livros e revistas que codificamos na AFL para avaliação. Alguns desses sistemas podem estar por muitos anos, enquanto outros são idéias novas. Depois de codificá-los, quase sempre, estamos desapontados e retiramos o sistema (trabalho!). Em vez de jogar o seu trabalho, você está convidado a publicar o sistema aqui para dar a outro desenvolvedor a chance de corrigi-lo.
Você é convidado a contribuir como autor (requer registro) ou em um comentário para esta publicação.
Arquivado por Herman às 11:04 am sob Ideas (Experimental)
Comentários desativados na Introdução aos Sistemas de Negociação & # 8211; Idéias.
Postagens recentes.
Comentários recentes.
Richard Dale no Data Resources & # 8211; Forex Herman em solicitação de tópicos em tempo real aqui Mike B em solicitação de tópicos em tempo real aqui Tomasz Janeczko no banco de dados de estoque dos EUA (v2) brian_z na Configuração Um banco de dados personalizado e # 8211; Nasdaq.
Categorias.
Outubro de 2018 (1) setembro de 2018 (1) agosto de 2018 (1) julho de 2018 (1) abril de 2018 (2) março de 2018 (6) fevereiro de 2018 (2) janeiro de 2018 (2) fevereiro de 2009 (2) agosto de 2008 (1) Abril de 2008 (1) março de 2008 (20) fevereiro de 2008 (6) janeiro de 2008 (1) dezembro de 2007 (4) novembro de 2007 (18) outubro de 2007 (17) setembro de 2007 (17) agosto de 2007 (26) julho de 2007 (20) Junho de 2007 (17) maio de 2007 (8) abril de 2007 (16) janeiro de 2007 (1)
Este site usa a página do WordPress gerada em 0.858 segundos.
Base de Conhecimento dos Usuários.
24 de dezembro de 2007.
Negociação automatizada de alta freqüência (HFAT); parte 2.
Dados de volume em tempo real dos corretores interativos.
Assim como os dados de preços, os dados de volume estão sujeitos a atrasos e correções de BF (Backfill). Além disso, IB (Interactive Brokers) relata os dados de volume de uma maneira que poderia causar grandes diferenças de desempenho entre backtesting e negociação real.
Esta publicação descreve procedimentos simples para coletar dados RT e BF para comparação. Não é feito nenhum esforço para explicar as diferenças ou para realizar análises estatísticas. As opiniões expressas aqui são baseadas em experiências pessoais e / ou podem ser anecdóticas; nem tudo que acontece no comércio em tempo real é fácil de explicar. Como sempre, se você tiver uma visão técnica e / ou veja imprecisões, comente para o benefício de futuros leitores.
Conforme esperado, os dados de volume de IB RT contêm os tiques e atrasos ruins usuais que são corrigidos durante o preenchimento. No entanto, e isso é muito importante para o comerciante de RT, o IB ajusta os volumes ao vivo em intervalos de cerca de 30 segundos. Isso significa que os volumes IB relatados durante a negociação RT não refletem com precisão a atividade do mercado. Isso significa também que os dados de volume podem ser atrasados em até 30 segundos, em vez do atraso típico de instantâneo, que é cerca de 300 milissegundos para dados de preço. Comparando o volume recheio com volume em tempo real, parece que os ajustes de volume periódicos em tempo real são re-distribuídos em instantâneos individuais durante o preenchimento. Esta publicação destina-se a ajudá-lo a realizar sua própria análise de dados. Os métodos descritos abaixo são destinados a você começar.
Para coletar e salvar dados em tempo real: crie um novo banco de dados no intervalo de 5 segundos. Incorporar "RD", para Raw Data, ao nomear o banco de dados. Na Configuração do banco de dados, selecione o plugin Interactive Brokers. Escolha um estoque de alto volume, por exemplo, AAPL (usado nesta publicação). Conecte-se à TWS (Trader Work Station), iniciando sessão na sua conta Paper Trading. Não use a conta eDemo. Colete cerca de uma hora de dados em tempo real.
A primeira coisa que acontecerá quando você se conectar ao TWS é que o AmiBroker reabastece aproximadamente 2000 barras de dados de 5 segundos. Isso não pode ser evitado e você deve ter cuidado para observar o tempo em que termina o preenchimento e a coleta de dados em bruto começa. A maneira mais simples é colocar uma linha vertical em seu gráfico e rotulá-lo "Início dos dados em tempo real".
Para salvar o banco de dados: Desconecte o plugin IB (consulte o menu Plugin no canto inferior direito do gráfico). Abra Configurações de banco de dados e defina o banco de dados como Local. Coloque outra linha vertical para indicar onde a coleta de dados parou. Vá para o menu Arquivo e salve o banco de dados.
Certifique-se de configurar as Configurações do Banco de Dados - & gt; Fonte de dados - & gt; Local antes de salvar. Se você não fizer isso, o banco de dados será preenchido na próxima inicialização e isso pode corromper sua amostra de dados RT.
O próximo passo é coletar uma amostra de dados BF que sobrepõe a amostra coletada em tempo real previamente coletada. Para fazer isso, você precisa criar outro banco de dados. Uma vez que o preenchimento de IB apenas cerca de 2000 barras de dados de 5 segundos, você deve fazer isso o mais rápido possível depois de coletar dados brutos, senão os períodos de coleta podem não se sobrepor e você não poderá comparar os dois tipos de dados. O procedimento é o mesmo que acima, exceto que você deseja incorporar "BF" (para dados preenchidos) em vez de "RD" no nome do banco de dados.
Para comparar visualmente os dois bancos de dados, você pode abrir duas instâncias do AmiBroker e carregar o banco de dados RT em um e o banco de dados BF no outro. Você pode então exibir os dois bancos de dados ao mesmo tempo e comparar visualmente os respectivos gráficos. Você pode querer exibir um gráfico de preços e um gráfico de volume em painéis separados, conforme mostrado nas capturas abaixo.
Você pode usar o código abaixo para inspecionar seu gráfico de preços:
E este código para inspecionar seu gráfico de Volume:
As fórmulas acima exibirão gráficos básicos mais um valor cumulativo (área vermelha) para qualquer parâmetro que você gostaria de testar. No gráfico de preços, o intervalo alto-baixo (H-L) é somado enquanto no volume O volume simples é somado. Summation começa com a barra selecionada pelo cursor. Este recurso só é fornecido para revelar visualmente as diferenças de dados; não tem outro significado.
Os gráficos abaixo foram criados usando os métodos acima, que revelam rapidamente a diferença entre os dois tipos de dados. Para explicar por que essa diferença ocorre é deixada ao leitor especializado (porque não tenho uma pista!).
Figura 1 & # 8211; Dados preenchidos novamente.
Figura 2 & # 8211; Dados coletados em tempo real.
O indicador de volume a seguir pode ser usado para exibir a periodicidade do volume RT mais claramente:
Este código produziu os próximos dois gráficos abaixo. Um filtro de espiga simples (veja a definição do VSpike no código) é usado para identificar pontos de volume e fazê-los se destacar com um fundo preto. Como esses picos de volume não aparecem nos dados preenchidos, podemos assumir que eles não refletem a verdadeira atividade do mercado. Os três números na parte superior das barras de histograma, de cima para baixo, mostram o Volume / 100, o número de barras desde o último pico de volume e a segunda contagem derivada do selo de tempo de dados.
Figura 3 - Dados de volume coletados em tempo real.
A aplicação do código nos dados preenchidos produz o gráfico abaixo. Observe que muitos dos baixos períodos de volume entre as espinhas foram preenchidos (parece que os picos de volume foram distribuídos de forma retroativa) e que não há mais periodicidade de volume visível.
Figura 4 & # 8211; Dados de volume reabastecidos.
Comparando dados de diferentes bancos de dados.
Você pode comparar dados de diferentes bancos de dados em um único gráfico. A sobreposição de dois arrays de dados revelará imediatamente diferenças e também sugerirá análise mais sofisticada a ser realizada. O código abaixo pode ser executado por si só, ou pode ser anexado a qualquer outro programa. Neste caso, é codificado para comparação de volume. No entanto, você pode modificá-lo facilmente para comparar preço, indicadores ou qualquer outra matriz. A instrução SetBarsRequired () é necessária para o alinhamento de dados. Você deve usar o mesmo cronograma para gráficos RT e BF e para criação composta. Todos os testes nesta publicação foram realizados no período de 5 segundos.
Para comparar BF com arrays de volume RT, primeiro crie o composto para o volume BF e copie isso para sua base de dados RT para comparação. O procedimento é o seguinte: Carregue o banco de dados que contém sua amostra de dados BF. Exibir os dados e abrir a janela Param:
Selecione BackFillDataSample para o nome da variável estática. Clique em CREAR. Na barra de menu Amibroker, clique em Exibir - & gt; Atualize tudo. Na janela Indicador, defina Overlay Composite para YES. Os dados compostos devem ser exibidos como uma escadaria amarela sobreposta ao seu gráfico de volume. Feche AmiBroker. Use o Windows Explorer para encontrar seu banco de dados BF e copie o composto para o volume BF na pasta "_" e cole-o na pasta "_" do banco de dados RT. Exclua o arquivo Broker. Master do banco de dados RT. Este arquivo será recriado na próxima inicialização. Este passo é necessário para incluir o novo arquivo composto no índice do banco de dados. Inicie o AmiBroker e carregue o banco de dados RT. Exibe o gráfico de volume RT com o qual você estava trabalhando. Se os Parâmetros estiverem configurados como mostrado na captura acima, você deve ver a Escadaria Amarela para Volumes BF sobreposta ao histograma de volume da RT.
Neste ponto, você pode rolar para frente e para trás a tempo de ver como o volume do BF difere do volume coletado da RT. Não clique em CREAR, ou você substituirá o compósito BF. Os gráficos abaixo mostram como seus gráficos devem ser encontrados.
Figura 5 & # 8211; BF composto (amarelo) no histograma de volume BF.
A Figura 5 acima mostra um período em que o volume retalhado coberto composto (por exemplo, o período de preenchimento antes da coleta de RT). Como o composto copiou esses dados BF, eles combinam perfeitamente.
Figura 6 & # 8211; BF Composite (Amarelo) na RT coletou Histograma de volume.
A Figura 6 acima é para um período em que o composto (volume recheado) é sobreposto ao volume coletado em tempo real (histograma). Observe a diferença entre os dois tipos de dados.
O desenvolvimento de um sistema comercial deve começar com o aprendizado sobre o básico; atrasos e má qualidade dos dados podem matar qualquer sistema comercial HFAT, não importa quanto tempo você tenha desenvolvido. A melhor maneira de entender e saber com o que você está trabalhando é escrever alguns pequenos programas, como aqueles que foram incluídos nesta série.
Conclusão.
Nas discussões anteriores, tornou-se claro que o desenvolvimento de um sistema de comércio HFAT pode não ser tão fácil como você pensa. O googling para obter informações revelará muito poucos links para informações práticas; Você será principalmente por sua conta para descobrir as armadilhas. O desenvolvimento com dados ao vivo de sua conta de comércio de papel pode ser melhor do que usar dados preenchidos. No entanto, uma vez que é altamente provável que o IB execute negócios de papel sujeitos ao preço e ao volume relatados, os resultados da negociação de papel podem não corresponder aos resultados reais da negociação. A menos que você esteja plenamente consciente dos vários problemas e possa desenvolver o seu sistema para trabalhar em torno deles, parece inútil tentar desenvolver um sistema de comércio HFAT com dados IB de 5 segundos. Os padrões únicos de volume em tempo real também ocorreram em dados coletados da conta de negociação real.
Os dados de todas as fontes terão seus próprios problemas únicos e é prudente realizar alguns testes básicos para conhecer seus dados de RT antes de gastar muito tempo no desenvolvimento.
IB Snapshots e métodos de compressão de dados são relevantes para a discussão acima; Mesmo que não haja muitos detalhes disponíveis, você pode querer ler os seguintes tópicos para saber mais sobre esses tópicos.
Editado por Al Venosa.
Comentários desativados na negociação automatizada de alta freqüência (HFAT); parte 2.
28 de novembro de 2007.
Negociação automatizada de alta freqüência (HFAT); Parte 1.
Problemas de Backfilled vs Real-Time Data.
Se você não tem certeza do que é HFAT (High Frequency Automated Trading), por favor Google o tópico. Esta publicação destaca alguns dos problemas que você pode encontrar ao se aventurar no HFAT de ações. As opiniões expressas aqui são baseadas em experiências pessoais e / ou podem ser anecdóticas; nem tudo que acontece no comércio em tempo real é fácil de explicar. Se você tiver uma visão técnica e ver imprecisões, comente para o benefício de futuros leitores.
Projetar e implementar sistemas de negociação de alta freqüência é, do ponto de vista de um comerciante, provavelmente a melhor experiência. Para ver e ouvir trades executados a cada poucos segundos e ver os lucros que rolam, deve dar a qualquer comerciante um alto sem precedentes.
A captura é que projetar um sistema HFAT que funciona com dinheiro real é muito diferente de projetar um usando dados locais. Quanto menor o intervalo de tempo, maior o impacto de pequenas discrepâncias de dados. Em intervalos de tempo de sub-minutos, seu sistema HFAT pode executar de forma muito diferente com dados locais do que com dados de mercado em bruto em tempo real.
Um problema típico é que os dados do mercado ao vivo em tempo real são atrasados por várias centenas de milissegundos e que as citações podem chegar fora da seqüência. O que você vê em seus gráficos pode ser várias citações depois que o comércio ocorreu. Este dado falho é o que seu sistema comercial está negociando e deve ser projetado para trabalhar. Os gráficos que você vê na AmiBroker são principalmente preenchidos e / ou atualizados após o horário de negociação. No final de um dia de negociação, você terá dados em seu banco de dados que tenham uma mistura de dados recheados (erros de tempo e dados foram corrigidos) e dados brutos (defeituosos) que foram coletados durante a sessão de negociação do dia atual # 8217; . Você também pode ter várias lacunas de dados que foram introduzidas quando você desligou o sistema e / ou perdeu seu feed de dados.
Embora o procedimento possa variar para diferentes provedores de dados, as cotações recebidas em tempo real serão atrasadas. Uma vez que os períodos de barras durante a coleta de dados ao vivo são baseados no relógio do seu computador, as cotações podem acabar na próxima barra devido à sua chegada atrasada. Os dados usados para preencher seu banco de dados vêm de um servidor de dados diferente e serão marcados no horário. Isso permite que o AmiBroker corrija a posição das citações que foram recebidas fora da sequência. Este processo remove os atrasos em tempo real que estavam presentes quando os dados foram recebidos.
Uma vez que não há atrasos nos dados preenchidos, seus dados preenchidos parecem avançados por várias centenas de milissegundos em relação aos dados que você eventualmente estará negociando.
Não é incomum desenvolver um sistema com dados retalados de 5 segundos (onde todos os carrapatos ruins e erros de carimbo de horário foram corrigidos pelo provedor de dados) e obter o desempenho do Santo Graal somente para descobrir que, quando negociado com dados de transmissão em tempo real (onde os dados são atrasados, contém carrapatos ruins e erros de marcação temporária), o sistema é uma falha total. Os gráficos a seguir ilustram esse problema. Os dados à esquerda da linha vermelha são preenchidos e os dados à direita da linha Vermelha são dados coletados em tempo real. O branco é a equidade.
Você não poderá avaliar visualmente se os dados são preenchidos ou em bruto. As diferenças só aparecerão ao executar um sistema de negociação nos dados; seu sistema comercial pode ser a única maneira de distinguir entre dados preenchidos e dados brutos. O gráfico abaixo mostra um close up da mudança de dados.
O preenchimento do banco de dados acima e o desempenho de outro Backtest ao longo do mesmo período produzem uma equidade muito diferente:
Não há garantia de que um sistema desenvolvido em um tipo de dados funcionará igualmente bem com o outro. Quando você encontra uma grande redução de capital, você pode assumir que isso foi apenas um dia ruim e # 8221 ;; Afinal, todos os sistemas de negociação os possuem. Você pode ter desenvolvido e testado seu sistema em milhares de negócios, cobrindo um período de seis meses ou mais. Você tem sido um bom aluno e usou todos os métodos recomendados para validar seu sistema de negociação. Você testou intern e out-of-sample, aplicou otimizações inteligentes, usou o Walk-Forward testing, realizou a análise de Monte-Carlo e a lista continua. Depois de ser tão minucioso, como você pode dar errado? Você está pronto para negociar dinheiro real amanhã e faça seus primeiros 50% em um dia!
O objetivo é que todo esse esforço é desperdiçado se os dados usados durante o desenvolvimento não forem 100% idênticos ao que você estará negociando.
A melhor maneira de desenvolver um sistema HFAT é usar dados de mercado real ao vivo. Quanto mais cedo, você muda de dados locais ou edemo para dados reais, mais tempo você economizará e mais decepções você será poupado. Um sistema HFAT nunca pode ser concluído fora da linha, com um banco de dados local ou com dados edemo simulados. Seu design deve sempre incluir uma fase significativa de negociação de papel e de dinheiro real.
Outro problema ao negociar sua conta de comércio de papel (simulado) do IB é que o usuário não conhece as regras que o Interactive Brokers usa para decidir se uma ordem deve ser executada ou não. Esses critérios de execução podem mudar sem aviso prévio. Isso impõe uma ordem artificial às suas execuções que é irreal; as condições de mercado simuladas serão diferentes das encontradas na negociação real. Você pode desenvolver um sistema de negociação que explora a maneira de processamento da IB de dar-lhe um desempenho irreal, mas esse sistema falharia na negociação real.
Além disso, seus negócios de papel não são vistos e não podem influenciar o mercado. Ao negociar dinheiro real, suas ordens poderiam estar configurando um novo alto ou um baixo, ou se você estiver negociando grandes somas, você poderia desenhar o preço para cima ou para baixo. Isso significa que, mesmo que o seu sistema seja extremamente bom na negociação simulada, isso não garante que seu sistema tenha um bom desempenho de dinheiro real.
Usar sua conta simulada para validar seu sistema nunca deve ser sua validação final antes de negociar lucros; você deve sempre incluir uma fase de avaliação de dinheiro real em seu plano de desenvolvimento. Seus primeiros negócios reais nunca devem ser ganhar dinheiro; eles devem ser planejados para validar seu sistema em condições variadas.
O comportamento do mercado é muito complexo; Esteja preparado para o inesperado e nunca salte um passo de desenvolvimento porque algo funciona muito bem. Por exemplo, você pode estar testando seu sistema usando sua conta de negociação de papel simulada do IB e ver seus lucros subir rapidamente demais, talvez ter 90% de vencedores e RARs que estão fora desse mundo. Quando isso acontece, é extremamente emocionante e divertido de assistir; É uma experiência rara que deve ser apreciada. Isso sugere que Holy-Grails é possível. Mas eles são? Tais condições comerciais favoráveis podem durar algumas centenas de negócios, algumas horas, ou talvez alguns dias. Isso pode acontecer quando as condições técnicas e o comportamento do mercado são perfeitos para o seu sistema. Um fator desconhecido apenas fez com que tudo funcionasse perfeitamente. Quando você experimentar isso, você estará analisando seus gráficos, log de negociação, relatório de execução, etc., durante as próximas semanas. O fato é que talvez nunca mais aconteça, e talvez você nunca saiba o que realmente aconteceu.
Status da Ordem e Posição.
O relatório do tamanho da posição IB pode ser errático, sempre atrasado e pode incluir informações transitórias. Se você estiver negociando rápido e você usa o Tamanho da Posição IB para determinar sua próxima ação, isso será um problema. Este é especialmente o caso dos sistemas de inversão em que as capas podem ser processadas antes das compras, e pode haver muitos preenchimentos parciais. Por exemplo, se você estiver revertindo 100 ações, indo alternativamente Longo e Curto, você pode ler os tamanhos de posição de 0, 100, 200 e até 300 ações. Não baseie a ação do seu sistema exclusivamente em uma única leitura do tamanho da posição; Seus mecanismos de proteção desligarão seu sistema muitas vezes por dia. Se uma posição não é o que deveria ser em 5 consultas consecutivas (no intervalo de cotação), você pode fechar todas as posições, suspender a operação e continuar mais tarde, ou desligar o sistema e tentar novamente.
O relatório do status do pedido parece mais confiável e estável. Normalmente, não é necessário repetir as consultas do Status do Pedido.
Não abordado nesta publicação é a questão dos instantâneos no entanto, é extremamente importante para os comerciantes em tempo real entender como o IB comprime e transmite seus dados. Este tópico foi discutido em vários fóruns, para obter mais informações sobre os dados do IB em geral, leia os seguintes tópicos:
A Taxa de Mensagem Máxima IB.
IB tem um limite para a taxa máxima de mensagens (relacionadas à ordem) que você pode transmitir por segundo. A taxa de consultas não é limitada. O limite atual é de 50 mensagens por segundo. Se você exceder essa taxa, o IB produzirá um código de erro e, se continuar a exceder a taxa de mensagem, o IB suspenderá sua conexão. Isso, é claro, deve ser evitado a todo custo. As taxas de mensagens estão documentadas aqui. Como introduzir atrasos em tempo real, a medição em milissegundos é documentado na publicação em Intervalo de alta precisão e tempo de atraso.
Atrasos na Internet.
O status da ordem e da posição está sujeito a um atraso na Internet de 50-400 milissegundos. Esse atraso variará com a sua localização e o tipo de conexão com a Internet ao IB. Você pode testar esse atraso fazendo um ping no servidor IB. Para fazer isso, digite ping gw1.ibllc no comando na janela Iniciar & gt; Executar janelas (para Windows XP) e clique no botão Executar. Uma janela, como mostrado abaixo, aparecerá e mostrará os atrasos para três consultas consecutivas (pings) para IB:
Se você encontrar atrasos excessivos ou não pode se conectar, você pode obter mais detalhes sobre como sua conexão é encaminhada executando o tracert gw1.ibllc da mesma forma. Você pode querer consultar as Perguntas freqüentes técnicas no IB para itens relacionados.
Editado por Al Venosa.
18 de agosto de 2007.
Demonstração Gap-Trading, Exemplo de sincronização da sessão.
Esta publicação mostra como adicionar temporização da sessão intradiária ao sistema RTGT (Real-Time Gap-Trading) desenvolvido na publicação anterior. No entanto, antes de abordar o tempo de sessão, há algumas coisas sobre as quais você deve estar ciente:
Time-Synchronization.
Na negociação em tempo real, existem muitas funções que são cronometradas com referência ao relógio do seu sistema. Portanto, é imperativo que você sempre sincronize o relógio do seu computador com um servidor de hora da Internet antes de cada sessão de negociação.
Ferramentas - & gt; Preferências - & gt; Configurações intraday.
Data Timestamps pode ser alinhada ao início ou ao final do período base. O código desenvolvido aqui usa o tempo de FIRST tick dentro da barra, ou seja, o timestamp de dados retorna o tempo no início da barra. Isto é, quando a primeira citação para o novo período chega e define o Open para a nova barra. Clique em Ferramentas -> Preferências -> Intraday para definir esta opção:
Backtesting e Bar-Replay.
Durante o teste posterior, a resolução do tempo será igual à periodicidade definida nas configurações AA. Se você estiver comparando os sinais do Backtester com os sinais exibidos em seu gráfico, você deve certificar-se de que o AA eo Gráfico usam a mesma periodicidade.
Durante a repetição da barra, a resolução do tempo será igual ao maior do intervalo de base do seu banco de dados ou ao Intervalo de Etapas selecionado na janela Bar-Replay.
Durante Backtesting e Bar-Replay, AmiBroker se referirá ao timestamp para saber como os preços mudam ao longo do tempo. Portanto, você não terá escolha senão eventos de tempo, como o tempo da sessão, com referência ao carimbo de data / hora.
Live Trading.
Ao negociar a partir de um Indicador, o carimbo de data / hora dos dados é arredondado para a periodicidade do gráfico selecionado, ou seja, se você exibir um gráfico de 1 minuto, a resolução do tempo será de um minuto. Isso significa que você não pode implementar atrasos com base em segundos usando os carimbos de data e hora de um banco de dados de minutos. É por isso que a maioria das funções em um sistema de negociação em tempo real usa o relógio do computador como referência.
Você pode, com cuidado, usar o timestamp de dados ou o relógio do sistema para controlar sua sessão. No entanto, uma vez que o carimbo de data / hora é dependente da chegada de novas cotações (ignorando o preenchimento de dados), o uso de data timestamp pode ser pouco confiável. Se quiser uma resolução de tempo maior, você pode criar um banco de dados de 5 segundos. No entanto, isso significa trabalhar com backfills lentos e atrasar as execuções de AFL, devido a longos históricos de dados. Para manter as coisas simples, usaremos um banco de dados de um minuto.
Tempo da sessão.
Quando você está desenvolvendo sistemas de negociação em tempo real, muitas vezes é útil, mesmo essencial às vezes, para desenvolver várias versões de código. Normalmente, estes podem incluir:
1) Uma versão para Backtesting e Bar-Reply. Esta versão usaria a função TimeNum para o tempo.
2) Uma versão comercial em tempo real. Esta versão usaria o relógio do sistema (Now ()) para o tempo e seria altamente otimizado para a velocidade de execução do AFL.
3) Uma versão DebugView. Este é um estágio de desenvolvimento intermediário útil que permite que você execute seu sistema em tempo real sem qualquer interface TWS; ele faz logs no DebugView em vez de enviá-los para o TWS.
As instruções de entrada do ParamTime () são usadas para definir o horário de início e final da sessão de negociação. O código abaixo destina-se apenas a avaliação preliminar do sistema usando o Backtester: portanto, usa números de tempo para o tempo da sessão.
As variáveis StartOfSession e EndOfSession são disparadores (eles duram apenas uma barra). Eles são usados para inicializar processos no início da sessão e limpar processos no final da sessão. A variável InSessionTime é True durante a negociação e é usada para controlar os processos que devem ser ativados / desativados, dependendo se você estiver negociando ou não. Esses processos serão abordados em postagens futuras.
Um Parámetro TimeFrame foi adicionado para ajudar a visualizar como o sistema funciona em diferentes prazos. Para ver a equidade para diferentes prazos, basta arrastar o controle deslizante para ver a resposta do sistema a qualquer período de tempo de 1 minuto a 1 hora. Tendo adicionado o Tempo da sessão, agora você pode explorar se esse sistema é mais lucrativo durante certas horas do dia de negociação. Sugiro que você execute um backtest individual na sua lista de observação favorita; Você pode se surpreender ao descobrir que, com alguns sistemas, não é necessário trocar o dia todo. Mais & # 8230;
Para fins de depuração, você pode ativar / Desativar uma faixa colorida para exibir as variáveis Iniciar - (Verde), Fim - (Vermelho) e In-Session (Amarelo).
Por conveniência, o código abaixo inclui todas as partes desenvolvidas anteriormente. Basta copiar para uma janela de fórmula do Indicador, e clique em Aplicar.
Comentários desativados no demo do Gap-Trading, Exemplo de sincronização da sessão.
15 de agosto de 2007.
Demonstração em tempo real do Gap-Trading, princípios básicos (v3)
Este sistema pretendia fornecer sinais para automação de demonstração automotiva. No entanto, seus sinais não são tão freqüentes e provou ser bastante aborrecido para automatizá-lo. O código é deixado aqui, mas eu planejo usar outro sistema para a automação de demonstração comercial. Você também pode notar que eu separei o design do sistema em tempo real da automação do sistema. Isso foi feito para permitir que as categorias evoluíssem independentemente umas das outras.
Para desenvolver código de automação comercial, precisamos de um sistema de demonstração para gerar sinais e testar a interface TWS. Para poder continuar esta série e não perder tempo procurando um sistema soberbo, utilizarei as seguintes regras de negociação muito simples:
Compre no Open da barra atual se cair abaixo do Low anterior.
Vender no Fechamento quando o atual Baixo cair abaixo da baixa anterior.
Curto no Open quando o Open excede o High anterior.
Cubra no Fechamento quando o Alto atual excede o Alto anterior.
Na AFL, isso parece assim:
O código acima é uma variação do sistema The Full Gap-Trading. Você pode ler mais sobre esse tipo de sistema no site Stockcharts e em muitos outros sites da Internet.
Este sistema produzirá trades em todos os prazos, trocará freqüentemente e trocará longo e curto. A execução deste sistema no período de tempo de 1-15 minutos nos dará muita ação e facilitará o desenvolvimento e a depuração do código de Trade-Automation (TA). Um sistema de negociação AT projetado em torno de um sistema que dá apenas alguns sinais por dia levará uma eternidade para depurar. O desempenho mecânico é o primeiro objetivo.
Por agora, assumimos que podemos entrar no preço aberto do bar. Observe que eu saio no fechamento da barra porque, no banco de dados AmiBroker, este é o próximo preço disponível. Nesta fase, este sistema é projetado para estimular o código de automação comercial e não para torná-lo rico; NÃO COMERIE-O. Tipos de ordem e / ou estratégias serão decididas mais tarde. Trade-Delays é definido como zero porque eles são melhor manipulados no código. A instrução Equity (1) é usada para remover sinais redundantes. O indicador deve exibir os negócios da seguinte forma:
Editado por Al Venosa.
12 de agosto de 2007.
Projetando um Sistema Tradível & # 8211; Espigões.
O fenômeno que é a base de muitos sistemas de negociação é a observação e negociação de um movimento de preço excepcional seguido de uma retração.
Um exemplo extremo do fenômeno de retração seria um Spike como mostrado no gráfico abaixo. Como a mudança de preço é tão extrema, a retração ou correção aparece instantaneamente. Não há uma resposta clara do mercado, ou seja, os comerciantes em geral não estão inclinados a levar a sério a mudança de preço.
O problema é que inadvertidamente você pode facilmente escrever código que comercializa esses pontos. Somente quando você começar a comercializar esse sistema, você descobrirá que seus pedidos não são preenchidos porque o volume apenas não está. Esta é uma razão comum para que os resultados anteriores e reais às vezes possam diferir substancialmente. Você pode ter projetado um sistema que é completamente racional, retrocede perfeitamente e resiste ao escrutínio técnico mais detalhado, apenas para descobrir que na negociação real ele falha completamente.
Você pode pensar que aumentando o prazo, por exemplo, para 15 minutos ou mesmo diariamente, você pode minimizar esse problema. No entanto, ao fazer isso, os espinhos podem ser menos prominentes, a negociabilidade não melhorará. Considere o pico no gráfico de 15 minutos abaixo:
Adicionar alguns por cento de bandas faz com que isso pareça uma oportunidade comercial real. Parece tão fácil! No entanto, o baixo da barra ainda é criado por um único comércio e a chance de obter o seu pedido preenchido ainda seria mínimo. Projetar sistemas de negociação em torno de mudanças de preços de volume mínimo é uma das armadilhas mais fáceis para um desenvolvedor de sistema em tempo real. Ao projetar um sistema de negociação intradiário, você deve projetar seu código para minimizar a divergência do backtester em relação aos resultados da negociação real. Você pode fazer isso trabalhando no menor intervalo de tempo possível. Mesmo ao negociar a intervalos horários, você deve escrever seu código no horário de minutos (ou mesmo Tick).
Há várias maneiras de fazer isso. Dê uma olhada na ponta das 10:30 da manhã no gráfico de 15 minutos abaixo e considere como você determinaria sua transação:
O fato é que não há como saber se o 10:30 AM High é negociável. No entanto, expandir o gráfico para o período de 1 minuto, como mostrado abaixo, permite ver claramente um padrão de reversão gradual. Isso significa que seu pedido provavelmente poderia ter sido preenchido em algum lugar próximo ao topo do ponto de 15 minutos mostrado anteriormente.
A execução do seu Backtester no período de tempo de 1 minuto e a procura de confirmações de um bar pode soltar o desempenho do backtester, mas seus resultados teriam sido mais próximos do que pode ser obtido na negociação real. Nesse caso, você teria versões separadas do código Backtester e Trading para o seu sistema; o código do Backtester incluiria a confirmação do sinal enquanto o seu Código de Negociação não.
Editado por Al Venosa.
Comentários desativados no projeto de um sistema comercializável e # 8211; Espigões.
21 de julho de 2007.
Armadilhas de Design do Sistema.
Quando você está projetando um sistema de negociação em tempo real, muitas coisas podem dar errado. Esta publicação destina-se a alertá-lo para algumas das possíveis armadilhas. No entanto, isso é tudo o que pode fazer. A única experiência pode ensinar-lhe como evitá-los. Esteja ciente de que mesmo os designers mais experientes farão alguns desses erros repetidamente.
Uma vez que documentar todas as armadilhas potenciais com exemplos de codificação consumiria muito tempo e espaço, eles são, por enquanto, apenas comentados brevemente. A maioria deles irá desencadear uma resposta do usuário de & # 8220; Ah, sim, isso aconteceu comigo! & # 8221 ;. Se você precisar de uma explicação mais detalhada, você pode postar perguntas em um comentário para esta publicação.
Não existem regras para provar que um sistema de negociação está livre de erros de codificação ou lógica. No entanto, dois indicadores são bastante confiáveis ao sugerir que você pode ter um problema:
1) Seus lucros são simplesmente muito bons para ser verdade. Nesse caso, você não tem escolha senão trabalhar através do código linha por linha, tentando encontrar linhas de código que olhem para o futuro. Se isso não revelar quaisquer erros, então você teria que inspecionar os sinais plotados e trocar comércio por comércio.
2) Seu sistema é uma negociação muito rentável Long, mas não curto, ou curto comprar não longo. Quando isso acontece, você pode ter um erro nas partes Longas ou Curtas do seu código, e a comparação das duas seções geralmente revelará o problema (isso só funciona para sistemas de reversão). No entanto, também pode ser que o seu código esteja correto, mas que seu princípio de negociação é sensivelmente sensível às tendências. Isso quase certamente o levaria a problemas quando a tendência se reverta. Neste caso, não existe outra cura do que repensar o sistema básico.
Ao projetar sistemas de negociação de alta freqüência, ou seja, aqueles cujas durações comerciais são em minutos, tudo muda e muitos procedimentos tradicionais se desintegram. Os atrasos na Internet, os atrasos nos dados, os dados incorretos (picos), o sistema temporário se congela (o Windows às vezes tem uma mente própria), relatórios de status atrasados, problemas TWS, etc., todos se tornam problemas críticos que evitarão que você obtenha uma correspondência próxima com o Backtester.
Muitos desses problemas só serão exibidos quando você começar a negociar dinheiro real. Assim, as etapas finais do desenvolvimento de um sistema comercial devem sempre envolver o dinheiro real de negociação. Here is where the Interactive Brokers account simulator (paper-trading account) may be an indispensable tool since you can test your system in real time without committing real dollars. But, since the market does not see your trades, even paper-trading results will differ from trading real money. In general, the faster you trade, the greater your real-trading results will deviate from your backtest results. You should also be aware that commissions play a much greater role on performance of high-frequency trading systems because trade profits are smaller.
No matter how you go about it, troubleshooting a complex trading system will almost always be a tedious and boring job that could keep you busy for several days or weeks. If you find that certain problems continue to resurface, they are likely related to your personal development style, and you may be able to write some code that checks for these specific problems. See the Debugging category for some ideas.
The list below, which is not exhaustive, is presented to caution you that many areas can lead to problems. Some are obvious, while others may be expanded on as needed and time allows.
& # 8211; High/Low precedence (contrary to EOD where the Backtester is unable to determine which came first, the entry/exit or the high/low, in realtime there can be no ambiguity in price precedence).
& # 8211; Data Delays (real-time data may be delayed for various reasons and time periods (Internet delays, lack of quotes, packets vs. ticks, etc.).
& # 8211; Low Liquidity (there may be no-volume trading periods).
& # 8211; Data Holes (bars with no trades).
& # 8211; Data Spikes (high spikes without volume may trigger trades).
& # 8211; Data Padding (a bar without data may be padded).
& # 8211; Premature Padding (the last bar may be a padded bar).
& # 8211; Data Accuracy (prices you receive aren’t always accurate).
& # 8211; Random Slippage (you will rarely get the expected price).
& # 8211; Breakout slippage (you will rarely get the Breakout price of your system).
& # 8211; Survivorship Bias (companies that didn’t do well and stopped trading won’t be in your database, i. e., you are working above average stocks).
& # 8211; Lucky Trades (a series of lucky trades may look like good performance).
& # 8211; Parameter Over-Optimizing (optimized parameters are rarely stable over time).
& # 8211; Design Over-Optimizing (frequent testing is like running an optimization and may be leading to false conclusions).
& # 8211; Out–of-Bound Prices (with PriceBoundChecking turned ON, AmiBroker forces the trade price within the High-Low range, this may hide pricing errors).
& # 8211; Price Rounding (prices may be rounded or truncated by the broker).
& # 8211; Wrong Use of >= and = in the same statement, only the first equal condition will ever be seen).
& # 8211; Comparing Floating Point Numbers (calculated values can have many decimal places, either round values or use the AlmostEqual()).
& # 8211; Chart Justification (make sure you are looking at the Last bar!).
& # 8211; System Mortality (no system will work forever).
& # 8211; Sharing Trading Systems (sharing systems with other traders may result in over-trading a system).
& # 8211; Being Duped by a Trend (a rallying ticker may make your system look like the HG (holy grail).
& # 8211; Tricking AmiBroker (AmiBroker has its limits; it is possible to write esoteric code that will produce wrong results).
& # 8211; Order Visibility (placing your order for every trader to see may influence the orders they place).
& # 8211; Making the Market (extreme example: if you place a MKT order during a no-trading period you will change the chart).
& # 8211; Window/Pane Execution Order (when passing variables between panes or windows do not assume that they execute in a fixed order, more).
& # 8211; Trading at the Open (order execution at the start/end of day is different from midday because of volatility and data delays).
& # 8211; IB Data Snap Shots (snapshots are only representative of prices traded).
& # 8211; Trade Delays (make sure you understand your trade delays when backtesting).
& # 8211; EOD and Intraday Gaps (There is no time interval in RT gaps).
& # 8211; Time Zones (make sure your computer and database timezones are properly set).
& # 8211; Very Short Time-Frames (prices jump and are less contiguous).
& # 8211; Setting LMT Prices (consider rounding for faster order executions).
& # 8211; 24-Hour vs. RTH (Regular Trading Hour) Backtesting (extended hours can rarely be traded like RTH due to huge bid/ask spreads and low volume).
& # 8211; Static Variables Naming (use unique names for your static variables).
& # 8211; Incorrect Computer Time (computer time offset from market time can cause real problems).
& # 8211; Look-Ahead Problems (not all look-ahead coding problems are obvious).
& # 8211; Buy/Sell Precedence in a Loop (be aware that AB and custom AFL loops enforce a Buy/Sell priority).
& # 8211; RT Candle Discrepancies (RT Candles may be different from later backfills, especially in the opening print).
& # 8211; Bars Loaded (consider bars-loaded with respect to execution speed and loops).
& # 8211; Signal lifetime (signal strength quickly decays over bars in high frequency trading).
& # 8211; SameBarExits (Sell signals may act as a qualifier for Buy signals).
& # 8211; Designing systems based on High and Low triggers (these may fill in the Backtester but not in real trading). more…
& # 8211; Using the wrong CommissionMode and/or CommissionAmount can make any system look good, or bad…
& # 8211; Using zero TradeDelays is OK if you code the delays in your system’s code, else you may be looking into the future.
Editado por Al Venosa.
Comments Off on System-Design Pitfalls.
June 19, 2007.
Introduction to Real-Time System Design.
Developing trading systems is a very personal activity, and opinions vary widely regarding what is the best approach. Most of the solutions presented here were developed by Herman van den Bergen. They may not be compatible with your personal preferences and you are encouraged to explore other alternatives more suited to your own trading style before deciding on a possible solution. To develop a Real-Time Automated Trading (RT/AT) system, you must have a trading system to automate. If you haven’t developed one yet, you may find some ideas in the Research and Exploration or Trading-Systems categories.
Modular design, readability, and simplicity of the system code are desirable to facilitate future maintenance. Posts in this category will progress through the various phases of developing a Real-Time Automated system.
Editado por Al Venosa.
Comments Off on Introduction to Real-Time System Design.
Postagens recentes.
Comentários recentes.
Richard Dale no Data Resources & # 8211; Forex Herman em solicitação de tópicos em tempo real aqui Mike B em solicitação de tópicos em tempo real aqui Tomasz Janeczko no banco de dados de estoque dos EUA (v2) brian_z na Configuração Um banco de dados personalizado e # 8211; Nasdaq.
Categorias.
Outubro de 2018 (1) setembro de 2018 (1) agosto de 2018 (1) julho de 2018 (1) abril de 2018 (2) março de 2018 (6) fevereiro de 2018 (2) janeiro de 2018 (2) fevereiro de 2009 (2) agosto de 2008 (1) Abril de 2008 (1) março de 2008 (20) fevereiro de 2008 (6) janeiro de 2008 (1) dezembro de 2007 (4) novembro de 2007 (18) outubro de 2007 (17) setembro de 2007 (17) agosto de 2007 (26) julho de 2007 (20) Junho de 2007 (17) maio de 2007 (8) abril de 2007 (16) janeiro de 2007 (1)
This site uses WordPress Page generated in 0.298 seconds.
Amibroker.
Amibroker is a powerful trading program used by professional investors all over the world. But learning Amibroker can be a struggle, particularly if you have no prior background in programming.
Learning from books and online forums can be cost-effective but time consuming. And one major drawback is whether or not you are learning the program according to Best Practice. This is extremely important in trading system design since learning the wrong method could lead to severe financial loss.
An effective way to learn Amibroker according to best practice is to take one of the courses from Connors Research , who have years of experience programming Amibroker and building trading systems. Connors Research are the brains behind Trading Markets.
Amibroker courses.
The Introduction to Amibroker course, taught by Matt Radtke, goes through all of the Amibroker essentials that you need to know such as loading historical data, learnings arrays, learning how the AFL language works, and how to run back-tests and scans.
It also provides a number of useful PDFs and templates, constructed in the correct, best practice method. Use the discount code MARWOOD to get 15% off the listed price.
The Advanced Amibroker course, (also taught by Matt Radtke), goes into the more complex side of Amibroker and deals with topics such as scaling, hedging, lookup, trace, optimisation and using the Custom Backtester Interface (CBT).
The end goal being the development of your own market-beating trading model. Use the discount code MARWOOD to get 15% off the listed price.
Combined Amibroker course If you are to purchase one of the TM courses I recommend this one. This course combines the introduction and advanced courses but you get a 10% discount by taking them together.
If you use the discount code MARWOOD, you’ll then get another 15% off on top of that . Support from the TM team is also included in the price and should be taken full advantage of in my opinion to get the most out of the course.
These Amibroker courses are sold as recorded webinars. They are not cheap but they are substantial in length and include everything you need to become an advanced Amibroker user (including code templates and best practice programming methods). Support is available and advised. If you have any questions or queries you are free to ring the team on 888-484-8220 ext. 3, 9am-5pm ET, M-F. (or 973-494-7311 ext 3, if outside the U. S.)
JB Marwood.
Tradutor independente, analista e escritor.
JB Marwood é um comerciante independente e escritor especializado em sistemas mecânicos de negociação. Ele começou sua carreira comercializando o FTSE 100 e German Bund para uma casa comercial em Londres e agora trabalha com sua própria empresa. Ele também escreve para Seeking Alpha e outras publicações financeiras. Google+
Lembre-se de que o comércio financeiro é arriscado e você pode sofrer uma perda significativa de capital. Nada neste site deve ser interpretado como um conselho de investimento personalizado. Veja o aviso completo.
Comments
Post a Comment