2

一般的な質問は、行 n-1 の column_A に依存する行 n の column_A を更新する方法です。

具体的な質問は、計算と永続化です。EMA (指数移動平均) は MYSQL テーブルです。

EMA 計算 (10% または 19 日間 EMA) の場合、EMA(n) = 0.1 * 価格 + 0.9 EMA(n-1) したがって、行 n の値が値行 (n -1)

どのプログラミング言語でも、これは簡単に計算できます。
ただし、EMA が MYSQL テーブルに列として格納されている場合。MYSQLスクリプトでEMA列を効率的に計算および更新するにはどうすればよいですか? 現在、ループ内で順次更新しか実行できません。私の醜い解決策はここにリストされています。order(n) 更新が必要です。

order(1) 更新のみが必要なスマートなアイデアはありますか?

どうもありがとうございました


DELIMITER $$

DROP PROCEDURE IF EXISTS update_ema$$

CREATE PROCEDURE update_ema(
IN series_id INT
)
BEGIN

DECLARE counter INT;

SET counter = 2;

WHILE counter <= 5000 DO

    update price_table as x
    inner join  price_table y 
    on x.id = y.id and x.row_num = y.row_num+1 
    and x.Id=series_id and x.row_num = counter
    set x.EMA19 = func_ema(19, y.EMA19, x.price);

SET counter = counter + 1;


END WHILE;
END$$
DELIMITER ;
4

1 に答える 1

0

column_a、row(n) の値が column_a、row(n-1) の値に依存する場合、それを変更すると、後続のすべての行の値が変更されます。

(コードではありません)

if

x = row number
row(x) col(a) = f(row(x-1) col(a))


then

where x = n
row(n) col(a) = f(row(n-1) col(a))

where x = n + 1
row((n+1)) col(a) = f(row((n+1)-1) col(a))
row(n+1) col(a) = f(row(n) col(a))

n を変更すると、テーブルの最後まで n+1 を更新する必要があります。私はあなたが持っているものよりもはるかに良くなることができるとは思わない.

于 2012-06-29T16:38:10.713 に答える