下面的等式的SQL。今日均线=(价格*(2/11))和x2B;((1-(2/11))*昨天均线)

下面的等式的SQL。今日均线=(价格*(2/11))和x2B;((1-(2/11))*昨天均线),sql,ms-access,ms-jet-ace,Sql,Ms Access,Ms Jet Ace,我可以请求你在以下方面的帮助吗 我想创建一个MS-Jet/Ace/Access查询,从价格数据表中返回10天指数移动平均值(EMA)。表格格式和一小部分数据如下 TableName = Spot ID (AutoNumber) aDate (DateTime) Settle (Double) 1 01/10/2007 16.056 2 02/10/2007 15.625 3

我可以请求你在以下方面的帮助吗

我想创建一个MS-Jet/Ace/Access查询,从价格数据表中返回10天指数移动平均值(EMA)。表格格式和一小部分数据如下

TableName = Spot
ID (AutoNumber) aDate (DateTime)        Settle (Double)
1               01/10/2007              16.056
2               02/10/2007              15.625
3               03/10/2007              15.655
4               04/10/2007              15.686
5               05/10/2007              15.810
6               08/10/2007              15.665
7               09/10/2007              15.908
8               10/10/2007              16.004
9               11/10/2007              16.319
10              12/10/2007              16.233
如果你不知道指数移动平均数,以下网站可能会帮助你解释它们

然而,我希望能向你解释这个等式

Todays EMA = (Settle * Exponent) + ((1 - Exponent) * Yesterdays EMA)
在哪里

我有一个查询,返回我需要的一些值,但我无法找到整个问题的解决方案

我的问题,到目前为止(希望格式能让阅读更清晰)

根据我查询的字段名,我的等式是

Todays EMA = ([Part A])  + ([Part B] * [Part C])
我希望得到与以下类似的结果

[10DMA] [Exponent]  [Part A]    [Part B]    [Part C] (Previous EMA)     [EMA]
15.896  0.181818182 2.919272727 0.818181818     USE 10DMA ie 15.896     15.925
15.911  0.181818182 2.840909091 0.818181818                 15.925      15.871
15.945  0.181818182 2.846363636 0.818181818                 15.871      15.831
15.985  0.181818182 2.852       0.818181818                 15.831      15.805
16.027  0.181818182 2.874545455 0.818181818                 15.805      15.806
16.037  0.181818182 2.848181818 0.818181818                 15.806      15.780
16.052  0.181818182 2.892363636 0.818181818                 15.780      15.803
16.054  0.181818182 2.909818182 0.818181818                 15.803      15.840
16.039  0.181818182 2.967090909 0.818181818                 15.840      15.927
16.025  0.181818182 2.951454545 0.818181818                 15.927      15.983                  
问题是我不知道如何创建[Part C]字段

有些观点是

  • 如果一天没有均线,则[C部分]值应为 [10DMA]。例如,第一条记录没有EMA,因此我需要 使用[10DMA]
  • 如果存在昨天的均线,则将该值用于今天[C部分]
我可以请教你一些建议吗。到目前为止,我有点偶然发现了我所拥有的,但是我被C部分的价值难住了

我想我可以做一些类似于

iif (EMA <> 0, EMA, [10DMA]) AS [Part C],
    (([Part A]) + ([Part B] * [Part C])) AS EMA
任何建议都将不胜感激。非常感谢您抽出时间


约翰。

循环引用是因为“作为EMA”-你能称它为其他名称吗,比如ABC?@ron tornambe。谢谢你的回复。问题是EMA字段不存在。我的意思是,我试图用“([Part A])+([Part B]*[Part C])作为EMA”来创建这个字段。将别名更改为ABC会让我参数EMA没有默认值'。
[10DMA] [Exponent]  [Part A]    [Part B]    [Part C] (Previous EMA)     [EMA]
15.896  0.181818182 2.919272727 0.818181818     USE 10DMA ie 15.896     15.925
15.911  0.181818182 2.840909091 0.818181818                 15.925      15.871
15.945  0.181818182 2.846363636 0.818181818                 15.871      15.831
15.985  0.181818182 2.852       0.818181818                 15.831      15.805
16.027  0.181818182 2.874545455 0.818181818                 15.805      15.806
16.037  0.181818182 2.848181818 0.818181818                 15.806      15.780
16.052  0.181818182 2.892363636 0.818181818                 15.780      15.803
16.054  0.181818182 2.909818182 0.818181818                 15.803      15.840
16.039  0.181818182 2.967090909 0.818181818                 15.840      15.927
16.025  0.181818182 2.951454545 0.818181818                 15.927      15.983                  
iif (EMA <> 0, EMA, [10DMA]) AS [Part C],
    (([Part A]) + ([Part B] * [Part C])) AS EMA
Circular reference caused by alias 'Part C'.