Amibroker testing a moving average crossover system
Como otimizar o sistema de negociação NOTA: Este é um tópico bastante avançado. Por favor, leia os tutoriais anteriores da AFL primeiro. A ideia por trás de uma otimização é simples. Primeiro você tem que ter um sistema de negociação, isso pode ser um cruzamento de média móvel simples, por exemplo. Em quase todos os sistemas existem alguns parâmetros (como o período médio) que decidem como o sistema se comporta (isto é, é bem adequado para longo prazo ou curto prazo, como é que reage a 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). O AmiBroker é um dos poucos programas que permitem otimizar seu sistema em vários símbolos de uma só vez. Para otimizar seu sistema, você precisa definir de um a dez parâmetros para ser otimizado. Você decide qual é o valor mínimo e máximo permitido do parâmetro e em quais incrementos esse valor deve ser atualizado. O AmiBroker então realiza vários testes de retorno do sistema usando TODAS as combinações possíveis de valores de parâmetros. Quando este processo é concluído, o AmiBroker exibe a lista de resultados classificados por lucro líquido. Você é capaz de ver os valores dos parâmetros de otimização que dão o melhor resultado. Escrevendo a fórmula AFL A otimização no back tester é suportada por meio de uma nova função chamada otimizar. A sintaxe desta função é a seguinte: variável otimizar (quot Descrição, padrão. Mínimo. Máx. Etapa) variável - é a variável AFL normal que é atribuída ao valor retornado pela função otimizar. Com os modos normais de backtesting, scanning, exploration e comentary a função otimizar retorna o valor padrão, portanto a chamada de função acima é equivalente a: default da variável No modo de otimização a função otimizar retorna valores sucessivos de min a max (inclusive) com stepping. "Descrição" é uma string usada para identificar a variável de otimização e é exibida como um nome de coluna na lista de resultados da otimização. default é um valor padrão que otimiza retornos de função em exploração, indicador, comentário, varredura e modos normais de teste de retorno min é um valor mínimo da variável sendo otimizada max é um valor máximo da variável sendo otimizada step é um intervalo usado para aumentar o Valor de min a max O AmiBroker suporta até 64 chamadas para otimizar a função (portanto, até 64 variáveis de otimização), observe que, se você estiver usando otimização exaustiva, é uma boa ideia limitar o número de variáveis de otimização a apenas algumas. Cada chamada para otimizar os loops de otimização de geração (max - min) / etapa e várias chamadas para otimizar multiplicam o número de execuções necessárias. Por exemplo, a otimização de dois parâmetros usando 10 etapas exigirá 1010 100 loops de otimização. Chame função de otimização somente UMA vez por variável no início de sua fórmula, pois cada chamada gera um novo ciclo de otimização A otimização de múltiplos símbolos é totalmente suportada pelo AmiBroker O espaço máximo de pesquisa é de 2 64 (10 19, 10.000.000.000.000.000.000) combinações 1. Otimização de variável única: sigavg Optimize (Média do sinal. 9. 2. 20. 1) Buy Cross (MACD (12.26), Sinal (12. 26. sigavg)) Sell Cross (Sinal (12. 26. sigavg), MACD (12. 26)) 2. Otimização de duas variáveis (adequada para gráficos 3D) por Optimize (por. 2. 5. 50. 1) Level Optimize (nível. 2. 2. 150. 4) Buy Cross (CCI (per), - Level) Cruz (Nível, CCI (por)) 3. Otimização de múltiplas (3) variáveis: mfast Otimizar (MACD Rápido. 12. 8. 16. 1) mslow Otimizar (MACD Lento. 26. 17. 30. 1) sigavg Optimize (Sinal média. 9. 2. 20. 1) Comprar cruz (MACD (mfast, mslow). Sinal (mfast, mslow, sigavg)) Vender cruzado (Sinal (mfast, mslow, sigavg), MACD (mfast, mslow)) Depois de entrar o f ormula basta clicar no botão Optimize na janela "Automatic Analysis". O AmiBroker começará a testar todas as combinações possíveis de variáveis de otimização e reportará os resultados na lista. Após a otimização é feita a lista de resultados é apresentada classificada pelo lucro líquido. Como você pode classificar os resultados por qualquer coluna na lista de resultados, é fácil obter os valores ideais de parâmetros para o menor rebaixamento, menor número de negociações, maior fator de lucro, menor exposição de mercado e maior retorno anual ajustado ao risco. As últimas colunas da lista de resultados apresentam os valores das variáveis de otimização para determinado teste. 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 ideais. No estágio atual, você precisa digitá-las manualmente na janela de edição de fórmulas (o segundo parâmetro de otimização da chamada de função). Exibindo gráficos de otimização animados em 3D Para exibir o gráfico de otimização 3D, você precisa executar a otimização de duas variáveis primeiro. A otimização de duas variáveis precisa de uma fórmula que tenha duas chamadas de função Optimize (). Um exemplo de fórmula de otimização de duas variáveis se parece com isso: por Optimize (por. 2. 5. 50. 1) Level Optimize (nível. 2. 2. 150. 4) Buy Cross (CCI (per), - Level) Sell Cross (Level, CCI (per)) Depois de inserir a fórmula, você precisa clicar no botão quotOptimizequot. Quando a otimização estiver concluída, clique na seta suspensa no botão Otimizar e escolha Exibir gráfico de otimização 3D. Em poucos segundos, um gráfico de superfície tridimensional colorido aparecerá em uma janela do visualizador de gráficos 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 em relação às variáveis de otimização. Você pode, no entanto, traçar um gráfico de superfície 3D para qualquer coluna na tabela de resultados de otimização. Basta clicar no cabeçalho da coluna para classificá-lo (a seta azul aparecerá indicando que os resultados da otimização são classificados pela coluna selecionada) e, em seguida, escolha Visualizar gráfico de otimização 3D novamente. Visualizando como os parâmetros de seus sistemas afetam o desempenho de negociação, você pode decidir mais facilmente quais valores de parâmetros produzem quotfragilequot e quais produzem desempenho de sistema de cotação. 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. Gráficos de otimização 3D são ótimas ferramentas para evitar ajustes de curva. O ajuste de curva (ou otimização excessiva) ocorre quando o sistema é mais complexo do que precisa ser, e toda essa complexidade estava focada em condições de mercado que podem nunca mais acontecer. Mudanças radicais (ou picos) nos gráficos de otimização 3D mostram áreas claramente super otimizadas. Você deve escolher a região do parâmetro que produz um platô amplo e amplo no gráfico 3D para sua negociação na vida real. 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 AmiBrokers oferece total capacidade de visualização com rotação e animação completas de gráficos. Agora você pode ver os resultados do sistema de todas as perspectivas imagináveis. Você pode controlar a posição e outros parâmetros do gráfico usando o mouse, a barra de ferramentas e os atalhos de teclado, o que for mais fácil para você. Abaixo você encontrará a lista. - para girar - segure o botão esquerdo do mouse e mova nas direções X / Y - para zoom-in, zoom-out - mantenha pressionado o botão direito do mouse e mova nas direções X / Y - para mover (traduzir) - segure o botão esquerdo do mouse e tecla CTRL e mover em direções X / Y - para animar - segure o botão esquerdo do mouse, arraste rapidamente e solte o botão enquanto arrasta espaço - animar (auto-rotação) seta para a esquerda - girar vert. esquerda DIREITA seta - girar vert. direita seta para cima - girar horiz. cima para baixo seta - girar horiz. abaixo NUMPAD (PLUS) - Próximo (zoom in) NUMPAD - (MENOS) - Far (zoom out) NUMPAD 4 - mover para a esquerda NUMPAD 6 - mover para a direita NUMPAD 8 - subir NUMPAD 2 - descer PAGE UP - subir de nível de água PAGE DOWN - nível de água baixo Otimização inteligente (não exaustiva) A AmiBroker agora oferece otimização inteligente (não exaustiva), além de uma busca exaustiva e regular. A pesquisa não exaustiva é útil se o número de todas as combinações de parâmetros de determinado sistema comercial for simplesmente grande demais para ser viável para uma pesquisa exaustiva. A busca exaustiva é perfeitamente adequada, desde que seja razoável usá-la. Vamos dizer que você tem 2 parâmetros cada um variando de 1 a 100 (passo 1). Isso é 10000 combinações - perfeitamente OK para pesquisa exaustiva. Agora com 3 parâmetros você tem 1 milhão de combinações - ainda é bom para uma busca exaustiva (mas pode ser longa). 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 verificar todos eles, e essa é a área em que métodos de pesquisa inteligente não exaustivos podem resolver o problema que não é solucionável em tempo razoável usando uma pesquisa exaustiva. Aqui é absolutamente a instrução SIMPLESM como usar o novo otimizador não exaustivo (neste caso, CMA-ES). 1. Abra sua fórmula no Editor de Fórmulas 2. Adicione esta única linha na parte superior de sua fórmula: OptimizerSetEngine (quotcmaequot) // você também pode usar quotspsoquot ou quottribquot aqui 3. (Opcional) Selecione seu destino de otimização em Análise Automática, Configurações , na guia "Walk-Forward", campo de destino de otimização. Se você pular esta etapa, ela otimizará para CAR / MDD (retorno anual composto dividido pelo rebaixamento máximo). Agora, se você executar a otimização usando essa fórmula, ela usará o novo otimizador evolutivo (não exaustivo) do CMA-ES. Como funciona A otimização é o processo de encontrar o mínimo (ou máximo) de determinada função. Qualquer sistema de negociação 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 destino de otimização (digamos CAR / MDD). E você está procurando pelo máximo de determinada função. Alguns dos 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 por humanos - CMA-ES. Esses algoritmos são usados em muitas áreas diferentes, incluindo finanças. Digite quotPSO financequot ou quotCMA-ES financequot no Google e você encontrará muitas informações. Métodos não exaustivos (ou quotsmart) irão encontrar o melhor local ou global. Obviamente, o objetivo é encontrar um global, mas se houver um único pico acentuado de combinações de parâmetros zillions, métodos não exaustivos podem falhar em encontrar este pico único, mas levando-o para os comerciantes, encontrando um único pico acentuado é 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, procuramos por regiões de planalto com parâmetros estáveis e essa é a área onde os métodos inteligentes brilham. Quanto ao algoritmo usado pela pesquisa não exaustiva, ele tem a seguinte aparência: a) o otimizador gera uma população inicial (geralmente aleatória) de conjuntos de parâmetros b) backtest é realizado pela AmiBroker para cada conjunto de parâmetros da população c) os resultados dos backtests são avaliada de acordo com a lógica do algoritmo e nova população é gerada com base na evolução dos resultados, d) se for encontrado novo melhor - salve e vá para a etapa b) até que os critérios de parada sejam atendidos Os exemplos de critérios de parada podem incluir: a) atingir iterações máximas b) pare se o intervalo dos melhores valores objetivos das últimas X gerações for zero c) pare de adicionar o vetor de desvio padrão 0,1 em qualquer direção do eixo principal não altere o valor do objetivo. d) outros otimizador exaustivo) no AmiBroker você precisa especificar o mecanismo otimizador que você deseja usar na fórmula AFL usando a função OptimizerSetEngine. A função seleciona o mecanismo de otimização externo definido pelo nome. O AmiBroker atualmente é fornecido com 3 mecanismos: Standard Particle Swarm Optimizer (quotspsoquot), Tribes (quottribquot) e CMA-ES (quotcmaequot) - os nomes entre chaves devem ser usados em chamadas OptimizerSetEngine. Além de selecionar o mecanismo otimizador, você pode definir alguns dos seus parâmetros internos. Para isso, use a função OptimizerSetOption. Função OptimizerSetOption (quotnamequot, value) A função define parâmetros adicionais para o mecanismo de otimização externo. Os parâmetros são dependentes do mecanismo. Todos os três otimizadores fornecidos com o AmiBroker (SPSO, Trib, CMAE) suportam dois parâmetros: quotRunsquot (número de execuções) e quotMaxEvalquot (avaliações máximas (testes) por execução única). O comportamento de cada parâmetro é dependente do mecanismo, portanto, os mesmos valores podem e geralmente produzirão resultados diferentes com diferentes mecanismos usados. A diferença entre Runs e MaxEval é a seguinte. Avaliação (ou teste) é backtest único (ou avaliação do valor da função objetivo). RUN é uma execução completa do algoritmo (encontrar valor ótimo) - geralmente envolvendo muitos testes (avaliações). Cada execução simplesmente restaura todo o processo de otimização desde o novo começo (nova população aleatória inicial). Portanto, cada execução pode levar a encontrar diferentes locais max / min (se não encontrar um global). Então, o parâmetro Runs define o número de execuções subseqüentes do algoritmo. MaxEval é o número máximo de avaliações (bactests) em uma única execução. 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, pois há menos chances de ficar preso no máximo local, pois as execuções subseqüentes começarão a partir da população aleatória inicial diferente. seja complicado. Depende do problema em teste, da sua complexidade, etc., etc. Qualquer método não-exaustivo estocástico não oferece garantia de encontrar max / min global, independentemente do número de testes, se for menor do que a exaustiva. A resposta mais fácil é para. especifique um número tão grande de testes quanto for razoável para você em termos de tempo necessário para concluir. Outro conselho simples é multiplicar por 10 o número de testes com adição de nova dimensão. Isso pode levar a superestimar o número de testes necessários, mas é bastante seguro. Os motores expedidos são projetados para serem simples de usar, portanto, os valores padrão / automáticos quotreasonable são usados para que a otimização possa ser executada sem especificar nada (aceitando padrões). É importante entender que todos os métodos de otimização inteligentes funcionam melhor em espaços de parâmetros contínuos e funções objetivas relativamente suaves. Se o espaço de parâmetros é discreto, os algoritmos evolutivos podem ter dificuldade em encontrar um valor ótimo. Isto é especialmente verdadeiro para os parâmetros binários (on / off) - eles não são adequados para qualquer método de busca que usa gradiente de mudança de função objetiva (como a maioria dos métodos inteligentes faz). Se o seu sistema de negociação contiver muitos parâmetros binários, você não deve usar o otimizador inteligente diretamente sobre eles. Em vez disso, tente otimizar apenas os parâmetros contínuos usando o otimizador inteligente e alterne os parâmetros binários manualmente ou via script externo. SPSO - Otimizador de Enxame de Partículas Padrão O Otimizador de Enxame de Partículas Standard é baseado no código SPSO2007 que supostamente produz bons resultados, desde que os parâmetros corretos (por exemplo, Runs, MaxEval) sejam fornecidos para um problema específico. Escolher opções corretas para o otimizador PSO pode ser complicado, portanto, os resultados podem variar significativamente de caso para caso. O SPSO. dll vem com códigos fonte completos dentro da subpasta quotADKquot. Exemplo de código para o Otimizador de Enxame de Partículas Padrão: (achando o valor ideal em 1000 testes no espaço de pesquisa de 10000 combinações) OtimizadorSetEngine (quotspsoquot) OptimizerSetOption (quotRunsquot, 1) OptimizerSetOption (quotMaxEvalquot, 1000) sl Optimize (quotsquot, 26, 1, 100, 1 ) Otimizar (Cruzar (0, MACD (fa, sl)) TRIBOS - Tribos Adaptadores de Enxame de Partículas Adaptáveis a Partículas sem Parâmetros adaptáveis , versão sem parâmetros do otimizador não exaustivo PSO (otimização de enxame de partículas). Para obter informações científicas, consulte: particleswarm. info/Tribes2006Cooren. pdf Em teoria, ele deve ter um desempenho melhor do que o PSO normal, pois ele pode ajustar automaticamente os tamanhos de enxame 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 a variante quotTribes-Dquot (ou seja, sem dimensão). Com base em clerc. maurice. free. fr/pso/Tribes/TRIBES-D. zip por Maurice Clerc. Códigos-fonte originais usados com permissão do autor O Tribes. DLL vem com código-fonte completo (dentro da pasta quotKadquot) Parâmetros suportados: quotMaxEvalquot - número máximo de avaliações (backtests) por execução (padrão 1000). Você deve aumentar o número de avaliações com o aumento do número de dimensões (número de parâmetros de otimização). O padrão 1000 é bom para 2 ou no máximo 3 dimensões. quotRunsquot - número de execuções (reinicializações). (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 reinicializações) é definido como 5. Para usar o otimizador Tribes, basta adicionar uma linha ao seu código: OptimizerSetOption (quotMaxEvalquot , 5000) // 5000 avaliações max CMA-ES - Covariance Adaptação matricial Otimizador de estratégia evolutiva CMA-ES (Covariance Matrix Adaptation Evolutionary Strategy) é um otimizador não exaustivo avançado. Para obter informações científicas, consulte: bionik. tu-berlin. de/user/niko/cmaesintro. html De acordo com referências científicas, supera outras nove estratégias evolutivas mais populares (como PSO, Genetic e Differential evolution). bionik. tu-berlin. de/user/niko/cec2005.html O plug-in CMAE. DLL implementa a variante quotGlobalquot da pesquisa com várias reinicializações com o aumento do tamanho da população O CMAE. DLL é fornecido com o código-fonte completo (dentro da pasta quotADKquot) Por padrão, número de execuções (ou reinicia) é definido como 5. É aconselhável deixar o número padrão de reinicializações. Você pode alterá-lo usando a opção OptimizerSetOption (quotRunsquot, N), onde N deve estar no intervalo 1..10. Especificar mais de 10 execuções não é recomendado, embora seja possível. Observe que cada execução usa DUAS VEZES o tamanho da população da execução anterior, de modo que ela cresce exponencialmente. Portanto, com 10 execuções, você acaba com uma população 210 maior (1024 vezes) do que a primeira execução. Existe outro parâmetro, o quotMaxEvalquot. O valor padrão é ZERO, o que significa que o plugin calculará automaticamente o MaxEval necessário. É aconselhável NÃO definir MaxEval por si mesmo como 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, por isso, muitas vezes encontra soluções mais rápidas do que outras estratégias. É normal que o plugin pule 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 da otimização possa se mover muito rapidamente em alguns pontos. O plug-in também tem capacidade de aumentar o número de etapas sobre o valor inicialmente estimado, se necessário, para encontrar a solução. Devido à sua natureza adaptativa, o tempo estimado para a esquerda e / ou o número de etapas exibidas pela caixa de diálogo de progresso é apenas a estimativa mais provável no momento 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 adequadas para a maioria dos casos. Deve-se notar, como é o caso de muitos algoritmos de busca de espaço contínuo, que diminuir o parâmetro quotstepquot em chamadas de função Optimize () não afeta significativamente os tempos de otimização. A única coisa que importa é o problema quotdimensionquot, ou seja, o número de parâmetros diferentes (número de chamadas de função de otimização). O número de quotsteps por parâmetro pode ser definido sem afetar o tempo de otimização, portanto, use a melhor resolução desejada. Em teoria, o algoritmo deve ser capaz de encontrar solução em no máximo 900 (N3) (N3) backtests onde quotNquot é a dimensão. Na prática, converge muito mais rápido. Por exemplo, a solução no espaço de parâmetro dimensional 3 (N3) (digamos 100100100 1 milhão de etapas exaustivas) pode ser encontrada em apenas 500-900 passos CMA-ES. Otimização individual multithread A partir do AmiBroker 5.70, além do multithreading de múltiplos símbolos. você pode executar otimização de símbolo único multi-threaded. Para acessar essa funcionalidade, clique na seta suspensa ao lado do botão "Otimizar" na janela Nova Análise e selecione "Otimização Individual". "Optimize individual" usará todos os núcleos de processadores disponíveis para realizar a otimização de um único símbolo, tornando-a muito mais rápida que a otimização regular. No modo "Símbolo atual", ele executará a otimização em um símbolo. Nos modos "Todos os símbolos" e "Filtro", todos os símbolos serão processados sequencialmente, ou seja, primeira otimização completa para o primeiro símbolo, otimização no segundo símbolo, etc. Limitações: 1. O backtester personalizado NÃO é suportado (ainda) 2. Mecanismos de otimização inteligentes NÃO são suportados - somente a otimização EXAUSTÔRICA funciona. Eventualmente podemos nos livrar da 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. Testando o tempo todo suas idéias de negociação Uma das coisas mais úteis que você pode fazer na janela de análise é testar sua estratégia de negociação em dados históricos. Isso pode lhe dar informações valiosas sobre pontos fortes e fracos de seu sistema antes de investir dinheiro real. Este único recurso AmiBroker pode economizar muito dinheiro para você. Escrevendo suas regras de negociação Primeiro, você precisa ter regras objetivas (ou mecânicas) para entrar e sair do mercado. Este passo é a base da sua estratégia e você precisa pensar sobre isso sozinho, já que o sistema deve corresponder à sua tolerância ao risco, tamanho do portfólio, técnicas de gerenciamento de dinheiro e muitos outros fatores individuais. Uma vez que você tenha suas próprias regras para negociação, você deve escrevê-las como regras de compra e venda na fórmula AmiBroker Lanugage (mais curta e cobrir se você quiser testar também a negociação a descoberto). Neste capítulo, vamos considerar o sistema de crossover médio móvel muito básico. O sistema compraria ações / contratos quando os preços subirem acima da média móvel exponencial de 45 dias e venderá ações / contratos quando o preço próximo cair abaixo da média móvel exponencial de 45 dias. A média móvel exponencial pode ser calculada em AFL usando sua função interna EMA. Tudo o que você precisa fazer é especificar a matriz de entrada e o período médio, portanto a média móvel exponencial de 45 dias dos preços de fechamento pode ser obtida pela seguinte instrução: O identificador de fechamento refere-se à matriz incorporada contendo preços de fechamento do símbolo atualmente analisado . Para testar se o preço de fechamento cruza acima da média móvel exponencial, usaremos a função cruzada embutida: buy cross (fechar, ema (fechar, 45)) A declaração acima define uma regra de negociação de compra. Dá "cota" ou "quando o preço próximo cruza acima de ema (próximo, 45). Em seguida, podemos escrever a regra de venda que daria quot1 quando ocorre uma situação oposta - fechar cruzes de preço abaixo de ema (fechar, 45): vender cruz (ema (fechar, 45), fechar) Por favor, note que estamos usando a mesma função cruzada a ordem oposta de argumentos. A fórmula completa para operações longas será semelhante a esta: comprar cruz (fechar, ema (fechar, 45)) vender cruz (ema (fechar, 45), fechar) NOTA: Para criar uma nova fórmula, abra o Editor de fórmulas usando o Editor Analysis-gtFormula No menu, digite a fórmula e escolha Ferramentas-gtEnviar para o menu Análise no editor de fórmulas Para fazer um back-test no seu sistema, basta clicar no botão Teste de retorno na janela Análise automática. Verifique se você digitou a fórmula que contém pelo menos as regras de compra e venda (como mostrado acima). Quando a fórmula está correta, a AmiBroker começa a analisar seus símbolos de acordo com suas regras de negociação e gera uma lista de negociações simuladas. Todo o processo é muito rápido - você pode testar milhares de símbolos em questão de minutos. A janela de progresso mostrará o tempo estimado de conclusão. Se você quiser parar o processo, basta clicar no botão Cancelar na janela de progresso. Quando o processo é concluído, a lista de negociações simuladas é mostrada na parte inferior da janela Análise automática. (o painel Resultados). Você pode examinar quando os sinais de compra e venda ocorreram apenas clicando duas vezes no comércio no painel Resultados. Isso lhe dará sinais brutos ou não filtrados para cada barra quando as condições de compra e venda forem atendidas. Se você quiser ver apenas setas de comércio único (abrindo e fechando o comércio atualmente selecionado), você deve clicar duas vezes na linha enquanto mantém pressionada a tecla SHIFT. Alternativamente, você pode escolher o tipo de exibição, selecionando o item apropriado no menu de contexto que aparece quando você clica no painel de resultados com o botão direito do mouse. Além da lista de resultados, você pode obter estatísticas muito detalhadas sobre o desempenho do seu sistema clicando no botão Relatório. Para saber mais sobre as estatísticas do relatório, confira a descrição da janela do relatório. Alterando suas configurações de teste Voltar O mecanismo de testes do AmiBroker usa alguns valores predefinidos para executar sua tarefa, incluindo o tamanho do portfólio, periodicidade (diária / semanal / mensal), quantidade de comissão, taxa de juros, perda máxima e paradas de lucro desejado, tipo de negociações, campos de preços e assim por diante. Todas essas configurações podem ser alteradas pelo usuário usando a janela de configurações. Depois de alterar as configurações, lembre-se de executar o teste de volta novamente se quiser que os resultados estejam em sincronia com as configurações. Por exemplo, para fazer o teste nas barras semanais, em vez de apenas clicar no botão Configurações, selecione a caixa combinada Semanalmente a partir da Periodicidade e clique em OK. em seguida, execute sua análise clicando em Voltar teste. Nomes de variáveis reservadas A tabela a seguir mostra os nomes das variáveis reservadas usadas pelo Automatic Analyzer. O significado e exemplos sobre o uso deles são dados mais adiante neste capítulo. Permite controlar o valor em dólar ou a porcentagem da carteira que é investida na negociação (veja explicações abaixo) Análise automática (nova em 3.9) Até agora discutimos o uso bastante simples do back tester. A AmiBroker, no entanto, suporta métodos e conceitos muito mais sofisticados que serão discutidos mais adiante neste capítulo. Por favor, note que o usuário iniciante deve primeiro jogar um pouco com os tópicos mais fáceis descritos acima antes de prosseguir. Então, quando você estiver pronto, por favor, dê uma olhada nos seguintes recursos introduzidos recentemente do back-tester: a) host de script AFL para escritores de fórmula avançados b) suporte aprimorado para operações curtas c) a maneira de controlar o preço de execução da ordem do roteiro d) vários tipos de paradas no back tester e) dimensionamento da posição f) tamanho do lote e tamanho do tick g) conta de margem h) backtesting futures O host de script da AFL é um tópico avançado que é abordado em um documento separado disponível aqui e não discutirei neste documento. Os recursos restantes são muito mais fáceis de entender. Nas versões anteriores do AmiBroker, se você quisesse fazer back-teste do sistema usando negociações longas e curtas, você poderia apenas simular a estratégia stop-and-reverse. Quando a posição longa foi fechada, uma nova posição curta foi aberta imediatamente. Foi porque comprar e vender variáveis reservadas foram usadas para ambos os tipos de negociações. Agora (com a versão 3.59 ou superior) há variáveis reservadas separadas para abrir e fechar negócios longos e curtos: buy - quottruequot ou 1 value opens long trade sell - quottruequot ou 1 value fecha longo trade short - quottruequot ou 1 value abre short trade cover - quottruequot ou 1 value fecha o short trade Som para fazer backteste de operações curtas que você precisa para atribuir variáveis curtas e de cobertura. Se você usar o sistema stop-and-reverse (sempre no mercado), basta atribuir sell short e buy para cobrir short sell cover buy Isso simula a maneira como as versões pré-3.59 funcionavam. Mas agora o AmiBroker permite que você tenha regras de negociação separadas para longos períodos e para curto como mostrado neste exemplo simples: // regras de entrada e saída de negociações longas: comprar cross (cci (), 100) sell cross (100, cci () ) // regras de entrada e saída de curto prazo: cross curto (-100, cci ()) cross (cci (), -100) Observe que neste exemplo se o CCI está entre -100 e 100 você está fora do mercado. Controle do preço de negociação A AmiBroker agora fornece 4 novas variáveis reservadas para especificar o preço pelo qual as ordens de compra, venda, venda a descoberto e de cobertura são executadas. Essas matrizes têm os seguintes nomes: preço de compra, preço de venda, preço de venda e preço de capa. A principal aplicação dessas variáveis é o controle do preço de negociação: BuyPrice IIF (dayofweek () 1, HIGH, CLOSE) // na segunda feira comprar em alta, senão comprar em close Então você pode escrever o seguinte para simular ordens reais: BuyStop. a fórmula para comprar o nível de parada SellStop. a fórmula para vender o nível de parada // se a qualquer momento durante o dia os preços subirem acima do nível do buystop (highgtbuystop) // a ordem de compra ocorre (em buystop ou baixa, o que for maior) Buy Cross (High, BuyStop) os preços do dia caem abaixo do nível do sellprice (low lt sellstop) // a ordem de venda ocorre (no sellstop ou alta, o que for menor) Sell Cross (SellPrice, SellStop) BuyPreço max (BuyStop, Low) // certifique-se de comprar não menos que Low SellPrice min (SellStop, High) // certifique-se de que o preço de venda não seja maior do que High Observe que o AmiBroker pré-configura as variáveis do array de preço de compra, preço de venda, preço de mercado e coverprice com os valores definidos na janela de configurações de teste do sistema Não precisa defini-los em sua fórmula. Se você não os definir, o AmiBroker funciona como nas versões antigas. Durante o back-testing, o AmiBroker irá verificar se os valores que você atribuiu ao preço de compra, preço de venda, preço de compra, preço de cobertura se encaixam na faixa alta-baixa da barra dada. Se não, o AmiBroker irá ajustá-lo para preço alto (se o preço for maior que o valor mais alto) ou para o preço mais baixo (se o valor do preço for menor que o preço mínimo) O objetivo do lucro pára Como você pode ver na foto acima, novas configurações As paradas de meta de lucro estão disponíveis na janela de configurações de teste do sistema. As paradas de meta de lucro são executadas quando o preço alto para um determinado dia excede o nível de parada que pode ser dado como um aumento percentual ou pontual do preço de compra. Por padrão, as paradas são executadas pelo preço que você define como matriz de preço de venda (para negociações longas) ou matriz de preço de cobertura (para operações de curto prazo). Esse comportamento pode ser alterado usando o recurso "exit at stopquot". Se você marcar a caixa "Retirar no Parar" nas configurações, as paradas serão executadas no nível de parada exato, ou seja, se você definir a parada de lucro do lucro em 10 e o preço de compra for 50, a ordem de parada será executada a 55 mesmo sua matriz de preço de venda contém um valor diferente (por exemplo, preço de fechamento de 56). As perdas máximas param de trabalhar de maneira semelhante - são executadas quando o preço baixo de um determinado dia cai abaixo do nível de parada que pode ser dado como um aumento percentual ou pontual do preço de compra. Esse tipo de parada é usado para proteger os lucros rastreia o seu comércio assim cada vez que um valor de posição atinge um novo máximo, o trailing stop é colocado em um nível mais alto. Quando o lucro cai abaixo do nível de parada móvel, a posição é fechada. Esse mecanismo é ilustrado na figura abaixo (a parada móvel 10 é mostrada): / uma implementação de amostra de baixo nível da parada de lucro-alvo na AFL: / Buy Cross (MACD (), Sinal ()) para (i 0 i lt BarCount i) if (priceatobuy 0 Comprar i) priceatbuy BuyPrice i if (priceatobuy gt 0 SellPrice i gt 1,1 priceatbuy) Vender i 1 VenderPreço i 1.1 priceatobuy priceatbuy 0 else Vender i 0 Este é um novo recurso da versão 3.9. O dimensionamento de posição no backtester é implementado por meio da nova variável reservada PositionSize ltsize arraygt Agora você pode controlar o valor em dólar ou a porcentagem do portfólio investido na quantidade definida pelo comércio que define o valor investido na negociação, por exemplo: PositionSize 1000 / / investe 1000 em todos os números negativos do comércio -100 ..- 1 define porcentagem: -100 dá 100 do tamanho atual do portfólio, -33 dá 33 do patrimônio disponível por exemplo: PositionSize -50 / sempre investe apenas metade do patrimônio atual / dinâmico Exemplo de dimensionamento: PositionSize - 100 RSI () como RSI varia de 0..100 isso resultará em posição dependendo dos valores RSI - gt valores baixos de RSI resultará em maior percentual investido Se menos de 100 de caixa disponível é investido, então o restante montante ganha taxa de juros, tal como definido nas configurações. Há também uma nova caixa de seleção na janela de configurações AA: “Diminuir tamanho da posição diminuindo” - isso controla como o backtester manipula a situação quando solicitado tamanho da posição (via PositionSize variável) excede o dinheiro disponível: quando esta bandeira está marcada a posição é inserida com tamanho shinked para dinheiro disponível, se estiver desmarcada, a posição não é inserida. Para ver os tamanhos reais das posições, use um novo modo de relatório na janela de configurações AA: "Lista de negociação com preços e pos. sizequot Para o fim, aqui está um exemplo da técnica de dimensionamento de posição baseada em ATR da Tharps codificada em AFL: Compre a sua fórmula de compra heregt Vender 0 // vendendo apenas por stop TrailStopAmount 2 ATR (20) Capital 100000 / IMPORTANTE: Defina-o também no Configurações: Patrimônio / Risco Inicial 0.01Capital PositionSize (Risk / TrailStopAmount) BuyPrice ApplyStop (2, 2, TrailStopAmount, 1) A técnica pode ser resumida da seguinte forma: O capital total por símbolo é 100.000, definimos o nível de risco como 1 do total capital próprio. O nível de risco é definido da seguinte maneira: se um stop móvel em um estoque 50 estiver em, digamos, 45 (o valor de dois ATRs contra a posição), a perda 5 será dividida em 1000 para dar 200 ações a serem compradas. Assim, o risco de perda é de 1000, mas o risco de alocação é de 200 ações x 50 / ação ou 10.000. Assim, estamos alocando 10 do patrimônio para a compra, mas apenas arriscando 1000. (Trecho editado da lista de discussão AmiBroker) Tamanho do lote e tamanho do lote Vários instrumentos são negociados com várias unidades de cotação ou cotações. Por exemplo, você pode comprar um número fracionário de unidades de fundo mútuo, mas você não pode comprar um número fracionário de ações. Às vezes você tem que comprar em lotes de 10 ou 100. O AmiBroker agora permite que você especifique o tamanho do bloco no nível global e por símbolo. Você pode definir o tamanho do lote redondo por símbolo na página Symbol-gtInformation (foto 3). O valor de zero significa que o símbolo não possui tamanho de lote especial e usará o tamanho padrão de lote padrão (configuração global) na página de configurações Análise automática (foto 1). Se o tamanho padrão for definido como zero, isso significa que o número fracionário de compartilhamentos / contratos é permitido. Você também pode controlar o tamanho do lote redondo diretamente da sua fórmula AFL usando a variável reservada RoundLotSize, por exemplo: Essa configuração controla o movimento mínimo de preço do símbolo fornecido. Você pode defini-lo no nível global e por símbolo. Assim como no tamanho do lote, você pode definir o tamanho do carrapato por símbolo na página Symbol-gtInformation (foto 3). O valor de zero instrui o AmiBroker a usar o tamanho padrão do tickdefault definido na página Configurações (figura 1) da janela Análise automática. Se o tamanho padrão do tick também for definido como zero, significa que não há movimentação mínima de preço. Você também pode definir e recuperar o tamanho do carrapato a partir da fórmula AFL usando a variável reservada TickSize, por exemplo: Observe que a configuração do tamanho do carrapato afeta SOMENTE as negociações realizadas por paradas internas e / ou ApplyStop (). O backtester pressupõe que os dados de preço seguem os requisitos de tamanho do tick e não altera as matrizes de preços fornecidas pelo usuário. Portanto, a especificação do tamanho do tick só faz sentido se você estiver usando paradas internas, de modo que os pontos de saída sejam gerados em níveis de preço "pagos" em vez de calculados. Por exemplo, no Japão - você não pode ter partes fracionárias de yen, portanto, você deve definir o ticksize global como 1, de modo que as paradas internas saem de negociações em níveis inteiros. A configuração da margem da conta define o requisito de porcentagem de margem para toda a conta. O valor padrão da margem da conta é 100. Isso significa que você precisa fornecer 100 fundos para entrar na negociação, e foi assim que o backtester funcionou nas versões anteriores. Mas agora você pode simular uma conta de margem. Quando você compra na margem, você está simplesmente pedindo dinheiro emprestado ao seu corretor para comprar ações. Com os regulamentos atuais, você pode colocar 50 do preço de compra da ação que deseja comprar e emprestar a outra metade do seu corretor. Para simular isso, insira 50 no campo Margem da conta (veja a foto 1). Se o seu capital inicial estiver definido para 10000, o seu poder de compra será então de 20000 e você poderá entrar em posições maiores. Observe que essa configuração define a margem da conta inteira e NÃO está relacionada à negociação de futuros. Em outras palavras, você pode negociar ações na conta de margem. O sinal de entrada reversa força a caixa de seleção de saída para as configurações do Backtester. Quando está ON (a configuração padrão) - o backtester funciona como nas versões anteriores e fecha a posição já aberta se um novo sinal de entrada na direção reversa for encontrado. Se esta chave estiver DESLIGADA - mesmo que o sinal reverso ocorra, o backtester mantém o comércio aberto no momento e não fecha a posição até que o sinal de saída regular (venda ou cobertura) seja gerado. Em outras palavras, quando essa chave está em OFF, o backtester ignora os sinais Short durante as negociações longas e ignora os sinais Buy durante as negociações mais curtas. "Permitir a mesma saída de barra (comércio de barra única) quot opção para as configurações Quando está ligado (as configurações padrão) - entrada e sair na mesma barra é permitida (como nas versões anteriores) se for OFF - saída pode acontecer a partir de somente na próxima barra (isso se aplica a sinais regulares, há uma configuração separada para saídas geradas pelo ApplyStop). A mudança para OFF permite reproduzir o comportamento do backtester de MS que não é capaz de lidar com saídas no mesmo dia. "Ativar pára imediatamente" Essa configuração resolve o problema de testar sistemas que entram em negociações no mercado aberto. Em versões anteriores ao backtester 4.09 presumimos que você estava entrando em negociações no fechamento do mercado, as paradas internas foram ativadas a partir do dia seguinte. O problema foi quando você de fato definiu o preço aberto como o preço de entrada no mercado - então as flutuações de preço no mesmo dia não acionaram as paradas. Existem algumas soluções publicadas baseadas no código AFL, mas agora você não precisa usá-las. Simplesmente se você negociar em aberto, você deve marcar "Ativar paradas imediatamente" (foto 1). Você pode perguntar por que não basta verificar a matriz de preço de compra ou preço de compra se for igual ao preço de abertura. Infelizmente isso não vai funcionar. Por que simplesmente porque existem dias do doji quando o preço aberto é igual ao fechamento e depois o backtester nunca saberá se o negócio foi entrado no mercado aberto ou fechado. Então, nós realmente precisamos de uma configuração separada. QuickUFLquotQuickAFL (tm) é um recurso que permite o cálculo mais rápido de AFL sob certas condições. Inicialmente (desde 2003) estava disponível apenas para indicadores, a partir da versão 5.14 está disponível em Análise Automática também. Inicialmente, a ideia era permitir o redesenho mais rápido de gráficos através do cálculo da fórmula de AFL apenas para aquela parte visível no gráfico. In a similar manner, automatic analysis window can use subset of available quotations to calculate AFL, if selected 8220range8221 parameter is less than 8220All quotationsquot. Detailed explanation on how QuickAFL works and how to control it, is provided in this Knowledge Base article: amibroker/kb/2008/07/03/quickafl/ Note that this option works not only in the backtester, but also in optimizations, explorations and scans. October 14, 2011 Added February 29, 2012, additional points to consider: 1) This system depends on getting accurate fills at the Open price. To obtain such fills requires a quality minimum-delay data feed and advanced programming skills to implement trade-automation. 2) When setting the entry price slightly below the Open price (trying to improve performance) the system fails miserably. Mesmo melhorar o preço em apenas um centavo mata o sistema. This suggests that most of the profit comes from days on which the Open price was equal to the daily Low, i. e. the price moved up from the Open and never dropped below it. Isso, claro, é óbvio. To confirm this I added this test condition (it looks ahead) to exclude days on which Open Low: Buy Buy AND NOT O L This kills the system and proves that most of the profit comes from days where OL. To further confirm this I added the opposite condition: Buy Buy AND O L This gives nearly infinite profits and proves that most profits come from days on which the price moves up immediately from the Open and never returns below it. Trying to improve the entry price is a mistake one should enter on a Stop set 1-2 ct above the Open price, this will eliminate days when the price drops and never turns back. Isso melhora significativamente o desempenho. 3) This system trades knee-jerk trader-responses/patterns. Such patterns are usually drowned by large volume trading hence this system works far better when you select tickers with volumes between 500,000 and 5,000,000 shares/day. This also improves performance significantly. Adding the above two features results in an equity curve much better than that shown below. Desculpe, não tenho tempo para documentar o acima em detalhes. Good luck This post outlines a very simple Long-only trading idea that Buys at a given percentage below yesterday8217s Low, and exits at the next day8217s Open. While sometimes it may be difficult to get the exact Open price, the high profitability of this system makes it a good candidate for further experimentation. O sistema funciona bem com Watchlists como o N100, SP500, SP1500, Russel 1000, etc. Desempenho no Russel 1000, com max. open positions set to 1, for the period 12/10/2003 to 12/10/2011, looks like this: Some of the other Watchlists give less exposure (profits) but this comes with lower DDs. Commissions were set to 0.005 per share. Nenhuma margem usada. No explicit ranking is used tickers are traded based on their alphabetical sort in the Watchlist. This may seem odd but is significant: reversing this sort the system fails. Isso pode significar que, devido a problemas de varredura em tempo real, os símbolos listados no início desse tipo podem ser negociados de forma diferente dos listados na parte inferior. Preste atenção na Liquidez (você pode querer trocar mais de uma posição) e na derrapagem (A entrada é bastante livre de risco, mas as saídas podem ser problemáticas). DDs are significant but may be offset with improved real-time traded entries and exits. When trading automatically it may be possible to place OCA DAY-LMT entry orders for all signals and just wait and see what fills. Since exits are more difficult than entries you may wish to explore other exit strategies. Os valores padrão do parâmetro são selecionados apenas de um chapéu. Almost certainly you can Optimize them or adjust them dynamically for individual tickers. Eu 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 negociadas, os parâmetros não parecem muito críticos. Over-optimizing doesn8217t seem a problem in this case. The code below is very simple and requires few explanations. No entanto, é importante entender que este sistema desfruta de uma pequena margem negociando no Open, e calculando o TrendMA usando o mesmo preço Open. Some might interpret this as future leak, however if you trade this system in real-time, it is not. Many people do not realize that if you trade at the Open you can also use this price in your calculations 8212 as long as you perform them in real-time 8212 this is where AmiBroker and technology can give you an edge. If you Ref() back the TrendMA by one bar the system is still very profitable however DDs increase for some Watchlists. Se você usar investimentos fixos, a diferença será insignificante. O procedimento de negociação seria iniciar o escaneamento antes que o mercado seja aberto e remover os tickers com preços tão remotos que é improvável que eles atendam ao OpenThresh. Assim, você pode começar a digitalizar 1000 símbolos, mas muito rapidamente o número digitalizado diminuirá para apenas uma dúzia de tickers. When you approach 9:30am your real-time scan will be very fast and you will be able to place your LMT order very close to the Open 8211 you may even be able to improve on the Open price. Even though a few people looked at the code below and found nothing wrong, the profits seem rather high for such a simple system. Please report errors you may see. Filed by Herman at 7:03 pm under Ideas (Experimental) Comments Off on EOD Gap-Trading Portfolio system September 1, 2011 This idea was posted ( 161332 ) on the main AmiBroker list on July 3, 2011. There were numerous excellent comments on the list and if you are interested in working on this system you do well to read them all before starting. After posting I found a number of posts on the web discussing this trading idea, some claimed to be trading a similar system with good success. I referred to this system a 8220Gap Trading8221 system but this may be a bit of a misnomer, 8220Mean reversion8221 might be a better classification. Googling for it will get you many more hits to similar systems. Here are a few links: It appears to be a fairly widely discussed trading idea and I suggest you8217ll do some Googling on your own to learn the latest. As an Amibroker user you have better tools than most traders and you have a better chance than most to come up with a variation that works. Perhaps with a little less profits, and with a significant amount of additional code 8212 it won8217t be a 8220quicky8221 project :-) Some people commented that this system will not work in real trading, while they may be right others say schemes like this work. I didn8217t finish the system and can8217t claim to know whether it is tradable or not. The system Buys at a certain percentage below yesterday8217s Low, on a LMT order, and exits in the same day at the Close. Filed by Herman at 6:53 pm under Ideas (Experimental) Comments Off on A Long-only EOD Gap trading idea I use a small setup criteria to scan for my stocks. MACD default, I look for Histogram 4 down bars and 1 up bar for buy signal(I have the histogram set to red for down and blue for up so I can see clearly). MACD above Zero Line RSI Above 30 This system is base on trend trading. Buying on pullback when the market continues its up trend. To scan for MACD Trend setups: 1) Insert the following formula into a chart. 2) Run a Scan in AA using SMACDTrend with All symbols . n last days . n 1 and Sync chart on select as the settings. Stocks that meet the criteria will be reported in the Results list. Note: Some variations of the setup rules can define signals that are quite rare and in small databases it is possible that there will be no setups on any given day (hence no stock will be reported by the scan). 3) Click on any symbol in the Results pane to view the chart, for that symbol, in the background. Note: In this example a training database, that only contains data up to 5/11/2007, was used. Trading idea by protraderinc. Comments and formula by Bill 8211 WaveMechanic . Filed by brianz at 11:06 pm under Ideas (Experimental) Comments Off on MACD Trend System October 14, 2007 Filed by brianz at 10:43 pm under Ideas (Experimental) Comments Off on 15 Day Performers Trading System August 19, 2007 This is the first in a series off KISS (keep it simple, stupid) trading ideas for you to play with. All system ideas presented here are unproven, unfinished, and may contain errors. They are intended to show possible patterns for further exploration. As always, you are invited to make comments and/or add your own ideas to this series. I prefer real-time systems that trade fast, are automated, and are devoid of traditional indicators. Preferably, they should have no optimizable parameters however, I may not always be able to meet this objective. Not all systems will be that simple there will be some that use simple averaging or HHV/LLV type functions. O primeiro sistema mostrado abaixo é uma cópia do sistema de demonstração que uso para desenvolver rotinas de Automação Comercial em outro local deste site. Real-Time Gap-Trading . Para ver como isso funciona, você deve fazer um backtest em dados de 1 minuto com uma periodicidade no intervalo de 5 a 60 minutos. Sua primeira impressão pode ser que esses lucros são simplesmente devido a um mercado em alta, no entanto, o fato de que os lucros Long e Short são quase iguais sugere que há mais do que isso. Because 98 of all trades fall between 9:30 AM and 10:30 AM, this type of system is nice if you just want to trade a short time each day. This reduces risk with respect to market exposure and gives you more time to enjoy other activities. Backtesting this on the NASDAQ-100 watchlist (individual backtests, 15 min. Periodicity) gives the profits shown below for the period of 1 MAR 2007 to 17 AUG 2007. Ticker names are omitted to keep the chart compact the chart simply shows a net profit bar for each ticker tested. Average exposure for this system is about 15 hence, you may be able to trade portfolios to increase profits and smooth the equity curves. Tenha em atenção que, na sua forma bruta, os levantamentos são inaceitáveis e que podem existir restrições de volume para muitos tickers. Since this system has low exposure, it may be a candidate for market scanning and ranked portfolio trading. RARs would be an indication of the absolute maximum profits that could be obtained if one succeeded to increase exposure to near 100. However, price movement from different tickers may be correlated, and trades from different tickers may overlap. Se muitos tickers forem negociados ao mesmo tempo, seria difícil aumentar a exposição do sistema. Filed by Herman at 1:49 pm under Ideas (Experimental) Comments Off on KISS-001: Intraday Gap Trading August 17, 2007 You are invited to submit links to system ideas in comments to this post. Gap Trading Strategies 8211 Stockcharts Intraday Moving Average Crossover with Position Sizing 8211 NeoTicker Volatility-Breakout-Systems 8211 Traders Log Ten day High/Low system 8211 StockWeblog Reversion Systems 8211 SeekingAlpha Systems Traders Club . Trader Club Bulletins. July 16, 2007 This category is reserved for real working trading systems, i. e. that you have traded at some point in time or would consider trading. Since the criteria for tradability varies from person to person, and since systems may work or not depending on how they are traded, it will be difficult to screen contributions here. Com relação ao que está publicado aqui, mantenha a mente aberta e considere que o cartaz considera o sistema comercializável. You can contribute by posting as an author (requires registration ) or in a comment to this post. Filed by Herman at 11:14 am under Practical (Profitable) Comments Off on Introduction to Trading Systems 8211 Practical This is where you can share trading systems that are marginally profitable, i. e. those that should not be traded as they are but that show potential. Typically this would be a basic system that is profitable but experiences draw downs of 50. Such systems can often be improved by adding Stops, Targets, Money Management, Portfolio techniques, etc. The reality is that while you may not have the expertise to make it work someone else may. Quase todos nós encontramos ideias de sistemas de negociação em livros e revistas que depois codificamos na AFL para avaliação. Some of these systems may have been around for many years while others are new ideas. After coding them, almost always, we are disappointed and chuck out the system (work). Em vez de jogar fora seu trabalho, você está convidado a postar o sistema aqui para dar a outro desenvolvedor uma chance de consertá-lo. You are invited to contribute as an author (requires registration ) or in a comment to this post. Filed by Herman at 11:04 am under Ideas (Experimental) Comments Off on Introduction to Trading Systems 8211 Ideas
Comments
Post a Comment