一般的な質問は、行 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 ;