Estou tentando implementar uma média móvel exponencial (EMA) no postgres, mas conforme verifico a documentação e penso nisso, mais eu tento com mais confusão que eu sou. A fórmula para EMA (x) é: parece ser perfeita para um agregador, mantendo o resultado do último elemento calculado é exatamente o que tem que ser feito aqui. No entanto, um agregador produz um único resultado (como reduzir ou dobrar) e aqui precisamos de uma lista (uma coluna) de resultados (como mapa). Tenho verificado como os procedimentos e as funções funcionam, mas a AFAIK produz uma única saída, não uma coluna. Eu já vi muitos procedimentos e funções, mas na verdade não consigo descobrir como isso interage com a álgebra relacional, especialmente quando faz algo assim, uma EMA. Não tive sorte pesquisando os internets até agora. Mas a definição de um EMA é bastante simples, espero que seja possível traduzir essa definição para algo que funciona no postgres e é simples e eficiente, porque mudar para o NoSQL será excessivo no meu contexto. Isso está calculando a agregação que produz o resultado em cada linha para cada sublista dos dados de entrada. Porque parece que está usando o agregador até a linha n, retornando o resultado e depois indo para a linha 0 para calcular a agregação até a linha n1 novamente. Existe alguma maneira de usar a acumulação ou alguma variável estática (como em C) para que isso seja calculado uma vez Obrigado. Ndash Trylks 20 de janeiro 12 às 11:59 Não, ele está usando o valor acumulado. Se você executar a consulta com o comando quotraise infoquot descomentado, você poderá ver que a função só é chamada uma vez para cada saída de linha. O Postgresql produz o valor do estado em cada linha (se houver um finalfunc definido, que seria chamado para transformar o estado em um valor de saída). Ndash araqnid 20 de janeiro 12 às 12:04 ErwinBrandstetter: Eu revertei a maioria das mudanças - no caso do formato da primeira (âncora) parte da consulta, EMA (x1) pode ser claramente representada com uma única linha - isso Corespnds para a única linha definindo-o na questão. No caso da parte recursiva da consulta, usei mn-1 na condição de junção para indicar a equivalência do relacionamento com EMA (xn-1) na questão, mesmo que este seja menos performante se o desempenho for um Questão, o OP pode alterar a condição de junção para ser como você sugeriu. Ndash Mark Bannister 16 de janeiro às 9: 27 Eu li a discussão que você mencionou. É aplicável ao PostgreSQL, uma vez que é permitido criar uma função agregada definida pelo usuário usando SQL no PostgreSQL, mas não é permitido no SQL Server. O uso de CTE recursivo é uma maneira viável no SQL Server, mas percebo que a maneira CTE pode resultar em mais varredura de tabela do que as funções da janela. Então, faço essa publicação para perguntar se é possível calcular a média móvel exponencial usando a função de janela do SQL Server 2012, assim como calcular a média móvel simples. Ndash xiagao1982 14 de abril 13 às 2:53 Primeiro, você calcula o EMA (SMA (x)) em vez do EMA (x). Em segundo lugar, o seu quotsmoothing constantquot é, na verdade, o valor beta da minha fórmula, e não o alfa. Com essas duas mudanças, o SQLFiddle parece assim: sqlfiddle6191921 No entanto, ainda há uma pequena diferença entre o resultado real e o resultado esperado. Eu voltaria e veria se a sua definição EMA corresponde ao que eu conheço. Ndash Sebastian Meine 7 de maio 13 às 13:46 Eu simplesmente olhei para o formulário na planilha que você anexou e está fora da definição EMA padrão. Minha fórmula calcula a média móvel exponencial das últimas dez linhas. A planilha calcula primeiro a média padrão nas últimas dez linhas e, em seguida, a média móvel ponderada exponencialmente irrestrita em todas as médias. Isso segue o formulário aqui: en. wikipedia. orgwikiEWMAchart ndash Sebastian Meine 7 de maio às 13:52
Codificação de ajuda com d8217Alembert Forex EA Eu tento codificar uma EA que lida com a progressão de dalembert (para todos que não conhecem a progressão dalembert: bettingexpertcasino. Lembert-system) O plano é começar com 0,01 lotes e SL 13 pips TP 14 pips. Cada vez que um comércio se encerra com uma perda, um novo comércio abre imediatamente com lotes adicionais de 0,01 e depois de um comércio de ganhos próximo comercial aberto imediatamente com 0,01 lotes menos do que o lotes antes até chegar em 0,01 lotes. 1. comércio 0,01 lotes perda 2. comércio 0,02 lotes perda 3. comércio 0,03 lotes perda 4. comércio 0,04 lotes perda 5. comércio 0,05 lotes ganhar 6. comércio 0,04 lotes ganhar 7. comércio 0,03 lotes ganhar 8. comércio 0,02 lotes ganhar 9. Comércio 0.01 lotes de vitórias Então, aqui está a minha primeira tentativa de código, mas não funciona no testador startegy. - (Por favor, não há comentários como quotBlow sua conta de distância. Blablaquot Apenas compartilhando uma estratégi...
Comments
Post a Comment