Fig 1. Open price array Qualquer outra matriz é calculada a partir desses 6 arrays usando fórmulas incorporadas em AFL. Esses arrays não são armazenados no banco de dados, mas são calculados quando necessário. Cada valor individual em uma matriz tem uma data associada a ele. Se você tiver a opção da ponta da ferramenta ativada (Preferências - Gt Guia Diversos - Dicas de ferramentas de dados de preços), quando você move o cursor sobre a vela em um gráfico diário de velas, aparece um pequeno retângulo amarelo. A AFL lança os valores de volume aberto, baixo, alto, fechado na matriz apropriada e os exibe dentro da ponta da ferramenta. Arrays de processamento - por que AFL é tão rápido Vejamos como a seguinte declaração é processada: MyVariable (High Low) 2 Quando AFL está avaliando uma declaração como essa (High Low) 2, não precisa re-interpretar este código para cada barra. Em vez disso, leva o High ARRAY e Low ARRAY e adiciona elementos de matriz correspondentes em um único estágio. Em outras palavras, o operador (e outros operadores também) trabalham em arrays ao mesmo tempo e são executados com velocidade de código compilado, então a matriz resultante (cada elemento dele) é dividida por 2 também em estágio único. Vamos ver os detalhes - veja fig 2. Quando o motor AFL ver o (alto baixo) 2 primeiro eleva arrays High (1) e Low (2) e produz (em passo compilado único) a matriz temporária (3). Em seguida, ele cria a matriz final (4) dividindo cada elemento de matriz temporária por dois. Este resultado é atribuído ao meuVariable Fig 2. Etapas AFL ao processar (High Low) 2 Médias móveis, declarações condicionais Vamos considerar agora o seguinte código: Cond1 Close gt MA (Close, 3) Cond2 Volume gt Ref (Volume, -1) Comprar Cond1 AND Cond2 Sell High gt 1.30 Este código gera um sinal de compra quando o fechamento de hoje é maior do que a média móvel de 3 dias de fechamento. O volume de hoje é maior do que o volume de ontem. Ele também gera um sinal de venda quando a alta de hoje é superior a 1,30. Se no seu código AFL você precisa ver se o preço de fechamento é maior do que dizer, uma média móvel simples de 3 dias A AFL primeiro executará através da matriz fechada criando uma nova matriz chamada MA (fechar, 3) para o símbolo que está sendo analisado. Cada célula da nova matriz pode então ser comparada uma para uma na matriz próxima. No exemplo, uma matriz chamada Cond1 é criada dessa maneira. Para cada célula onde o preço de fechamento é maior do que o valor da célula correspondente em MA (fechar, 3), o valor da célula para a nova disposição Cond1 é definido como 1. Se o preço de fechamento não for maior que o preço correspondente na matriz fechada, o valor Em Cond1 é definido como 0. O AFL também pode procurar para frente ou para trás uma série de células em uma matriz usando a função Ref (veja a linha 6 onde a matriz temporária é criada segurando o volume do dia anterior) Na linha 9, uma nova matriz chamada Cond2 foi criada Comparando o valor de cada célula na matriz de volume com a configuração da célula anterior, o valor da célula Cond2 para 1 se for verdadeira e 0 se for falso. A linha 10 mostra uma matriz chamada Comprar criada comparando os valores da célula em Cond1 com os valores da célula em Cond2. Se a célula em Cond1 tiver um 1 E, então, a célula correspondente em Cond2 e a 1 é colocada na célula Comprar. A linha 11 mostra uma matriz chamada Vender criada sempre que o valor da célula na matriz fechada é maior do que 1,30. Obviamente, Buy and Sell são matrizes especiais cujos resultados podem ser exibidos na janela do Analisador ou na tela usando um valor vermelho ou verde conforme necessário. Ficando um pouco mais complexo Os exemplos acima foram muito simples. Agora vou explicar 3 coisas que parecem gerar alguma confusão entre os usuários: referenciando os valores selecionados (SelectedValue, BeginValue, EndValue, LastValue) Função IIF Função AMA Conforme escrito no Tutorial: Guia básico de gráficos, você pode selecionar qualquer citação do gráfico E você pode marcar o alcance From-To. A barra selecionada pela linha vertical é chamada de barra quotselected, enquanto as barras de início e final do intervalo são chamadas quotbeginquot e quotendquot bars. A AFL possui funções especiais que permitem referenciar o valor da matriz na barra selecionada, inicial e final, respectivamente. Essas funções são chamadas SelectedValue, BeginValue e EndValue. Existe uma função mais chamada LastValue que permite obter o valor da matriz na última barra. Essas quatro funções levam o elemento de matriz na barra dada e retornam SINGLE NUMBER representando o valor da matriz em determinado ponto. Isso permite calcular algumas estatísticas sobre os pontos selecionados. Por exemplo: EndValue (Close) - BeginValue (Close) Dá-lhe mudança de dólar entre os preços fechados em selecionados de-para o alcance. Quando o número recuperado por qualquer uma dessas funções é comparado a uma matriz ou a qualquer outra operação aritmética envolvendo número e a matriz é executada, ela funciona como o número abrangido por todos os elementos da matriz. Isto está ilustrado na tabela abaixo (linhas 2, 6, 7). A cor verde marca quotbeginquot bar e marcas de cores vermelhas quotendquot bar. A barra selecionada é marcada com azul. Agora, a função IIF (condição, truepart, falso). Isso funciona que retorna o valor do segundo argumento (truepart) ou terceiro (falso) dependendo da condição. Como você pode ver na tabela acima na linha 8, os valores vêm de Close array (truepart) para barras quando a condição é verdadeira (1) e vem da matriz aberta (falso) para as barras restantes. Nesse caso, a matriz retornada pela função IIF consiste em alguns valores de Fechar e alguns valores da matriz aberta. Observe que tanto a parte verdade quanto a falsa são matrizes e são avaliadas independentemente da condição (portanto, esta não é uma instrução IF-THEN-ELSE regular, mas a função que retorna matriz) A função AMA (matriz, fator) parece causar mais problemas com Entendendo isso. Mas na verdade é muito simples. Funciona de forma recursiva. Isso significa que ele usa seu valor anterior para o cálculo do valor atual. Ele processa a barra de matriz por barra, com cada etapa ela multiplica a célula dada do primeiro argumento (matriz) por determinada célula do segundo argumento (fator) e o adiciona ao valor anterior de AMA multiplicado por (1 fator). Vamos considerar a coluna 3. O valor de AMA na coluna 3 é dado pelo preço de multiplicação da coluna 3 (1,23) por fator (0,4). Do que adicionamos o valor anterior de AMA (1.0363) multiplicado por (1-factor 0,6). O resultado (arredondado para 4 lugares) é de 1,23 0,4 1,0363 0,6 1,1138. Se você olhar para os números na linha 12, você pode notar que esses valores se parecem com uma média móvel de fechamento. E isso é verdade. Nós realmente apresentamos como calcular a média móvel exponencial de período variável usando a função AMA. Com a versão 4.40, o AmiBroker traz a capacidade de iterar através de aspas usando para e while loops e adiciona if-else declaração de controle de fluxo. Esses aprimoramentos possibilitam o funcionamento de ambas as maneiras: use o processamento ARRAY (descrito acima) para velocidade e simplicidade ou use LOOPS para fazer coisas complexas. Como exemplo, como implementar a média exponencial do período variável (descrito acima) usando looping, veja o seguinte código: Period. Algum cálculo vaexp 0 Fechar 0 inicializar primeiro valor para (i 1 i lt BarCount i) calcular o valor do fator de suavização Fator 2 (Período i 1) calcular o valor do i-ésimo elemento da matriz usando esta barra fechar (fechar i) e Valor médio anterior (vaexp i - 1) vaexp i Factor Close i (1 - Factor) vaexp i - 1 Como você pode ver o código é mais longo, mas, por outro lado, é muito semelhante a qualquer outra linguagem de programação como CPascalBasic. Assim, as pessoas com alguma experiência com a programação podem achar mais fácil de entender. Se você é iniciante, sugiro aprender o processamento da matriz primeiro antes de cavar coisas mais complexas. Se você está tendo problemas para codificar a AFL, sugiro que você gere os arrays no exemplo em Excel para você mesmo. Se esse é um problema, obtenha alguma ajuda de um amigo - especialmente se esse amigo é um contador. Uma vez que você conseguiu o jeito, você pode codificar qualquer sistema de um livro sobre negociação - ou criar um você mesmo. --- Agradecimentos especiais a Geoff Mulhall pelo artigo original no boletim informativo que foi a base deste tutorial --- 22 de abril de 2011 Muitos dos recém-chegados à AFL são confundidos pelo IF (), IIF () e Switch (). Esta publicação fornece alguns exemplos simples de seu uso. O IF () e Switch () são instruções de controle de fluxo do programa, o IIF () é uma função que atua em todos os elementos de uma matriz de entrada e retorna uma matriz de saída. Em todos, exceto os aplicativos mais simples, o Switch () é o método preferido para o IF () para alterar o fluxo do programa. Ele pode ser usado para codificar árvores de decisão complexas e máquinas de estado. Por exemplo, como estes são muitas vezes necessários em sistemas de negociação automatizados. Para explicações mais detalhadas, clique em IF (). IIF (). Ou Switch (). Uma pesquisa da biblioteca afl também lhe dará muitos outros exemplos. A função IIF () É possível usar if () s para testar e modificar individualmente cada barra em uma matriz para uma condição. Um exemplo de como isso seria feito é mostrado na função abaixo (copiada da ajuda do AmiBroker). Esta função é um equivalente AFL para a função IIF (). Embora a abordagem acima funcione, o uso da função IIF () sempre fornece uma solução melhor e mais rápida. O IIF () é muito poderoso e deve ser usado sempre que possível. Abaixo estão alguns exemplos simples para começar. Btw, é altamente improvável que você possa melhorar o tempo de execução usando um loop ou escrevendo uma DLL. Para colorir todas as barras que caem em uma segunda-feira Branco: IIF () s Pode ser aninhado. Este exemplo combina com barras de segunda-feira, barras de quarta-feira Barras azul e sexta-feira Amarelo: A declaração IF () Uma das aplicações mais comuns para if () é selecionar o que você quer ver no seu gráfico: no exemplo acima, o IF ) Basicamente seleciona uma das duas seções de código. Para selecionar uma das várias opções, você pode usar a extensão else-if: The Switch () Statement Quando há muitas condições, as longas expressões If () podem tornar-se confusas, difíceis de compor e difíceis de modificar. Nesses casos, muitas vezes é melhor usar a instrução Switch (). Usando um Switch simples (), o último exemplo parece muito mais limpo: há momentos em que você terá muitas variáveis nomeadas individualmente que você gostaria de processar em uma instrução Switch (). Mesmo que o Switch () só possa aceitar um nome de variável único como argumento, você pode usar o método abaixo para contornar essa limitação: O argumento Switch () pode ser uma string ou número. Usar strings torna o código mais fácil de ler. Outra vantagem de usar o Switch () é que eles formatam bem usando Edit-gtPrettify Selection em sua janela do editor, usando muitas outras afirmações if, tendem a executar o if () s da página. Como mostrado acima, você pode empilhar declarações de maiúsculas e minúsculas para que várias condições desencadeiam a mesma tarefa. Para implementar uma Máquina de Estado simples, você passa o sistema 8220state8221 para o Switch (). Desta forma, você pode ter qualquer evento acionar qualquer sequência de tarefas, e fazê-lo em qualquer ordem desejada. Em uma aplicação real, as funções SayOnce () no código de exemplo abaixo serão substituídas pela tarefa que você deseja executar no estado. O próximo estado geralmente seria condicionalmente definido dentro de cada estado, por exemplo, você só quer passar para o próximo estado depois que um pedido é preenchido ou um preço é cruzado. Você pode usar o Switch de múltiplos níveis () s ou se () s dentro de cada seção de caixa. Este uso de instruções Switch () é muito útil em sistemas de negociação automatizada. Por exemplo, para processar o status da ordem (Pendente, Cheio, Erro, etc.) e analisando mensagens de erro TWS. Uma vez que os estados são salvos em uma Variável estática, eles permanecem válidos em várias execuções AFL e podem durar indefinidamente. Você também pode salvar estados em Variáveis Persistentes. Os estados são processados em execuções sequenciais afl, ou seja, se você alterar o estado em uma declaração de caso, esse próximo estado será processado na próxima atualização AFL. Em algumas aplicações, esse atraso pode causar problemas. Para garantir o código responsivo, você pode querer usar uma taxa de atualização de 0.1 segundos. Você pode remover o atraso usando o Switch () dentro de uma instrução loop while, anf loop até que um estado estável seja atingido. Arquivado por Herman às 10h20 sob AFL - As Noções básicas Comentários Desativados no uso de funções IIF (), IF () e Switch () 15 de março de 2008 As plotshapes () podem ser usadas para plotar formas em seu gráfico para indicar sinais, Paradas e outros eventos e condições. A Figura 1 abaixo oferece uma rápida visão geral das formas disponíveis e inclui alguns indocumentados. Uma versão em PDF apropriada para impressão está aqui: Folhas da FORMA AFL A Figura 2 mostra o pequeno programa AFL que foi usado para explorar todas as formas incorporadas e seus valores numéricos. Com as adições de Herman Arquivado por Dennis Brown às 5:01 pm sob AFL - Os Comentários Básicos Desligados na Ficha Cheat das Formas AFL 5 de novembro de 2007 Na AFL, os identificadores são abertos. Alto . Baixo. Fechar . Volume. O OpenInt e o Avg estão reservados para arrays de preços. Do pequeno número de variáveis reservadas, os identificadores de preços são os únicos que podem ser abreviados (OHLCVOI pode ser usado em vez da forma mais longa). Não são sensíveis a maiúsculas e minúsculas e, quando inseridas em uma fórmula, no Editor de fórmulas. Eles serão padrão para maiúsculas e negrito (como mostrado na figura abaixo). Isso é muito bom para acelerar a escrita de fórmulas, mas existe um 8216Catch 228217. Se forem usados identificadores abreviados, ele faz a tarefa de encontrar e substituir matrizes de preços, usando o editor de fórmulas Gtgt Edit gtgt Substituir muito tedioso, e. Se o 8216writer8217 quiser substituir todos os 8220C8217s8221 por uma variável ParamField, por exemplo, a ferramenta Substituir irá escolher todos os 8220C8221 no código e solicitar ao usuário que confirme a substituição. Verificação de correspondência de palavras inteiras apenas na Ferramenta de pesquisa de texto irá alterar os critérios para que, onde 8220C8221 seja parte de uma palavra, ele será passado, enquanto 8220C8221, no próprio it8217s, será tratado como uma palavra e destacado no relatório de pesquisa. Nota: O formato da fonte para as variáveis reservadas pode ser personalizado nas Preferências das Ferramentas gtgt. Uma dica útil para pesquisar, com a Ferramenta de busca de texto, é posicionar o cursor na parte superior do código para que a pesquisa comece a partir daí. Se o cursor for mais baixo, o código começará a partir daí e somente irá atravessar o final antes de informar que a pesquisa está completa. 19 de julho de 2007 A linguagem de programação AmiBroker (AFL) é uma linguagem de programação muito única e poderosa, mas para usá-la efetivamente, você precisa entender como ela funciona e como usar corretamente as funções AFL. Para o recém-chegado à programação, isso pode representar uma curva de aprendizado íngreme e pode demorar um pouco a encontrar as respostas para todas as suas perguntas. Escrever documentação sobre qualquer tópico que não deixa nenhuma questão sem resposta é uma tarefa impossível, toda a documentação de ajuda assume um nível mínimo de familiaridade com o tópico estudado. O problema é que este pré-requisito nível mínimo de compreensão é definido pelo julgamento subjetivo do autor. Os resultados são que, para o usuário individual, alguns tópicos são cobertos excessivamente, enquanto outros são desnatados porque o autor assumiu que todos estão basicamente familiarizados com o tópico. Os usuários, por outro lado, assumem frequentemente que sua falta de conhecimento é compartilhada por todos os iniciantes e, se o arquivo de Ajuda não explica de forma inadequada, afirme que a documentação está gravemente escrita. É claro que sua visão é tão relativa e subjetiva quanto a do autor. Esta situação existe em vários graus em toda a documentação e não pode ser prevenida. O caminho para você lidar com isso é manter a calma (houve algumas postagens aquecidas nas listas) e fazer sua própria pesquisa de pesquisa. Se você ainda pode entender algo e não pode encontrar a resposta para a sua pergunta específica, você pode enviar um e-mail ao Suporte Técnico da AmiBroker para obter ajuda ou publicar sua pergunta em um dos fóruns de AmiBroker: existem alguns outros fóruns de Yahoo que você quer ver, especialmente se você São multilingues. Para uma pesquisa mais geral, grupos de segmentação em qualquer idioma, clique aqui. Se você acredita que sua pergunta é de interesse geral, você pode fazer sua pergunta usando o campo de comentários abaixo. Mas, por favor, faça perguntas específicas como o 8216. Como uso do AFL8217, é necessário que um livro responda e ultrapassa o alcance do que os voluntários podem contribuir. É claro que recebemos suas soluções para problemas AFL específicos, seja como autor com uma publicação (requer registro) nesta categoria, ou no campo de comentários abaixo. Arquivado por Herman às 13:49, sob AFL - Os princípios Comentários sobre a introdução à AFL 14 de junho de 2007 Às vezes é útil conhecer o número de dias de negociação em um ano, e. Para anualizar retornos de um sistema que negocia diariamente. Em outras ocasiões, os dados de índice podem conter erros e o número de barras diárias, em um ano, pode ser comparado ao calendário de câmbio, para o índice relevante, para verificar esta falha. Arquivado em brianz às 9h15 sob AFL - Os Comentários Básicos Desligados em Quantos Dias de Negociação em um Ano Aromático e Porcentagem Band Código AFL De Sudhin Bhathija, Oi Rajandran, eu quero um afl que traça o seguinte. Digamos que você tenha um 200sma, agora o afl também deve traçar uma linha que seja 25 e -25 do sma, o usuário deve ser capaz de modificar esta porcentagem ou sma, você poderia escrever um agradecimento, ainda estou decidindo o sma e, portanto, É necessária a flexibilidade. Obrigado, Sudhin O seguinte usuário do código AFL tem provisão para variar a média móvel, o Perentage e o tipo de média móvel (SMA, EMA, DEMA, WMA, TEMA) e a cor da média móvel. Para alterar as propriedades, clique com o botão direito do mouse no gráfico e selecione as propriedades. Sudhin Bhathija solicita esse código AFL simples desde há muito tempo. De qualquer forma, concluiu isso. Sobre o Rajandran Rajandran é comerciante e fundador da Marketcalls em tempo integral, muito interessado em construir modelos de timing, algos. Conceitos de negociação discricionária e análise sentimental de negociação. Ele agora instrui usuários de todo o mundo, de comerciantes experientes, comerciantes profissionais para comerciantes individuais. Rajandran frequentou a faculdade no Chennai, onde ganhou um BE em Eletrônica e Comunicações. Rajandran tem uma ampla compreensão de softwares de negociação como Amibroker, Ninjatrader, Esignal, Metastock, Motivewave, Market Analyst (Optuma), Metatrader, Tradingivew, Python e entende necessidades individuais de comerciantes e investidores usando uma ampla gama de metodologias. Obrigado Rajendra, mais um se você puder Eu quero um afl para ontem alto - hoje baixo OU HOJE ALTO - ONTARIO BAIXO, eu tenho um para todayhigh - todaylow. Veja se você pode colocar isso se o tempo for um problema, não há problema, agradeço mais uma vez, agradeço seu esforço, que Deus o abençoe. Requisito de responsabilidade do governo dos EUA Regra CTFC 4.41 O comércio de futuros contém um risco substancial e não é adequado para todos os investidores. Um investidor poderia potencialmente perder todo ou mais do que o investimento inicial. O capital de risco é o dinheiro que pode ser perdido sem pôr em risco a segurança financeira ou o estilo de vida. Considere apenas o capital de risco que deve ser usado para negociação e apenas aqueles com capital de risco suficiente devem considerar a negociação. O desempenho passado não é necessariamente indicativo de resultados futuros. A REGRA CTFC 4.41 RESULTADOS DE DESEMPENHO HIPOTÉTICOS OU SIMULADOS TEM CERTAS LIMITAÇÕES. SEM ENCONTRO UM REGISTRO DE DESEMPENHO REAL, RESULTADOS SIMULADOS NÃO REPRESENTAM NEGÓCIO REAL. TAMBÉM, DESDE QUE OS NEGÓCIOS NÃO FORAM EXECUTADOS, OS RESULTADOS PODERÃO TER COMPRIMIDO COM COMPENSADO PARA O IMPACTO, SE QUALQUER, DE CERTOS FATORES DE MERCADO COMO LIQUIDEZ. PROGRAMAS DE NEGOCIAÇÃO SIMULADOS EM GERAL SÃO TAMBÉM SUJEITOS AO FATO QUE ESTÃO DESIGNADOS COM O BENEFÍCIO DE HINDSIGHT. NENHUMA REPRESENTAÇÃO ESTÁ FAZENDO QUE QUALQUER CONTA VOCE OU POSSIBILIDADE DE ALCANÇAR O LUCRO OU PERDAS SIMILAR AOS MOSTRADOS. Todos os negócios, padrões, gráficos, sistemas, etc. discutidos neste site ou propaganda são apenas para fins ilustrativos e não são interpretados como recomendações específicas de assessoria. Todas as idéias e materiais aqui apresentados são apenas para fins informativos e educacionais. Nenhum sistema ou metodologia de negociação já foi desenvolvido que pode garantir lucros ou evitar perdas. Os depoimentos e exemplos aqui utilizados são resultados excepcionais que não se aplicam a pessoas comuns e não se destinam a representar ou a garantir que alguém obtenha os mesmos resultados ou resultados semelhantes. As negociações sobre a dependência dos sistemas Trend Methods são tomadas por sua conta e risco por sua própria conta. Esta não é uma oferta para comprar ou vender interesses de futuros. Copyright 2015 Marketcalls Financial Services Pvt Ltd middot Todos os direitos reservados middot e nosso mapa do site middot Todos os logos são marcas registradas pertencem a seus respectivos proprietários. Dados e informações são fornecidos apenas para fins informativos e não se destinam a fins comerciais. Nem os marketcalls. in website nem nenhum dos seus promotores serão responsáveis por quaisquer erros ou atrasos no conteúdo, ou por quaisquer ações tomadas com base nisso.
No comments:
Post a Comment