Thursday, 9 November 2017

Weighted Moving Average Vba


Aqui está um código que deve ser útil para aqueles que utilizam análise técnica na negociação e querem testar estratégias no Excel. Calcula a média móvel simples, linearmente ponderada e exponencial. Além disso, apresentarei e explicarei as etapas para criar o formulário e o código VBA. Inserir um UserForm 8211 Nome: MAForm Adicionar quatro etiquetas a partir dos controles de caixa de ferramentas 8211 Legendas conforme a tela de impressão acima Adicionar um ComboBox para a seleção de tipo de média móvel. Foi nomeado comboTypeMA Adicionar dois controles RefEdit para o intervalo de entrada eo intervalo de saída. Adicionar uma caixa de texto para selecionar o período de média móvel Adicionar dois botões: Nome: buttonSubmit, Legenda: Enviar e Nome: buttonCancel, Legenda: Cancelar Para gerar a lista suspensa para seleção de tipo MA e carregar o formulário de usuário, um novo módulo Será inserido com o código abaixo. Os itens ComboBox com ser preenchido por tipos de médias móveis e o formulário de usuário será carregado. Option Explicit Sub loadMAForm () Com MAFormboTypeMA. RowSource. AddItem Simples. AddItem Ponderado. AddItem Exponencial End With 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 eo outputRange será preenchido com os valores das médias móveis. Dim inputPeriod As Integer O período de média 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 avançará para a próxima etapa e o usuário será solicitado a selecioná-la novamente. ElseIf RefInputRange. Value Then MsgBox Por favor, selecione o intervalo de entrada. RefInputRange. SetFocus Sair Sub ElseIf RefOutputRange. Value Then MsgBox Selecione o intervalo de saída. RefOutputRange. SetFocus Sair Sub ElseIf RefInputPeriod. Value Then MsgBox Selecione o período de média móvel. RefInputPeriod. SetFocus Exit Sub ElseIf Not IsNumeric (RefInputPeriod. Value) Em seguida, MsgBox Moving average period deve ser um número. RefInputPeriod. SetFocus Exit Sub End Se outras restrições forem criadas. A faixa de entrada, a faixa de saída eo período de entrada não devem ficar em branco. Além disso, o período de média móvel deve ser um número. InputAddress RefInputRange. Value Definir inputRange Range (inputAddress) outputAddress RefOutputRange. Value Definir outputRange Range (outputAddress) inputPeriod RefInputPeriod. Value Os argumentos para os intervalos inputRange e outputRange serão inputAddress e outputAddress declarados como strings. Se inputRange. Columns. Count ltgt 1 Then MsgBox O intervalo de entrada pode ter apenas uma coluna. RefInputRange. SetFocus Exit Sub O inputRange deve conter apenas uma coluna. ElseIf inputRange. Rows. Count ltgt outputRange. Rows. Count Then MsgBox O intervalo de saída tem um número diferente de linhas do que o intervalo de entrada. RefInputRange. SetFocus Exit Sub End If O inputRange eo outputRange devem ter um número igual de linhas. Dim RowCount As Inteiro RowCount inputRange. Rows. Count Dim cRow As Inteiro ReDim inputarray (1 Para RowCount) Para cRow 1 Para RowCount inputarray (cRow) inputRange. Cells (cRow, 1).Valor A seguir cRow inputarray é declarado como array e it8217s elementos Correspondem aos valores de cada linha do intervalo de entrada. Se inputPeriod gt RowCount Then MsgBox Número de observações selecionadas é amplificador amp RowCount eo período é amplificador amp ampPeriod. O intervalo de entrada deve ter uma quantidade maior ou igual de elementos do que o período selecionado. RefInputRange. SetFocus Exit Sub End Se Outra restrição é adicionada 8211 O intervalo de entrada deve ter uma quantidade maior ou igual de elementos do que o período. Se inputPeriod lt 0 Then MsgBox Moving período médio deve ser superior a 0. RefInputPeriod. SetFocus Sair Sub End If O período de média móvel deve ser maior que zero. ReDim outputarray (inputPeriod To RowCount) As Variant Também as dimensões de array de outputarray são determinadas. O limite inferior da matriz é o valor inputPeriod eo limite superior é o valor de RowCount (o número de elementos na entradaRange). Abaixo parte do procedimento calculou a média móvel simples, se a seleção para comboTypeMA é simples. SMA ----------------------------------------- Se comboTypeMA. Value Simples Então Dim i , J As Integer Dim temp As Double Para i inputPeriod Para RowCount temp 0 Para j (i - (inputPeriod - 1)) Para i temp temp inputarray (j) Próxima j outputarray (i) temp / inputPeriod outputRange. Cells (i, 1 ).Value outputarray (i) Next i outputRange. Cells (0, 1).Valor SMA (amp inputPeriod amp) Basicamente, o procedimento calcula a média móvel dos últimos x números (x igual ao inputPeriod), começando com o elemento Do inputarray igual ao inputPeriod. Abaixo está um exemplo simplificado, que mostra cada passo do procedimento. Neste exemplo, há quatro números (no01, no02, no03 e no04) da linha 1 à linha 4 eo período da média móvel é 3. Depois de cada nova média móvel ser calculada, cada célula da saídaRange tomará o valor da Outputarray. E depois de todas as médias móveis são computadas, na célula acima de outputRange será inserido um título contendo o tipo e período de média móvel. Esta próxima parte calculará a média móvel exponencial. EMA ------------------------------------------ ElseIf comboTypeMA. Value Exponential Then Dim Alfa Alfa 2 / (inputPeriod 1) Para j 1 Para inputPeriod temp temp inputarray (j) Próxima j outputarray (inputPeriod) temp / inputPeriod Primeiro o valor de alfa é determinado. Porque na computação, o valor da EMA é baseado na EMA anterior, o primeiro será a média móvel simples. Para i inputPeriod 1 Para RowCount outputarray (i) outputarray (i - 1) alfa (inputarray (i) - outputarray (i - 1)) Próximo i Começando com a segunda média móvel, eles serão calculados com base na fórmula acima: Anterior EMA mais alfa multiplicado pela diferença entre o número atual do inputarray eo valor EMA anterior. Para i inputPeriod Para RowCount outputRange. Cells (i, 1).Value outputarray (i) Próxima 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 outputarray irá representar o tipo e 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 entradaPeriod) temp2 temp2 (j - i inputPeriod) ) Temp / temp2 outputRange. Cells (i, 1).Value outputarray (i) Próxima 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 A computação WMA. Assim como no exemplo anterior, neste aqui há para números no inputRange. Eo período de entrada é 3. Abaixo está o código final do procedimento, que descarrega o formulário do usuário. Unload MAForm End Sub O procedimento abaixo é para o botão Cancelar. Ele será adicionado no mesmo módulo. Private Sub buttonCancelClick () Unload MAForm End SubLike o que você acabou de ler Digg ou Tipd it. O objetivo de Finance4Traders é ajudar os comerciantes a começar por trazê-los imparcial investigação e idéias. Desde o final de 2005, tenho vindo a desenvolver estratégias de negociação numa base pessoal. Nem todos esses modelos são adequados para mim, mas outros investidores ou comerciantes podem encontrá-los úteis. Afinal, as pessoas têm diferentes investimentos / negociação metas e hábitos. Assim, Finance4Traders se torna uma plataforma conveniente para divulgar o meu trabalho. (Leia mais sobre Finance4Traders) Por favor, use este site de forma apropriada e atenciosa. Isso significa que você deve citar Finance4Traders, pelo menos, fornecer um link para este site, se acontecer de você usar qualquer um dos nossos conteúdos. Além disso, você não tem permissão para fazer uso de nosso conteúdo de forma ilegal. Você também deve entender que nosso conteúdo é fornecido sem garantia e você deve verificar independentemente o nosso conteúdo antes de confiar neles. Consulte a política de conteúdo e a política de privacidade do site ao visitar este site. 1 comments: THanks homem irmão Eu tentei Método A e ele funciona muito bem. Uma estratégia de negociação é muito semelhante a uma estratégia corporativa. Estudar criticamente seus recursos o ajudará a tomar decisões mais eficazes. (Leia mais) 8226 Entender 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 Excel Excel apresenta dados para você visualmente. Isso torna muito mais fácil para você entender seu trabalho e economizar tempo. (Leia mais) Como calcular médias ponderadas móveis em Excel usando suavização exponencial Análise de dados do Excel para Dummies, 2 ª edição A ferramenta de suavização exponencial no Excel calcula a média móvel. No entanto, a suavização exponencial pondera os valores incluídos nos cálculos da média móvel de modo que os valores mais recentes tenham um maior efeito sobre o cálculo médio e os valores antigos tenham um efeito menor. Esta ponderação é realizada através de uma constante de suavização. Para ilustrar como a ferramenta Exponential Smoothing funciona, suponha que você volte a olhar para a informação diária média de temperatura. Para calcular médias móveis ponderadas usando suavização exponencial, execute as seguintes etapas: Para calcular uma média móvel exponencialmente suavizada, clique primeiro no botão de comando Dados da análise de dados tab8217s. Quando o Excel exibe a caixa de diálogo Análise de dados, selecione o item suavização exponencial da lista e clique em OK. Excel exibe a caixa de diálogo Exponential Smoothing. Identificar os dados. Para identificar os dados para os quais você deseja calcular uma média móvel exponencialmente suavizada, clique na caixa de texto Input Range. Em seguida, identifique o intervalo de entrada, digitando um endereço de intervalo de planilha ou selecionando o intervalo de planilha. Se o intervalo de entrada incluir um rótulo de texto para identificar ou descrever seus dados, marque a caixa de seleção Etiquetas. Fornecer a constante de alisamento. Insira o valor da constante de suavização na caixa de texto Fator de amortecimento. O arquivo de Ajuda do Excel sugere que você use uma constante de suavização de entre 0,2 e 0,3. Presumivelmente, no entanto, se você estiver usando esta ferramenta, você tem suas próprias idéias sobre o que é a constante de suavização correta. (Se você não tem idéia sobre a constante de suavização, talvez você não deveria usar essa ferramenta.) Diga ao Excel onde colocar os dados de média móvel suavemente exponencial. Use a caixa de texto Range de saída para identificar o intervalo de planilha na qual você deseja inserir os dados de média móvel. No exemplo da folha de cálculo, por exemplo, coloque os dados de média móvel no intervalo de folhas de cálculo B2: B10. (Opcional) Diagrama os dados exponencialmente suavizados. Para traçar os dados exponencialmente suavizados, marque a caixa de seleção Saída do gráfico. (Opcional) Indique que você deseja que as informações de erro padrão sejam calculadas. Para calcular erros padrão, marque a caixa de seleção Erros Padrão. O Excel coloca valores de erro padrão ao lado dos valores de média móvel exponencialmente suavizados. Depois de concluir especificando quais informações de média móvel você deseja calcular e onde deseja colocá-las, clique em OK. O Excel calcula as informações da média móvel.

No comments:

Post a Comment