Melhor sistema de comércio afl
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.
Melhor sistema de comércio afl
A solução final de gerenciamento de portfólios.
WiseTrader Toolbox.
Swing Trading System para Amibroker (AFL)
Fórmula muito simples, mas bons resultados.
Compre acima High e Sell below Low.
A linha verde é Trailing Stop loss line.
Capturas de tela.
Indicadores / fórmulas semelhantes.
Indicador / Fórmula.
5 comentários.
sim, é simples, mas sim, muito, obrigado por compartilhar.
Estou confuso por que você COMPRA acima do Alto e Venda abaixo do Baixo ??
Esta fórmula parece realmente boa, mas a questão é o que se entende em alto e baixo?
Eu acho que comprar / vender deve ser feito após a aparição da seta relevante.
Verifique os crossovers, a linha vermelha está no topo = o mercado é otimista, a linha vermelha está na parte inferior = o mercado está em baixa.
(Estou confuso por que você COMPRA acima High e Sell below Low ??)
Sistema de negociação MySAR ADX para Amibroker (AFL)
O sistema de negociação MySAR ADX para Amibroker (AFL) Parabolic Stop and Reversal, também conhecido como Parabolic SAR, é uma estratégia que usa um método de parada e reversão para determinar o que ajuda os comerciantes a entrar em boa saída. J. A Parabólica Stop and Reversal de Welles Wilder é um estudo simples para uso. O estudo calcula continuamente os pontos de preço "parar e inverter". Sempre que a análise técnica do mercado de ações e valores mobiliários, o Parabolic SAR (Parabolic Stop and Reverse) é um método elaborado por J. Welles Wilder, Jr.,
Ele parece ser mais lucrativo. Acho que o truque é aproveitar a tendência. sempre haverá redução. O foco deve ser dado à tendência.
A minha recomendação é adicionar muito durante a tendência de maximizar os lucros. A coisa boa sobre o indicador é que ele irá tirar você de um comércio perdedor sem perda maciça. Então, se o sistema é globalmente lucrativo, então podemos nos importar menos com os whipsaws. Whipsaw é um prelúdio para lucrar. Uma maneira que eu forneci o gráfico e circulou quando muito deveria ser adicionado. Observe quando a linha vai para baixo, por causa de uma ruptura de preço. Devemos aproveitar o movimento de preços. Em seguida, venda quando obtemos o sinal de inversão. Se isso pode ser codificado, isso seria incrível. Este indicador de SAR é impressionante, pois sou adepto da tendência e nada mais.
Este é um sistema de negociação completo usando uma SAR personalizada projetada por Thomas Ludwig e ADX para filtrar sinais falsos. Ele rastreia o movimento dos preços e segue a tendência.
// Nome da Fórmula: MySar ADX System.
// Autor / Uploader: Abhishek Gupta.
// Data / hora adicionada: 2017-mar-09.
// Bandeiras: estratégia de negociação.
// Este é um sistema de negociação completo usando um SAR personalizado projetado.
// por Thomas Ludwig e ADX para filtrar sinais falsos.
// Rastreia o movimento dos preços e segue a tendência.
// Usa PSAR xo por Thomas Ludwig.
// Escrito por: Abhishek Gupta.
Plot (C, "Close", ParamColor ("Color", colorDefault), styleNoTitle | ParamStyle (& quot; Style & quot;) | GetPriceStyle ());
// Nome da Fórmula: ParabXO.
// Autor / Uploader: Thomas Ludwig.
// Data / hora adicionada: 2005-03-21 15:19:39.
// URL da Fórmula: amibroker / library / formula. php? Id = 448.
// Detalhes URL: amibroker / library / detail. php? Id = 448.
// Este é um aprimoramento do famoso indicador Parabolic SAR por Welles.
// Mais selvagem. Para mais detalhes, veja as observações abaixo.
// ParabXO implementado na AFL.
// O código abaixo depende muito do código AFL para o.
// Parabolic SAR de Tomasz Janeczko na biblioteca AB.
// Aplicação: Drag & amp; Solta.
// Além de fazer o Accelerator Factor e seu máximo.
// valor variável através da função Param (), fiz 2 melhorias.
// por uma simples codificação adicional que foi introduzida por.
// Dennis Meyers em um artigo na edição S & C C / 4/1995:
// 1. O valor de início do AF pode ser configurado de forma independente; assim você.
// pode fazer o indicador reagir consideravelmente mais rapidamente.
// 2. O ParabXO não avança a menos que seja penetrado.
// por uma quantidade especificada (denominada "Limite de cruzamento em%" abaixo)
//, impedindo assim muitas whipsaws. Pode ser definido como 0 se.
// você não quer usar esta modificação. Por favor, note isso.
// em Meyers & # 8217; artigo ele usou um número absoluto enquanto que a.
// percentagem faz mais sentido na minha humilde opinião.
// Escrito por: Thomas Ludwig.
acc = Param ("Factor de aceleração", 0,1, 0,01, 0,1, 0,01);
acc = Optimize ("Factor de aceleração", acc, 0.01, 0.1, 0.01);
af_start = Param ("Valor inicial de AF", 0,03, 0,01, 0,1, 0,01);
af_start = Otimizar ("Valor inicial de AF", af_start, 0.01, 0.1, 0.01);
af_max = Param ("Valor AF máximo", 0,06, 0,01, 0,1, 0,01);
af_max = Otimizar ("Valor AF máximo", af_max, 0.01, 0.1, 0.01);
Ct = Param ("Limite de cruzamento em%", 0, 0, 1, 0,1);
Ct = Otimizar ("Limite de cruzamento em%", Ct, 0, 1, 0.1);
MaxAF = af_max; // aceleração máxima.
psar = Fechar; // inicializar.
longo = 1; // assume longas condições iniciais.
af = af_start; // valor inicial do fator de aceleraão.
ep = Low [0]; // ponto extremo init.
para (i = 2; i & lt; BarCount; i ++)
psar [i] = psar [i-1] + af * (hp "psar [i-1]);
psar_temp [i] = psar [i] * (1-Ct1);
psar [i] = psar [i-1] + af * (lp & # 8211; psar [i-1]);
psar_temp [i] = psar [i] * (1 + Ct1);
// verifique a reversão.
se (Low [i] & lt; psar [i] * (1-Ct1))
longo = 0; reverso = 1; // posição reversa para curto.
psar [i] = hp; // SAR é ponto alto no comércio anterior.
psar_temp [i] = hp;
se (Alto [i] & gt; psar [i] * (1 + Ct1))
longo = 1; reverso = 1; // posição inversa para longo.
psar_temp [i] = lp;
se (High [i] & gt; hp)
se (af & gt; MaxAF) af = MaxAF;
se (Low [i & # 8211; 1] & lt; psar [i]) psar [i] = Low [i & # 8211; 1];
se (Low [i & # 8211; 2] & lt; psar [i]) psar [i] = Low [i & # 8211; 2];
se (af & gt; MaxAF) af = MaxAF;
se (Alto [i & # 8211; 1] & gt; psar [i]) psar [i] = Alto [i & # 8211; 1];
se (High [i & # 8211; 2] & gt; psar [i]) psar [i] = High [i & # 8211; 2];
Lote (psar, _DEFAULT_NAME (), ParamColor (& quot; Color & quot ;, colorRed), styleDots | styleNoLine | styleThick);
Lote (psar_temp, _DEFAULT_NAME (), ParamColor (& quot; Cor & quot ;, colorRed), styleDots | styleNoLine | styleThick);
intervalo = Param ("Período ADX", 13, 12, 25, 1);
range = Optimize (& quot; ADX Period ?, range, 20, 25, 1);
MYADXFactor = Param ("factor ADX", 15, 12, 20, 1);
// MYADXFactor = Otimizar ("Factor ADX", MYADXFactor, 15, 20, 1);
Buy = Cross (Open, psar_temp) E MYADX & gt; MYADXFactor;
Short = Cross (psar_temp, Open) E MYADX & gt; MYADXFactor;
Sell = Cross (psar_temp, Open);
Cover = Cross (Open, psar_temp);
BuyPrice = ValueWhen (Buy, Close);
ShortPrice = ValueWhen (Short, Close);
CoverPrice = ValueWhen (Cover, Close);
SellPrice = ValueWhen (Sell, Close);
PlotText (& quot; \ nCover short: & quot; + CoverPrice [i], i + 1.5, L [i] - dist [i] -3, colorLime);
PlotText (& quot; \ n \ nProfit: & quot; + (ShortPrice [i] - CoverPrice [i]), i + 1.5, L [i] - dist [i] -3, colorLime);
PlotText (& quot; \ nSell comprou: & quot; + SellPrice [i], i + 1.5, H [i] + dist [i] +5, colorOrange);
PlotText (& quot; \ n \ nProfit: & quot; + (SellPrice [i] - BuyPrice [i]), i + 1.5, H [i] + dist [i] +5, colorOrange);
PlotText (& quot; Buy: & quot; + BuyPrice [i], i + 1.5, L [i] - dist [i] -3, colorLime);
PlotText (& quot; Short: & quot; + ShortPrice [i], i + 1.5, H [i] + dist [i] +5, colorOrange);
PlotShapes (Comprar * shapeUpArrow, colorGreen, 0, Baixo, -28);
PlotShapes (curto * shapeDownArrow, colorRed, 0, High, -28);
PlotShapes (Cover * shapeHollowUpArrow, colorGreen, 0, Low, -45);
PlotShapes (Sell * shapeHollowDownArrow, colorRed, 0, High, -45);
printf (& quot; \ nSignal veio & quot; + IIf (BarsSince (Short) & gt; BarsSince (Buy), BarsSince (Buy), BarsSince (Short)) + & quot; barras atrás & quot;);
WriteIf (BarsSince (Short) & gt; BarsSince (Buy), & quot; \ nBuy @ & quot; + BuyPrice, & quot; \ nShort @ & quot; + ShortPrice);
printf ("Trailing SL: & quot; + psar);
printf (& quot; \ nMax Profit: & quot; + IIf (BarsSince (Short) & gt; BarsSince (Buy), ((O + H + L + C) / 4-BuyPrice), (ShortPrice - (O + H + L + C) / 4)));
printf (& quot; \ nMin Profit: & quot; + IIf (BarsSince (Short) & gt; BarsSince (Buy), (psar-ShortPrice), (ShortPrice-psar)));
printf (& quot; \ n \ nLeta o lucro executado. & quot;);
printf (& quot; \ nFechar uma chamada somente quando trave SL atinge & quot;);
Quick Profit Trading System AFL para Amibroker.
O sistema de negociação de lucro rápido é um sistema de negociação completo em um gráfico de painel único no Amibroker. Dá bons sinais de venda de compra com níveis de tendência claros (Trailing Stoploss) e Targets. O melhor cronograma para este sistema é de 15 minutos. Nunca use esta AFL para Positional Trading, pois os indicadores e as fórmulas utilizadas na mesma são apenas para negociação intradiária.
Utilize o sistema de negociação de lucro rápido AFL apenas para negociação intradiária no MCX Commodity, NCDEX Agriculture Commodity, NSE Equity Cash Stocks, Nifty Future, Bank Nifty Future, Nifty Options, Most Active Stock Futures, Currency Futures & amp; Opções, etc.
_SECTION_BEGIN (& # 8220; Quick Profit Trading System & # 8221;);
SetBarFillColor (IIf (C & gt; O, ParamColor (& # 8220; Candle UP Color & # 8221 ;, colorGreen), IIf (C & lt; = O, ParamColor (& # 8220; Cor da vela e # 8221 ;, ColorRed), ColorLightGrey)) );
Plot (C, & # 8221; \ NPrice & # 8221 ;, IIf (C & gt; O, ParamColor (& # 8220; Wick UP Color & # 8221 ;, colorDarkGreen), IIf (C & lt; = O, ParamColor (& # 8220; Wick Down Color & # 8221 ;, colorDarkRed), colorLightGrey)), 64,0,0,0,0);
para (i = 1; i & lt; BarCount-1; i ++)
se (tendência [i-1] == -1) changeOfTrend = 1;
se (tendência [i-1] == 1) changeOfTrend = 1;
senão se (tendência [i-1] == 1)
se (changeOfTrend == 1)
se (changeOfTrend == 1)
Título = EncodeColor (colorWhite) + & # 8220; Sistema de negociação de lucro rápido & # 8221; + & # 8221; & # 8211; & # 8221; + Nome () + & # 8221; & # 8211; & # 8221; + EncodeColor (colorRed) + Interval (2) + EncodeColor (colorWhite) +
PlotShapes (IIf (Buy, shapeSquare, shapeNone), colorGreen, 0, L, Offset = -40);
PlotShapes (IIf (Buy, shapeSquare, shapeNone), colorLime, 0, L, Offset = -50);
PlotShapes (IIf (Comprar, shapeUpArrow, shapeNone), ColorWhite, 0, L, Offset = -45);
PlotShapes (IIf (Short, shapeSquare, shapeNone), colorRed, 0, H, Offset = 40);
PlotShapes (IIf (Short, shapeSquare, shapeNone), colorOrange, 0, H, Offset = 50);
PlotShapes (IIf (Short, shapeDownArrow, shapeNone), colorWhite, 0, H, Offset = -45);
tar1 = entrada + (entrada * .0050);
tar2 = entrada + (entrada * .0092);
tar3 = entrada + (entrada * .0179);
tar1 = entrada & # 8211; (entrada * .0050);
tar2 = entrada & # 8211; (entrada * .0112);
tar3 = entrada & # 8211; (entrada * .0212);
Clr = IIf (sig == & # 8220; BUY & # 8221 ;, colorLime, colorRed);
ssl = IIf (barras == BarCount-1, TrendSL [BarCount-1], Ref (TrendSL, -1));
Plot (LineArray (barras-Offset, tar1, BarCount, tar1,1), & # 8220; & # 8221 ;, Clr, styleLine | styleDots, Null, Null, Offset);
Lote (LineArray (barras-Offset, tar2, BarCount, tar2,1), & # 8220; & # 8221 ;, Clr, styleLine | styleDots, Null, Null, Offset);
Lote (LineArray (barras-Offset, tar3, BarCount, tar3,1), & # 8220; & # 8221 ;, Clr, styleLine | styleDots, Null, Null, Offset);
messageboard = ParamToggle (& # 8220; Message Board & # 8221 ;, & # 8221; Mostrar | Ocultar & # 8221 ;, 1);
se (messageboard == 1)
GfxSelectFont (& # 8220; Tahoma & # 8221 ;, 13, 100);
pxHeight = Status (& # 8220; pxchartheight & # 8221;);
GfxSelectPen (colorGreen, 1);
GfxRoundRect (x, y & # 8211; 98, x2, y, 7, 7);
GfxTextOut ((& # 8220; Quick Profit Trading System & # 8221;), 13, y-100);
GfxTextOut ((& # 8220; Last & # 8221; + sig + & # 8221; Sinal veio & # 8221; + (BarCount-bars-1) * Intervalo () / 60 + & # 8221; minutos atrás & # 8221;) , 13, y-80); // A localização do formato de texto.
GfxTextOut ((& # 8220; Current P / L: & # 8221; + WriteVal (IIf (sig == & # 8220; BUY & # 8221;, (C-entry), (entrada-C)), 2,2)), 13, y-22) ;;
GfxSelectFont (& # 8220; Times New Roman & # 8221 ;, FS, 700, True);
GfxSelectFont (& # 8220; Times New Roman & # 8221 ;, 11, 700, True);
Segundos = int (Tempo% 100);
Minutos = int (Tempo / 100% 100);
Horas = int (Tempo / 10000% 100);
SecondNum = int (Horas * 60 * 60 + Minutos * 60 + Segundos);
Newperiod = SecNumber% TimeFrame == 0;
SecsLeft = SecNumber & # 8211; int (SecNumber / TimeFrame) * TimeFrame;
SecsToGo = TimeFrame & # 8211; SecsLeft;
GfxSelectSolidBrush (ColorRGB (230, 230, 230));
GfxSelectPen (ColorRGB (230, 230, 230), 2);
GfxSelectPen (colorYellow, 2);
GfxSelectFont (& # 8220; Arial & # 8221 ;, 14, 700, False);
KPL Swing (sistema de negociação breakout)
O indicador KPLSwing é uma tendência simples no sistema de troca mecânica que automatiza a entrada e a saída.
O sistema de negociação é extremamente simples e fácil de usar e remove as emoções da negociação.
A lógica de negociação ou de investimento é simples. Compre por perto acima de 20 dias de alta e venda em perto abaixo de 20 dias de baixa.
Nenhum alvo é dado porque os lucros são desconhecidos e é o que o mercado oferece. As perdas são limitadas através do dimensionamento da posição.
Aviso: este indicador funciona melhor com índices e estoques altamente líquidos. Não é recomendado para estoques com baixa liquidez (para esse assunto, qualquer indicador).
Lógica / conceito básico.
Quando algum estoque tem que se reunir, ele precisa cruzar alguns níveis. Isso pode ser a resistência anterior, as feiras da semana passada ou mês, etc. Aqui eu escolhi 20 dias de altura como nível de referência. Por que 20 dias? Porque há 20 dias de negociação em um mês.
Você pode, naturalmente, escolher algum outro número como 30 ou 55 etc. O conceito permanece o mesmo.
Agora, o resultado de qualquer comércio é aleatório, então qualquer comércio tem 50% de chance de sucesso. Isso é verdade para qualquer sistema e estatisticamente falando, em uma grande quantidade de negócios (um milhão?), O sucesso virará para 50%.
Pela mesma lógica, cuidado com qualquer sistema ou analista que reivindique uma taxa de sucesso excepcionalmente alta!
Então, como o dinheiro é feito?
Primeiro você precisa entender por que as pessoas perdem dinheiro. Existem apenas 2 razões (a) negociação para além da capacidade de uma pessoa e (b) ocupação de posições de perda por muito tempo enquanto "reserva de lucros" com urgência nas posições vencedoras.
Dito de outra forma, para ganhar dinheiro, você precisa (a) limitar a perda máxima em qualquer comércio para menos de 1% do seu capital de negociação e (b) seguir estrondos rigorosos e obter lucros onde o comércio é a seu favor.
Se você não pode fazer o acima, então melhorará fazer outra coisa na vida.
Sobre whipsaws.
Todos os indicadores fornecem whipsaws e o indicador KPLSwing não é exceção. Mas é fácil saber quando um sinal é susceptível de gerar um whipsaw.
O primeiro aviso será onde o estoque está sendo negociado em um pequeno intervalo por um longo período de tempo. Aqui é possível obter um sinal de compra hoje seguido por um sinal de venda nos próximos dias.
O segundo é onde um sinal de compra é gerado perto de uma resistência conhecida / significativa.
Ditto para o lado da venda.
Agora o indicador em ação - mesmo estoque, gráficos diferentes. 4-5 anos.
Instalando o indicador:
Você deve ter o Amibroker instalado no seu PC. Se você não tiver isso, baixe uma versão de avaliação da Amibroker. Baixe o arquivo de fórmula (clique direito com o mouse) kpl_swing. afl e salve em C: / Arquivos de programas / Amibroker / Fórmulas / pasta personalizada. Salve o arquivo com o nome kpl_swing. afl Inicie o Amibroker e clique em Exibir / Gráficos. Abra a pasta personalizada e você deve ver o arquivo indicador "kpl_swing". Arraste e solte o indicador no painel de preço / gráfico / janela.
Comércio de entrada: Inicie um comércio longo quando o indicador gera um sinal de COMPRA (seta). Comércio de saída se o estoque perca 10% em um dia ou quebra suporte ou indicador recente gera uma venda. Você pode usar o mesmo código no modo Scanner para gerar sinais Buy / Sell.
Estraga e estratégia de saída (entrega):
O indicador kplswing não tem alvo porque você nunca pode saber com certeza se um estoque dará retorno de 100, 200 ou 500% em um ano. Mas, mantendo-se no comércio o maior tempo possível, você melhora as possibilidades de capturar uma porcentagem significativa do grande movimento.
Inicialização inicial: Min 10% do preço de entrada ou recente balanço baixo (posições longas) ou baixa de barra de sinal (apertado, pode levar a whipsaws).
Sair se o estoque se fechar abaixo da inicialização inicial (nível de entrada) ou o estoque perca mais de 10% das alturas mais recentes (posições longas) ou. O indicador dá uma venda.
Se você não tem Amibroker:
Vire qualquer um desses sites. Por exemplo. ChartINK - Icharts - Exibição de negociação Considere o mês anterior de alta / baixa como níveis de tomada de decisão. Compre perto do topo do mês anterior. O dimensionamento da posição irá cuidar do risco.
Gerenciamento de risco / dimensionamento de posição - Quanto quantidade para comprar?
Este é o aspecto mais negligenciado da negociação e a razão pela qual a maioria das pessoas perde dinheiro regularmente.
No mercado de ações, todo mundo gosta de saber quanto dinheiro pode fazer. Ninguém pergunta o quanto eles podem perder.
Então, faz sentido que você prefira sua perda - isso ajudará a gerenciar um comércio. Não importa se seus negócios estão errados.
A metade das suas negociações são obrigadas a falhar (estatisticamente falando), então, seguir esta regra simples limitará automaticamente as perdas e ajudará você a permanecer no mercado.
Se você não pode quantificar a perda antes de negociar, fique longe dos mercados de ações e faça outra coisa.
O dimensionamento da posição responde a pergunta: quanto quantidade você deve negociar.
Quantidade a comprar = (1% do capital de negociação) / (Preço de compra - Stoploss).
Por exemplo. Assuma um capital de negociação inicial de Rs.100.000 / - e um risco por comércio de 1% ou Rs.1.000 / -. Você quer comprar uma negociação de ações em Rs.100 / - com um Rs90 de Stoploss.
A quantidade que você deve comprar é 1000 / (100-90) = 100 ações. Você está investindo Rs.10.000 / - e se seu stoploss for atingido, sua perda máxima será de Rs.1.000 / -.
Vamos assumir que o seu stoploss é atingido.
Agora você fica com Rs.99,000 / - e para o próximo comércio, sua perda por comércio é Rs.990 / -.
No exemplo acima, digamos que o stoploss é Rs.95. A quantidade que você deve comprar é 990 / (100-95) = 180 ações. Agora você está investindo Rs.18.000 / - e se seu stoploss for atingido, sua perda máxima ainda é Rs.990 / -.
A capital para o próximo comércio é 99,000-990 = 98,010 / -. Note-se que o seu capital está a reduzir, mas a taxa de redução também irá diminuir.
É óbvio que este exercício simples assegurará que você ainda fique no jogo e tenha uma boa chance de um comércio lucrativo.
A solução final de gerenciamento de portfólios.
WiseTrader Toolbox.
Swing Trading System para Amibroker (AFL)
Fórmula muito simples, mas bons resultados.
Compre acima High e Sell below Low.
A linha verde é Trailing Stop loss line.
Capturas de tela.
Indicadores / fórmulas semelhantes.
Indicador / Fórmula.
5 comentários.
sim, é simples, mas sim, muito, obrigado por compartilhar.
Estou confuso por que você COMPRA acima do Alto e Venda abaixo do Baixo ??
Esta fórmula parece realmente boa, mas a questão é o que se entende em alto e baixo?
Eu acho que comprar / vender deve ser feito após a aparição da seta relevante.
Verifique os crossovers, a linha vermelha está no topo = o mercado é otimista, a linha vermelha está na parte inferior = o mercado está em baixa.
(Estou confuso por que você COMPRA acima High e Sell below Low ??)
Sistema de negociação MySAR ADX para Amibroker (AFL)
O sistema de negociação MySAR ADX para Amibroker (AFL) Parabolic Stop and Reversal, também conhecido como Parabolic SAR, é uma estratégia que usa um método de parada e reversão para determinar o que ajuda os comerciantes a entrar em boa saída. J. A Parabólica Stop and Reversal de Welles Wilder é um estudo simples para uso. O estudo calcula continuamente os pontos de preço "parar e inverter". Sempre que a análise técnica do mercado de ações e valores mobiliários, o Parabolic SAR (Parabolic Stop and Reverse) é um método elaborado por J. Welles Wilder, Jr.,
Ele parece ser mais lucrativo. Acho que o truque é aproveitar a tendência. sempre haverá redução. O foco deve ser dado à tendência.
A minha recomendação é adicionar muito durante a tendência de maximizar os lucros. A coisa boa sobre o indicador é que ele irá tirar você de um comércio perdedor sem perda maciça. Então, se o sistema é globalmente lucrativo, então podemos nos importar menos com os whipsaws. Whipsaw é um prelúdio para lucrar. Uma maneira que eu forneci o gráfico e circulou quando muito deveria ser adicionado. Observe quando a linha vai para baixo, por causa de uma ruptura de preço. Devemos aproveitar o movimento de preços. Em seguida, venda quando obtemos o sinal de inversão. Se isso pode ser codificado, isso seria incrível. Este indicador de SAR é impressionante, pois sou adepto da tendência e nada mais.
Este é um sistema de negociação completo usando uma SAR personalizada projetada por Thomas Ludwig e ADX para filtrar sinais falsos. Ele rastreia o movimento dos preços e segue a tendência.
// Nome da Fórmula: MySar ADX System.
// Autor / Uploader: Abhishek Gupta.
// Data / hora adicionada: 2017-mar-09.
// Bandeiras: estratégia de negociação.
// Este é um sistema de negociação completo usando um SAR personalizado projetado.
// por Thomas Ludwig e ADX para filtrar sinais falsos.
// Rastreia o movimento dos preços e segue a tendência.
// Usa PSAR xo por Thomas Ludwig.
// Escrito por: Abhishek Gupta.
Plot (C, "Close", ParamColor ("Color", colorDefault), styleNoTitle | ParamStyle (& quot; Style & quot;) | GetPriceStyle ());
// Nome da Fórmula: ParabXO.
// Autor / Uploader: Thomas Ludwig.
// Data / hora adicionada: 2005-03-21 15:19:39.
// URL da Fórmula: amibroker / library / formula. php? Id = 448.
// Detalhes URL: amibroker / library / detail. php? Id = 448.
// Este é um aprimoramento do famoso indicador Parabolic SAR por Welles.
// Mais selvagem. Para mais detalhes, veja as observações abaixo.
// ParabXO implementado na AFL.
// O código abaixo depende muito do código AFL para o.
// Parabolic SAR de Tomasz Janeczko na biblioteca AB.
// Aplicação: Drag & amp; Solta.
// Além de fazer o Accelerator Factor e seu máximo.
// valor variável através da função Param (), fiz 2 melhorias.
// por uma simples codificação adicional que foi introduzida por.
// Dennis Meyers em um artigo na edição S & C C / 4/1995:
// 1. O valor de início do AF pode ser configurado de forma independente; assim você.
// pode fazer o indicador reagir consideravelmente mais rapidamente.
// 2. O ParabXO não avança a menos que seja penetrado.
// por uma quantidade especificada (denominada "Limite de cruzamento em%" abaixo)
//, impedindo assim muitas whipsaws. Pode ser definido como 0 se.
// você não quer usar esta modificação. Por favor, note isso.
// em Meyers & # 8217; artigo ele usou um número absoluto enquanto que a.
// percentagem faz mais sentido na minha humilde opinião.
// Escrito por: Thomas Ludwig.
acc = Param ("Factor de aceleração", 0,1, 0,01, 0,1, 0,01);
acc = Optimize ("Factor de aceleração", acc, 0.01, 0.1, 0.01);
af_start = Param ("Valor inicial de AF", 0,03, 0,01, 0,1, 0,01);
af_start = Otimizar ("Valor inicial de AF", af_start, 0.01, 0.1, 0.01);
af_max = Param ("Valor AF máximo", 0,06, 0,01, 0,1, 0,01);
af_max = Otimizar ("Valor AF máximo", af_max, 0.01, 0.1, 0.01);
Ct = Param ("Limite de cruzamento em%", 0, 0, 1, 0,1);
Ct = Otimizar ("Limite de cruzamento em%", Ct, 0, 1, 0.1);
MaxAF = af_max; // aceleração máxima.
psar = Fechar; // inicializar.
longo = 1; // assume longas condições iniciais.
af = af_start; // valor inicial do fator de aceleraão.
ep = Low [0]; // ponto extremo init.
para (i = 2; i & lt; BarCount; i ++)
psar [i] = psar [i-1] + af * (hp "psar [i-1]);
psar_temp [i] = psar [i] * (1-Ct1);
psar [i] = psar [i-1] + af * (lp & # 8211; psar [i-1]);
psar_temp [i] = psar [i] * (1 + Ct1);
// verifique a reversão.
se (Low [i] & lt; psar [i] * (1-Ct1))
longo = 0; reverso = 1; // posição reversa para curto.
psar [i] = hp; // SAR é ponto alto no comércio anterior.
psar_temp [i] = hp;
se (Alto [i] & gt; psar [i] * (1 + Ct1))
longo = 1; reverso = 1; // posição inversa para longo.
psar_temp [i] = lp;
se (High [i] & gt; hp)
se (af & gt; MaxAF) af = MaxAF;
se (Low [i & # 8211; 1] & lt; psar [i]) psar [i] = Low [i & # 8211; 1];
se (Low [i & # 8211; 2] & lt; psar [i]) psar [i] = Low [i & # 8211; 2];
se (af & gt; MaxAF) af = MaxAF;
se (Alto [i & # 8211; 1] & gt; psar [i]) psar [i] = Alto [i & # 8211; 1];
se (High [i & # 8211; 2] & gt; psar [i]) psar [i] = High [i & # 8211; 2];
Lote (psar, _DEFAULT_NAME (), ParamColor (& quot; Color & quot ;, colorRed), styleDots | styleNoLine | styleThick);
Lote (psar_temp, _DEFAULT_NAME (), ParamColor (& quot; Cor & quot ;, colorRed), styleDots | styleNoLine | styleThick);
intervalo = Param ("Período ADX", 13, 12, 25, 1);
range = Optimize (& quot; ADX Period ?, range, 20, 25, 1);
MYADXFactor = Param ("factor ADX", 15, 12, 20, 1);
// MYADXFactor = Otimizar ("Factor ADX", MYADXFactor, 15, 20, 1);
Buy = Cross (Open, psar_temp) E MYADX & gt; MYADXFactor;
Short = Cross (psar_temp, Open) E MYADX & gt; MYADXFactor;
Sell = Cross (psar_temp, Open);
Cover = Cross (Open, psar_temp);
BuyPrice = ValueWhen (Buy, Close);
ShortPrice = ValueWhen (Short, Close);
CoverPrice = ValueWhen (Cover, Close);
SellPrice = ValueWhen (Sell, Close);
PlotText (& quot; \ nCover short: & quot; + CoverPrice [i], i + 1.5, L [i] - dist [i] -3, colorLime);
PlotText (& quot; \ n \ nProfit: & quot; + (ShortPrice [i] - CoverPrice [i]), i + 1.5, L [i] - dist [i] -3, colorLime);
PlotText (& quot; \ nSell comprou: & quot; + SellPrice [i], i + 1.5, H [i] + dist [i] +5, colorOrange);
PlotText (& quot; \ n \ nProfit: & quot; + (SellPrice [i] - BuyPrice [i]), i + 1.5, H [i] + dist [i] +5, colorOrange);
PlotText (& quot; Buy: & quot; + BuyPrice [i], i + 1.5, L [i] - dist [i] -3, colorLime);
PlotText (& quot; Short: & quot; + ShortPrice [i], i + 1.5, H [i] + dist [i] +5, colorOrange);
PlotShapes (Comprar * shapeUpArrow, colorGreen, 0, Baixo, -28);
PlotShapes (curto * shapeDownArrow, colorRed, 0, High, -28);
PlotShapes (Cover * shapeHollowUpArrow, colorGreen, 0, Low, -45);
PlotShapes (Sell * shapeHollowDownArrow, colorRed, 0, High, -45);
printf (& quot; \ nSignal veio & quot; + IIf (BarsSince (Short) & gt; BarsSince (Buy), BarsSince (Buy), BarsSince (Short)) + & quot; barras atrás & quot;);
WriteIf (BarsSince (Short) & gt; BarsSince (Buy), & quot; \ nBuy @ & quot; + BuyPrice, & quot; \ nShort @ & quot; + ShortPrice);
printf ("Trailing SL: & quot; + psar);
printf (& quot; \ nMax Profit: & quot; + IIf (BarsSince (Short) & gt; BarsSince (Buy), ((O + H + L + C) / 4-BuyPrice), (ShortPrice - (O + H + L + C) / 4)));
printf (& quot; \ nMin Profit: & quot; + IIf (BarsSince (Short) & gt; BarsSince (Buy), (psar-ShortPrice), (ShortPrice-psar)));
printf (& quot; \ n \ nLeta o lucro executado. & quot;);
printf (& quot; \ nFechar uma chamada somente quando trave SL atinge & quot;);
Quick Profit Trading System AFL para Amibroker.
O sistema de negociação de lucro rápido é um sistema de negociação completo em um gráfico de painel único no Amibroker. Dá bons sinais de venda de compra com níveis de tendência claros (Trailing Stoploss) e Targets. O melhor cronograma para este sistema é de 15 minutos. Nunca use esta AFL para Positional Trading, pois os indicadores e as fórmulas utilizadas na mesma são apenas para negociação intradiária.
Utilize o sistema de negociação de lucro rápido AFL apenas para negociação intradiária no MCX Commodity, NCDEX Agriculture Commodity, NSE Equity Cash Stocks, Nifty Future, Bank Nifty Future, Nifty Options, Most Active Stock Futures, Currency Futures & amp; Opções, etc.
_SECTION_BEGIN (& # 8220; Quick Profit Trading System & # 8221;);
SetBarFillColor (IIf (C & gt; O, ParamColor (& # 8220; Candle UP Color & # 8221 ;, colorGreen), IIf (C & lt; = O, ParamColor (& # 8220; Cor da vela e # 8221 ;, ColorRed), ColorLightGrey)) );
Plot (C, & # 8221; \ NPrice & # 8221 ;, IIf (C & gt; O, ParamColor (& # 8220; Wick UP Color & # 8221 ;, colorDarkGreen), IIf (C & lt; = O, ParamColor (& # 8220; Wick Down Color & # 8221 ;, colorDarkRed), colorLightGrey)), 64,0,0,0,0);
para (i = 1; i & lt; BarCount-1; i ++)
se (tendência [i-1] == -1) changeOfTrend = 1;
se (tendência [i-1] == 1) changeOfTrend = 1;
senão se (tendência [i-1] == 1)
se (changeOfTrend == 1)
se (changeOfTrend == 1)
Título = EncodeColor (colorWhite) + & # 8220; Sistema de negociação de lucro rápido & # 8221; + & # 8221; & # 8211; & # 8221; + Nome () + & # 8221; & # 8211; & # 8221; + EncodeColor (colorRed) + Interval (2) + EncodeColor (colorWhite) +
PlotShapes (IIf (Buy, shapeSquare, shapeNone), colorGreen, 0, L, Offset = -40);
PlotShapes (IIf (Buy, shapeSquare, shapeNone), colorLime, 0, L, Offset = -50);
PlotShapes (IIf (Comprar, shapeUpArrow, shapeNone), ColorWhite, 0, L, Offset = -45);
PlotShapes (IIf (Short, shapeSquare, shapeNone), colorRed, 0, H, Offset = 40);
PlotShapes (IIf (Short, shapeSquare, shapeNone), colorOrange, 0, H, Offset = 50);
PlotShapes (IIf (Short, shapeDownArrow, shapeNone), colorWhite, 0, H, Offset = -45);
tar1 = entrada + (entrada * .0050);
tar2 = entrada + (entrada * .0092);
tar3 = entrada + (entrada * .0179);
tar1 = entrada & # 8211; (entrada * .0050);
tar2 = entrada & # 8211; (entrada * .0112);
tar3 = entrada & # 8211; (entrada * .0212);
Clr = IIf (sig == & # 8220; BUY & # 8221 ;, colorLime, colorRed);
ssl = IIf (barras == BarCount-1, TrendSL [BarCount-1], Ref (TrendSL, -1));
Plot (LineArray (barras-Offset, tar1, BarCount, tar1,1), & # 8220; & # 8221 ;, Clr, styleLine | styleDots, Null, Null, Offset);
Lote (LineArray (barras-Offset, tar2, BarCount, tar2,1), & # 8220; & # 8221 ;, Clr, styleLine | styleDots, Null, Null, Offset);
Lote (LineArray (barras-Offset, tar3, BarCount, tar3,1), & # 8220; & # 8221 ;, Clr, styleLine | styleDots, Null, Null, Offset);
messageboard = ParamToggle (& # 8220; Message Board & # 8221 ;, & # 8221; Mostrar | Ocultar & # 8221 ;, 1);
se (messageboard == 1)
GfxSelectFont (& # 8220; Tahoma & # 8221 ;, 13, 100);
pxHeight = Status (& # 8220; pxchartheight & # 8221;);
GfxSelectPen (colorGreen, 1);
GfxRoundRect (x, y & # 8211; 98, x2, y, 7, 7);
GfxTextOut ((& # 8220; Quick Profit Trading System & # 8221;), 13, y-100);
GfxTextOut ((& # 8220; Last & # 8221; + sig + & # 8221; Sinal veio & # 8221; + (BarCount-bars-1) * Intervalo () / 60 + & # 8221; minutos atrás & # 8221;) , 13, y-80); // A localização do formato de texto.
GfxTextOut ((& # 8220; Current P / L: & # 8221; + WriteVal (IIf (sig == & # 8220; BUY & # 8221;, (C-entry), (entrada-C)), 2,2)), 13, y-22) ;;
GfxSelectFont (& # 8220; Times New Roman & # 8221 ;, FS, 700, True);
GfxSelectFont (& # 8220; Times New Roman & # 8221 ;, 11, 700, True);
Segundos = int (Tempo% 100);
Minutos = int (Tempo / 100% 100);
Horas = int (Tempo / 10000% 100);
SecondNum = int (Horas * 60 * 60 + Minutos * 60 + Segundos);
Newperiod = SecNumber% TimeFrame == 0;
SecsLeft = SecNumber & # 8211; int (SecNumber / TimeFrame) * TimeFrame;
SecsToGo = TimeFrame & # 8211; SecsLeft;
GfxSelectSolidBrush (ColorRGB (230, 230, 230));
GfxSelectPen (ColorRGB (230, 230, 230), 2);
GfxSelectPen (colorYellow, 2);
GfxSelectFont (& # 8220; Arial & # 8221 ;, 14, 700, False);
KPL Swing (sistema de negociação breakout)
O indicador KPLSwing é uma tendência simples no sistema de troca mecânica que automatiza a entrada e a saída.
O sistema de negociação é extremamente simples e fácil de usar e remove as emoções da negociação.
A lógica de negociação ou de investimento é simples. Compre por perto acima de 20 dias de alta e venda em perto abaixo de 20 dias de baixa.
Nenhum alvo é dado porque os lucros são desconhecidos e é o que o mercado oferece. As perdas são limitadas através do dimensionamento da posição.
Aviso: este indicador funciona melhor com índices e estoques altamente líquidos. Não é recomendado para estoques com baixa liquidez (para esse assunto, qualquer indicador).
Lógica / conceito básico.
Quando algum estoque tem que se reunir, ele precisa cruzar alguns níveis. Isso pode ser a resistência anterior, as feiras da semana passada ou mês, etc. Aqui eu escolhi 20 dias de altura como nível de referência. Por que 20 dias? Porque há 20 dias de negociação em um mês.
Você pode, naturalmente, escolher algum outro número como 30 ou 55 etc. O conceito permanece o mesmo.
Agora, o resultado de qualquer comércio é aleatório, então qualquer comércio tem 50% de chance de sucesso. Isso é verdade para qualquer sistema e estatisticamente falando, em uma grande quantidade de negócios (um milhão?), O sucesso virará para 50%.
Pela mesma lógica, cuidado com qualquer sistema ou analista que reivindique uma taxa de sucesso excepcionalmente alta!
Então, como o dinheiro é feito?
Primeiro você precisa entender por que as pessoas perdem dinheiro. Existem apenas 2 razões (a) negociação para além da capacidade de uma pessoa e (b) ocupação de posições de perda por muito tempo enquanto "reserva de lucros" com urgência nas posições vencedoras.
Dito de outra forma, para ganhar dinheiro, você precisa (a) limitar a perda máxima em qualquer comércio para menos de 1% do seu capital de negociação e (b) seguir estrondos rigorosos e obter lucros onde o comércio é a seu favor.
Se você não pode fazer o acima, então melhorará fazer outra coisa na vida.
Sobre whipsaws.
Todos os indicadores fornecem whipsaws e o indicador KPLSwing não é exceção. Mas é fácil saber quando um sinal é susceptível de gerar um whipsaw.
O primeiro aviso será onde o estoque está sendo negociado em um pequeno intervalo por um longo período de tempo. Aqui é possível obter um sinal de compra hoje seguido por um sinal de venda nos próximos dias.
O segundo é onde um sinal de compra é gerado perto de uma resistência conhecida / significativa.
Ditto para o lado da venda.
Agora o indicador em ação - mesmo estoque, gráficos diferentes. 4-5 anos.
Instalando o indicador:
Você deve ter o Amibroker instalado no seu PC. Se você não tiver isso, baixe uma versão de avaliação da Amibroker. Baixe o arquivo de fórmula (clique direito com o mouse) kpl_swing. afl e salve em C: / Arquivos de programas / Amibroker / Fórmulas / pasta personalizada. Salve o arquivo com o nome kpl_swing. afl Inicie o Amibroker e clique em Exibir / Gráficos. Abra a pasta personalizada e você deve ver o arquivo indicador "kpl_swing". Arraste e solte o indicador no painel de preço / gráfico / janela.
Comércio de entrada: Inicie um comércio longo quando o indicador gera um sinal de COMPRA (seta). Comércio de saída se o estoque perca 10% em um dia ou quebra suporte ou indicador recente gera uma venda. Você pode usar o mesmo código no modo Scanner para gerar sinais Buy / Sell.
Estraga e estratégia de saída (entrega):
O indicador kplswing não tem alvo porque você nunca pode saber com certeza se um estoque dará retorno de 100, 200 ou 500% em um ano. Mas, mantendo-se no comércio o maior tempo possível, você melhora as possibilidades de capturar uma porcentagem significativa do grande movimento.
Inicialização inicial: Min 10% do preço de entrada ou recente balanço baixo (posições longas) ou baixa de barra de sinal (apertado, pode levar a whipsaws).
Sair se o estoque se fechar abaixo da inicialização inicial (nível de entrada) ou o estoque perca mais de 10% das alturas mais recentes (posições longas) ou. O indicador dá uma venda.
Se você não tem Amibroker:
Vire qualquer um desses sites. Por exemplo. ChartINK - Icharts - Exibição de negociação Considere o mês anterior de alta / baixa como níveis de tomada de decisão. Compre perto do topo do mês anterior. O dimensionamento da posição irá cuidar do risco.
Gerenciamento de risco / dimensionamento de posição - Quanto quantidade para comprar?
Este é o aspecto mais negligenciado da negociação e a razão pela qual a maioria das pessoas perde dinheiro regularmente.
No mercado de ações, todo mundo gosta de saber quanto dinheiro pode fazer. Ninguém pergunta o quanto eles podem perder.
Então, faz sentido que você prefira sua perda - isso ajudará a gerenciar um comércio. Não importa se seus negócios estão errados.
A metade das suas negociações são obrigadas a falhar (estatisticamente falando), então, seguir esta regra simples limitará automaticamente as perdas e ajudará você a permanecer no mercado.
Se você não pode quantificar a perda antes de negociar, fique longe dos mercados de ações e faça outra coisa.
O dimensionamento da posição responde a pergunta: quanto quantidade você deve negociar.
Quantidade a comprar = (1% do capital de negociação) / (Preço de compra - Stoploss).
Por exemplo. Assuma um capital de negociação inicial de Rs.100.000 / - e um risco por comércio de 1% ou Rs.1.000 / -. Você quer comprar uma negociação de ações em Rs.100 / - com um Rs90 de Stoploss.
A quantidade que você deve comprar é 1000 / (100-90) = 100 ações. Você está investindo Rs.10.000 / - e se seu stoploss for atingido, sua perda máxima será de Rs.1.000 / -.
Vamos assumir que o seu stoploss é atingido.
Agora você fica com Rs.99,000 / - e para o próximo comércio, sua perda por comércio é Rs.990 / -.
No exemplo acima, digamos que o stoploss é Rs.95. A quantidade que você deve comprar é 990 / (100-95) = 180 ações. Agora você está investindo Rs.18.000 / - e se seu stoploss for atingido, sua perda máxima ainda é Rs.990 / -.
A capital para o próximo comércio é 99,000-990 = 98,010 / -. Note-se que o seu capital está a reduzir, mas a taxa de redução também irá diminuir.
É óbvio que este exercício simples assegurará que você ainda fique no jogo e tenha uma boa chance de um comércio lucrativo.
No comments:
Post a Comment