Aqui está um código que deve ser útil para quem usa análise técnica na negociação e quer testar estratégias no Excel. Ele calcula a média móvel simples, linearmente ponderada e exponencial. Além disso, vou apresentar e explicar as etapas para criar o formulário e o código VBA. Inserir um UserForm 8211 Nome: MAForm Adicionar quatro etiquetas dos controles Toolbox 8211 Legendas conforme a tela de impressão acima Adicionar uma ComboBox para a seleção de tipo de média móvel. Foi chamado comboTypeMA Adicione dois controles RefEdit para o intervalo de entrada e o intervalo de saída. Adicionar uma caixa de texto para selecionar o período médio móvel Adicionar dois botões: Nome: botãoSubmit, Legenda: Enviar e Nome: botãoCancelar, Legenda: Cancelar Para gerar a lista suspensa para a seleção do tipo MA e carregar o formulário do usuário, um novo módulo Será inserido com o código abaixo. Os itens da ComboBox devem ser preenchidos por tipos de médias móveis e o formulário do usuário será carregado. Option Explicit Sub loadMAForm () Com MAFormboTypeMA. RowSource. AddItem Simples. AddItem Ponderado. AddItem Exponential End Com MAForm. Show End Sub Abaixo está o código atribuído ao botão Enviar. Private Sub buttonSubmitClick () Dim inputRange, outputRange As Range O inputRange conterá a série de preços usada para computar as MAs e o outputRange será preenchido com os valores das médias móveis. Dim InputPeriod As Integer O período médio móvel é declarado. Dim inputAddress, outputAddress As String Os intervalos de entrada e saída declarados como string. Se comboTypeMA. Value ltgt Exponential e comboTypeMA. Value ltgt Simples e comboTypeMA. Value ltgt Weighted True Then MsgBox Selecione um tipo de média móvel da lista. RefInputRange. SetFocus Exit Sub Esta parte do procedimento impõe as primeiras restrições relativas aos dados enviados. Se o tipo de média móvel não estiver contido na lista suspensa, o procedimento não procederá ao próximo passo e o usuário será solicitado a selecioná-lo novamente. ElseIf RefInputRange. Value Então MsgBox Selecione o intervalo de entrada. RefInputRange. SetFocus Exit Sub ElseIf RefOutputRange. Value Então MsgBox Selecione o intervalo de saída. RefOutputRange. SetFocus Exit Sub ElseIf RefInputPeriod. Value Then MsgBox Selecione o período médio móvel. RefInputPeriod. SetFocus Exit Sub ElseIf Not IsNumeric (RefInputPeriod. Value) Então MsgBox Moving período médio deve ser um número. RefInputPeriod. SetFocus Exit Sub End Se outras restrições forem criadas. O intervalo de entrada, o intervalo de saída e o período de entrada não devem estar em branco. Além disso, o período médio móvel deve ser um número. InputAddress RefInputRange. Value Set inputRange Range (inputAddress) outputAddress RefOutputRange. Value Definir outputRange Range (outputAddress) inputPeriod RefInputPeriod. Value Os argumentos para inputRange e outputRange intervalos serão inputAddress e outputAddress declarados como strings. Se inputRange. Columns. Count ltgt 1 Então o intervalo de entrada MsgBox pode ter apenas uma coluna. RefInputRange. SetFocus Exit Sub O inputRange deve conter apenas uma coluna. ElseIf inputRange. Rows. Count ltgt outputRange. Rows. Count Então o intervalo de saída MsgBox possui um número diferente de linhas do que o intervalo de entrada. RefInputRange. SetFocus Exit Sub End If O inputRange e outputRange devem ter um número igual de linhas. Dim RowCount As Integer RowCount inputRange. Rows. Count Dim cRow As Integer ReDim inputarray (1 para RowCount) Para cRow 1 Para RowCount inputarray (cRow) inputRange. Cells (cRow, 1).Value Next cRow inputarray é declarado como matriz e it8217s Corresponde aos valores de cada linha do intervalo de entrada. Se inputPeriod gt RowCount Then MsgBox O número de observações selecionadas é amplificador amp RowCount e o período é amplificador amplificador InputPeriod. O intervalo de entrada deve ter uma quantidade maior ou igual de elementos que o período selecionado. RefInputRange. SetFocus Exit Sub End Se Outra restrição for adicionada 8211 O intervalo de entrada deve ter uma quantidade maior ou igual de elementos do que o período. Se inputPeriod lt 0, então MsgBox Moving período médio deve ser maior do que 0. RefInputPeriod. SetFocus Exit Sub End If O período médio móvel deve ser superior a zero. ReDim outputarray (inputPeriod To RowCount) Como Variant Também são determinadas as dimensões da matriz do outputarray. O limite inferior da matriz é o valor inputPeriod eo limite superior é o valor de RowCount (o número de elementos na entradaRange). Abaixo da parte do procedimento calculado a média móvel simples, se a seleção para comboTypeMA for simples. SMA ----------------------------------------- Se comboTypeMA. Value Simples Então Dim i J Como Inteiro Dim temp Como Duplo Para i inputPeriod Para Temporidade RowCount 0 Para j (i - (inputPeriod - 1)) Para i temp temp inputarray (j) Próximo j outputarray (i) entrada temporáriaPeriod outputRange. Cells (i, 1).Value outputarray (i) Next i outputRange. Cells (0, 1).Value SMA (amp inputPeriod amp) Basicamente, o procedimento calcula a média móvel dos últimos números x (x é igual ao inputPeriod), começando pelo elemento de O inputarray igual ao InputPeriod. Abaixo está um exemplo simplificado, que mostra cada etapa do procedimento. Neste exemplo, existem quatro números (no01, no02, no03 e no04) da linha 1 à linha 4 e o período médio móvel é 3. Após cada nova média móvel, cada célula do outputRange irá tirar o valor do Outputarray. E depois de todas as médias móveis são computadas, na célula acima do outputRange será inserido um título contendo o tipo e o período da média móvel. Esta próxima parte calculará a média móvel exponencial. EMA ------------------------------------------ ElseIf comboTypeMA. Value Exponential Then Dim Alfa Como duplo alfa 2 (entradaPeriodo 1) Para j 1 Para entrarPeriod temp temp temparrayar (j) Próximo j outputarray (inputPeriod) temp inputPeriod Primeiro o valor de alpha é determinado. Porque na computação, o valor da EMA é baseado no EMA anterior, o primeiro será a média móvel simples. Para i inputPeriod 1 Para RowCount outputarray (i) outputarray (i - 1) alpha (inputarray (i) - outputarray (i - 1)) Próximo i Começando com a segunda média móvel, eles serão computados com base na fórmula acima: Anterior EMA plus alpha multiplicado pela diferença entre o número atual do inputarray e o valor EMA anterior. Para i inputPeriod Para RowCount outputRange. Cells (i, 1). Outputarray de Válido (i) Próximo i outputRange. Cells (0, 1).Value EMA (amp inputPeriod amp) Assim como o código para SMA, o outputarray será preenchido e A célula acima do outputarray representará o tipo eo período da média móvel. Abaixo está o código para calcular a média móvel ponderada. WMA ------------------------------------------ ElseIf comboTypeMA. Value Weighted Then Dim Temp2 As Integer Para i inputPeriod Para RowCount temp 0 temp2 0 Para j (i - (inputPeriod - 1)) Para i temp temp inputarray (j) (j - i inputPeriod) temp2 temp2 (j - i inputPeriod) Próximo j outputarray (i ) Temp temp2 outputRange. Cells (i, 1). Outputarray de Válido (i) Próximo i outputRange. Cells (0, 1).Value WMA (amp inputPeriod amp) End If A tabela abaixo contém as etapas para calcular cada variável usada para o Cálculo de WMA. Assim como no exemplo anterior, neste há os números na entradaRange. E o período de entrada é 3. Abaixo está o código final do procedimento, que descarrega o formulário de usuário. Descarregar o MAForm End Sub O procedimento abaixo é para o botão Cancelar. Será adicionado no mesmo módulo. Botão Sub privadoCancelClique () Descarregue MAForm End Sub, onde 2 (1 n) O subtítulo t é usado para indicar o tempo, por exemplo, T-1 refere-se ao período antes de t e n, a ser especificado pelo usuário, refere-se ao período médio da EMA. Por exemplo, o equivalente EMA de uma média móvel simples de 3 períodos tem n de 3. Quanto maior o valor de n, menor será. Isso resulta em um maior (1-) e mais de EMA t-1 é mantido em EMA t. O primeiro valor da EMA em uma série temporal pode assumir-se como uma média móvel simples de n dias8217 de preços. Alguns usuários também podem preferir iniciar o primeiro valor da EMA a partir do segundo período em que EMA no período 2 x período 2 preço (1 8211) x período 1 preço. Os usuários devem entender que a média móvel exponencial é realmente uma expansão de série infinita onde os preços anteriores têm um peso cada vez menor em EMA t. Considere o seguinte: Isso resulta em que o EMA é mais responsivo e menos volátil do que o equivalente em média móvel simples. Uma discussão mais detalhada sobre isso pode ser encontrada em meu artigo sobre filtros em finanças e análise técnica. O Método A usa funções, enquanto o Método B usa procedimentos secundários para calcular CMF. O método B é mais rápido e flexível. Cole este código na sua janela de código do ThisWorkBook no VBA. Clique direito neste WorkBook no Project Explorer e clique em View Code. Private Sub WorkbookOpen () O resto pertence a qualquer módulo Tells Excel para incluir estes na lista de funções, adicionar descrições para eles e criar uma nova categoria chamada Indicadores Técnicos. Macro Application. MacroOptions: EMA, Descrição: Retorna a média móvel exponencial. Amp Chr (10) amp Chr (10) amp Selecione os últimos períodos EMA ou o preço dos últimos períodos se o período atual for o primeiro. Amp Chr (10) amp Chr (10) amp Seguido pelo preço atual e n. Amp Chr (10) amp Chr (10) amp Chr (10) amp O fator de decaimento da média móvel exponencial é calculado como alpha2 (n1), Public Function EMA (EMAYesterday, price, n) EMA alpha price (1-alpha) EMAYesterday Uma vez que você terminou com o acima, você pode calcular a média móvel exponencial digitando em qualquer célula EMA (Last Period EMA, Current Price, n). Insira o preço do último período como EMA do último período se você estiver informando o primeiro EMA do seu conjunto de dados. Para executar o Método B, você deve copiar o subtítulo Runthis da página na Linha AccumulationDistribution para o seu módulo. Você também deve executar o EMA do submarino Runthis. Adicione a seguinte linha ao sub Runthis Coloque-o logo antes do End Sub E desative todas as outras macros que o Runthis ligará. Este sub começará a calcular EMA a partir de t2 em frente Sub EMA (fechar1 como Range, output As Range, n As Long) close0 close1 ( 1, 1).Address (False, False) close1a close1 (2, 1).Address (False, False) output1 output (1, 1).Address (False, False) output (2, 1).Value 2 (1 Amplificador amp n amplificador amp close1a (1-2 (1 amp. Amp)) saída do amplificador1 saída (2, 1).Value 2 (1 amp. Amp) amp close1a amplificador (1-2 (1 amp. Am)) amplificador Close0 Como o que você acabou de ler Digg it or Tipd it. O objetivo do Finance4Traders é ajudar os comerciantes a começar trazendo idéias e idéias imparciais. Desde o final de 2005, tenho desenvolvido estratégias comerciais de forma pessoal. Nem todos esses modelos são adequados para mim, mas outros investidores ou comerciantes podem achar úteis. Afinal, as pessoas têm metas e hábitos de investimento diferentes. Assim, Finance4Traders torna-se uma plataforma conveniente para disseminar meu trabalho. (Leia mais sobre Finanças4Traders) Por favor, use este site de forma apropriada e atenciosa. Isso significa que você deve citar o Finance4Traders pelo menos fornecendo um link para este site se você usar qualquer um de nossos conteúdos. Além disso, você não tem permissão para usar nosso conteúdo de forma ilegal. Você também deve entender que nosso conteúdo é fornecido sem garantia e você deve verificar de forma independente nosso conteúdo antes de confiar neles. Consulte a política de conteúdo do site e a política de privacidade ao visitar este site. 0 comentários: Publique um comentário Uma estratégia de negociação é muito semelhante a uma estratégia corporativa. Estudar criticamente seus recursos o ajudará a tomar decisões mais efetivas. (Leia mais) 8226 Compreendendo os indicadores técnicos Os indicadores técnicos são mais do que apenas equações. Indicadores bem desenvolvidos, quando aplicados cientificamente, são realmente ferramentas para ajudar os comerciantes a extrair informações críticas de dados financeiros. (Leia mais) 8226 Por que eu prefiro usar o Excel Excel apresenta dados para você visualmente. Isso torna muito mais fácil para você entender seu trabalho e economizar tempo. (Leia) Como calcular o EMA no Excel Saiba como calcular a média móvel exponencial no Excel e VBA e obtenha uma planilha gratuita na Web. A planilha recupera dados de estoque do Yahoo Finance, calcula EMA (ao longo da janela de tempo escolhida) e traça os resultados. O link de download está na parte inferior. O VBA pode ser visualizado e editado it8217s completamente grátis. Mas primeiro desvendar por que a EMA é importante para comerciantes técnicos e analistas de mercado. Os gráficos históricos de preços das ações são muitas vezes poluídos com muito ruído de alta freqüência. Isso muitas vezes obscurece as principais tendências. As médias móveis ajudam a suavizar essas pequenas flutuações, dando-lhe uma maior visão da direção geral do mercado. A média móvel exponencial atribui maior importância aos dados mais recentes. Quanto maior o período de tempo, menor será a importância dos dados mais recentes. EMA é definida por esta equação. Preço de hoje8217 (multiplicado por um peso) e ontem8217s EMA (multiplicado por 1 peso) Você precisa iniciar o cálculo EMA com um EMA inicial (EMA 0). Esta é geralmente uma média móvel simples de comprimento T. O gráfico acima, por exemplo, dá a EMA da Microsoft entre 1 de janeiro de 2013 e 14 de janeiro de 2014. Os comerciantes técnicos costumam usar o cross-over de duas médias móveis 8211 uma com um curto prazo E outro com uma escala de tempo longa 8211 para gerar sinais de buysell. Muitas vezes são utilizadas médias móveis de 12 e 26 dias. Quando a média móvel mais curta sobe acima da média móvel mais longa, o mercado está atualizado, isso é um sinal de compra. No entanto, quando as médias móveis mais baixas caem abaixo da média móvel longa, o mercado está caindo, isso é um sinal de venda. Let8217s primeiro aprende a calcular EMA usando funções de planilha. Depois disso, descobrimos como usar o VBA para calcular EMA (e traçar gráficos automaticamente) Calcule EMA no Excel com as Funções da Planilha Etapa 1. Let8217s dizem que queremos calcular o EMA de 12 dias do preço das ações da Exxon Mobil8217s. Primeiro, precisamos obter os preços históricos das ações 8211, você pode fazer isso com este programa de download de cotações de estoque a granel. Passo 2 . Calcule a média simples dos primeiros 12 preços com a função Average () do Excel8217s. No gráfico de tela abaixo, na célula C16, temos a fórmula MÉDIA (B5: B16) onde B5: B16 contém os primeiros 12 preços próximos, passo 3. Logo abaixo da célula usada na Etapa 2, insira a fórmula EMA acima. Lá você a possui. You8217ve calculou com sucesso um indicador técnico importante, EMA, em uma planilha. Calcule EMA com VBA Now let8217s mecaniza os cálculos com VBA, incluindo a criação automática de gráficos. Eu não mostrei o VBA completo aqui (it8217s disponível na planilha abaixo), mas discutiremos o código mais crítico. Passo 1. Faça o download de cotações de ações históricas para o seu ticker do Yahoo Finance (usando arquivos CSV) e carregue-os no Excel ou use o VBA nesta planilha para obter cotações históricas diretamente no Excel. Seus dados podem parecer algo assim: Etapa 2. É aqui que precisamos exercitar alguns braçulmanos 8211, precisamos implementar a equação EMA na VBA. Podemos usar o estilo R1C1 para programaticamente inserir fórmulas em células individuais. Examine o snippet de código abaixo. Folhas (quotDataquot).Range (quothquot amp EMAWindow 1) quotaverage (R-quot amp EMAWindow - 1 amp. QuotC-3: RC-3) quot Sheets (quatDataquot).Range (quothquot amp EMAWindow 2 amp. Quot: hquot amp numRows). FormulaR1C1 quotR0C-3 (2 (EMAWindow 1)) R-1C0 (1- (2 (EMAWindow1))) quot EMAWindow é uma variável que é igual à janela de tempo desejada numRows é o número total de pontos de dados 1 (o 8220 18221 é porque Nós assumimos que os dados reais do estoque começam na linha 2) o EMA é calculado na coluna h Supondo que EMAWindow 5 e numrows 100 (ou seja, existem 99 pontos de dados), a primeira linha coloca uma fórmula na célula h6 que calcula a média aritmética Dos primeiros 5 pontos de dados históricos A segunda linha coloca fórmulas nas células h7: h100 que calcula o EMA dos restantes 95 pontos de dados Etapa 3 Esta função VBA cria um gráfico do preço fechado e EMA. Defina EMAChart ActiveSheet. ChartObjects. Add (Esquerda: Range (quota12quot).Left, Width: 500, Top: Range (quota12quot).Top, Height: 300) Com EMAChart. Chart. Parent. Name quotema Chartquot Com. SeriesCollection. NewSeries. ChartType xlLine. Folhas de valores (quotdataquot).Range (quote2: equot amp numRows).XValues Sheets (quotdataquot).Range (quota2: aquot amp numRows).Format. Line. Weight 1.Name quotPricequot End With With. SeriesCollection. NewSeries. ChartType xlLine. AxisGroup xlPrimary. Values Sheets (quotdataquot).Range (quoth2: hquot amp numRows).Name quotEMAquot. Border. ColorIndex 1.Format. Line. Weight 1 End With. Axes (xlValue, xlPrimary).HasTitle True. Axes ( XlValue, xlPrimary).AxisTitle. Characters. Text quotPricequot. Axes (xlValue, xlPrimary).MaximumScale WorksheetFunction. Max (Sheets (quatDataquot).Range (quote2: equot amp numRows)).Axes (xlValue, xlPrimary).MinimumScale Int (WorksheetFunction. Min (Sheets (quatDataquot).Range (quote2: equot amp numRows))).Legend. Position xlLegendPositionRight. SetElement (msoElementChartTitleAboveChart).ChartTitle. Text quotClose Price amp quot amp EMAWindow amp quot-Day EMAquot End With Obtém esta planilha para a implementação completa da calculadora EMA com download automático de dados históricos. 14 pensamentos sobre ldquo Como calcular o EMA no Excel rdquo Última vez que eu baixei um de seus spreadsheets do Excel, ele causou que meu programa antivírus o sinalizasse como um PUP (potencial programa indesejável), pois aparentemente havia um código inserido no download que era adware, Spyware ou pelo menos potencial malware. Levou literalmente dias para limpar meu pc. Como posso garantir que eu apenas baixei o Excel. Infelizmente, há incríveis quantidades de malware. Adware e spywar, e você pode ser muito cuidadoso. Se é uma questão de custo eu não estaria disposto a pagar uma soma razoável, mas o código deve ser PUP grátis. Obrigado, não há vírus, malware ou adware em minhas planilhas. I8217ve programado eu mesmo e sei exatamente o que está dentro deles. Há um link de download direto para um arquivo zip na parte inferior de cada ponto (em azul escuro, negrito e sublinhado). Isso é o que você deve baixar. Passe o mouse sobre o link, e você deve ver um link direto para o arquivo zip. Eu quero usar o meu acesso a preços ao vivo para criar indicadores de tecnologia ao vivo (ou seja, RSI, MACD etc). Acabei de perceber para uma precisão completa, eu preciso de 250 dias de dados para cada estoque em oposição aos 40 que tenho agora. Existe algum lugar para acessar dados históricos de coisas como EMA, Ganho Médico, Perda Média, da mesma forma que eu poderia usar esses dados mais precisos no meu modelo. Em vez de usar 252 dias de dados para obter o RSI correto de 14 dias, eu poderia obter um externo Valor estimado para o Ganho médio e perda média e vá daqui, eu quero que meu modelo mostre resultados de 200 ações em oposição a alguns. Eu quero traçar múltiplo EMA BB RSI no mesmo gráfico e com base em condições gostaria de desencadear o comércio. Isso funcionaria para mim como um exemplo de backtutry de excel. Você pode me ajudar a traçar vários timeseries em um mesmo gráfico usando o mesmo conjunto de dados. Eu sei como aplicar os dados brutos a uma planilha de Excel, mas como você aplica os resultados de ema. Os gráficos ema em excel podem ser ajustados em períodos específicos. Obrigado kliff mendes diz: oi, Samir, primeiro agradeço um milhão por todo seu trabalho árduo ... trabalho excelente DEUS ABENÇOADO. Eu só queria saber se eu tenho dois ema plotados no gráfico, digamos 20ema e 50ema quando eles cruzam para cima ou para baixo pode a palavra COMPRAR ou VENDER aparecer no ponto de cruzamento vai me ajudar muito. Kliff mendes texas I8217m trabalhando em uma planilha de backtesting simples que8217ll gera sinais de buy-sell. Me dê algum tempo8230 Ótimo trabalho em gráficos e explicações. Ainda tenho uma pergunta. Se eu alterar a data de início para um ano depois e verificar dados recentes da EMA, é visivelmente diferente do que quando eu uso o mesmo período EMA com uma data de início anterior para a mesma referência de data recente. É isso que você espera. Torna difícil olhar para os gráficos publicados com EMAs mostrados e não ver o mesmo gráfico. Shivashish Sarkar diz: oi, estou usando sua calculadora EMA e eu realmente aprecio. No entanto, notei que a calculadora não é capaz de traçar os gráficos para todas as empresas (mostra o erro de tempo de execução 1004). Você pode criar uma edição atualizada da sua calculadora em que as novas empresas serão incluídas. Deixe uma resposta Cancelar resposta Como a Base de conhecimento do Mestre de Planilhas grátis Publicações recentes
No comments:
Post a Comment