注目の記事 PICK UP!

  • C#

C# LINQで移動平均線を作成する

LINQを使って、移動平均の計算方法を紹介します。

データは、下記の為替データを使って計算します。

 

スポンサーリンク

 


/// <summary>
/// 為替データを使って移動平均を計算します
/// </summary>
/// <param name="dt">為替チャートデータ</param>
/// <param name="s">移動平均の開始位置</param>
/// <param name="e">移動平均の終了位置</param>
/// <returns>移動平均</returns>
public DataTable MovingAverage(DataTable dt,int s,int e)
{
    int sMA = s;
    int eMA = e;
    // 移動平均を格納するカラム
    dt.Columns.Add("MA", typeof(double));

    for (int i = 0; i < dt.Rows.Count; i++)
    {
                // 移動平均の計算範囲を制御
                if (i >= eMA - 1)
                {
                    // 平均値の計算する対象範囲
                    var query = from DataRow myRow in dt.Rows
                                where int.Parse(myRow["ID"].ToString()) >= sMA && int.Parse(myRow["ID"].ToString()) <= eMA
                                select myRow;

                    // 移動平均の計算結果
                    double avg = query.AsEnumerable()
                        .Average(row => double.Parse(row.Field<string>("Close").ToString()));

                    // 移動平均の結果をDataTableに格納
                    dt.Rows[i]["MA"] = Math.Round(avg, 3);

                    sMA++;
                    eMA++;

                }
    }
    return dt;
}

 

移動平均の計算の流れ

青⇒赤⇒緑の流れで1行ずつ動かしながら平均値を算出していきます。

矢印の長さは、19行目のLINQにあるwhere句に該当します。

移動平均の計算方法

 

スポンサーリンク

  • コメント: 2

関連記事

  1. Android Studio libsフォルダがない?libsフォルダの表示方法

  2. C# LINQでDataTableから高速に特定行を検索する方法

  3. Android Studio jarファイルを追加したらリビルドしよう

  4. C# LINQでボリンジャーバンドを作成する

  5. C# DataTableからComputeを使って合計値や平均値を算出する

  6. C# Webサーバーからhttp通信でファイルを取得する方法

  7. C# JSONファイルからLINQを使って集計する方法 – 合計値

  8. C# JSONファイルの読み込み方法

  9. C# DataTableにレコード追加

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

PAGE TOP