C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: 同じ分数のグループに纏めるには


(過去ログ 134 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■78837 / inTopicNo.1)  同じ分数のグループに纏めるには
  
□投稿者/ どど (1回)-(2016/02/20(Sat) 21:49:13)

分類:[C#] 

前回時刻、 始値、安値、高値、終値のフィールドは適当に初期化しておく

受信した現在時刻と現在値をString.Split、DateTime、DecimalなどでParseする
前回時刻と現在時刻の年月日時分を比べる
一致しているなら、安値、高値を必要に応じて更新し、前回時刻と終値に現在の値を設定する
一致していないなら前回時刻、始値、安値、高値、終値を出力し、前回時刻、始値、安値、高値、終値に現在の値を設定する

と言う条件でコードを書きたいのですがどの様に書けばいいのかわかりません
よろしくお願いします
引用返信 編集キー/
■78838 / inTopicNo.2)  Re[1]: 同じ分数のグループに纏めるには
□投稿者/ Azulean (599回)-(2016/02/20(Sat) 22:58:50)
No78837 (どど さん) に返信
> と言う条件でコードを書きたいのですがどの様に書けばいいのかわかりません

これってコードを作り出して欲しいという依頼(丸投げ)なのかな…。
とりあえず、わからないなりに書いてみませんか?
そして、どこで躓くか、そのピンポイントを質問してみましょう。


そのままでは使えないけれど、考え方としてはこういうことに近いのでは。

DateTime lastTime = DateTime.Now;
int max = 0, min = 100, last = 0;
while (Tuple<DateTime, int> current = Get())
{
  if (lastTime == current.Item1)
  {
    last = current.Item2;
    max = Math.Max(max, current.Item2);
    min = Math.Min(min, current.Item2);
  }
  else
  {
     break; // 時刻違うらしい
  }
}

引用返信 編集キー/
■78843 / inTopicNo.3)  Re[1]: 同じ分数のグループに纏めるには
□投稿者/ WebSurfer (829回)-(2016/02/21(Sun) 01:03:11)
No78837 (どど さん) に返信

> 前回時刻、 始値、安値、高値、終値のフィールドは適当に初期化しておく

その「適当」というのはどういう意味ですか?
引用返信 編集キー/
■78850 / inTopicNo.4)  Re[2]: 同じ分数のグループに纏めるには
□投稿者/ どど (2回)-(2016/02/21(Sun) 14:43:02)
■投稿者/ Azulean (599回)-(2016/02/20(Sat) 22:58:50)

自分なりに書いてみたのですが上手く処理できません。

    //前回時刻、 始値、安値、高値、終値のフィールドは適当に初期化しておく
DateTime Time = args.Tick.DateTime;
double Price = args.Tick.Price;
double Volume = args.Tick.Volume;

double Open = 0;
double High = 0;
double Low = 0;
double Close = 0;
double volume_v = 0;


//前回時刻と現在時刻の年月日時分を比べる
DateTime dt = DateTime.Now;
int minute = dt.Minute;
String a = minute.ToString();

DateTime dt1 = Time;
int minute1 = dt1.Minute;
String b = minute1.ToString();

if (a == b)//一致しているなら、安値、高値を必要に応じて更新し、前回時刻と終値に現在の値を設定する
{
Open = Price;
if (Price > High)High = Price;
if (Price < Low)Low = Price;
volume_v = volume_v + Volume;
}

else
{


}

>>一致していないなら前回時刻、始値、安値、高値、終値を出力し、前回時刻、始値、安値、高値、終値に現在の値を設定する
この部分はまだ手付かずです
引用返信 編集キー/
■78851 / inTopicNo.5)  Re[3]: 同じ分数のグループに纏めるには
□投稿者/ WebSurfer (833回)-(2016/02/21(Sun) 14:59:50)
No78850 (どど さん) に返信

> DateTime Time = args.Tick.DateTime;
> double Price = args.Tick.Price;
> double Volume = args.Tick.Volume;

args とは何でしょうか? 定義不明のようですが?
引用返信 編集キー/
■78855 / inTopicNo.6)  Re[3]: 同じ分数のグループに纏めるには
□投稿者/ Azulean (601回)-(2016/02/21(Sun) 16:34:18)
No78850 (どど さん) に返信
> 自分なりに書いてみたのですが上手く処理できません。

デバッグしましたか?
ステップ実行やブレークポイントを使って、どのように動いているか確かめてください。
思っていない分岐に入ったのであれば、変数にカーソルを合わせ、変数の値がどうなっているかを確認しましょう。

(ぶっちゃけると、「うまくいきません」と言われても第三者にはわかりません。何を期待してどうなったかをきちんと説明できるぐらいには、現象を把握する努力をしましょう)
引用返信 編集キー/
■78888 / inTopicNo.7)  Re[1]: 同じ分数のグループに纏めるには
□投稿者/ shu (814回)-(2016/02/23(Tue) 11:03:09)
No78837 (どど さん) に返信

> 受信した現在時刻と現在値をString.Split、DateTime、DecimalなどでParseする
どこから?一定間隔で外部からのデータ供給がある場合と対象データを一括で
取り込むことが出来る場合とで処理が異なります。


> 前回時刻と現在時刻の年月日時分を比べる
時刻はどんなデータになっている?


> 一致していないなら前回時刻、始値、安値、高値、終値を出力し、
どこへどのように出力する?


> 前回時刻、始値、安値、高値、終値に現在の値を設定する
初期の前回時刻の設定をデータ上発生しない値にしておくか初期データフラグを用意することで
最初のデータと分の変わり目の処理を1つに纏めることが出来ます。





引用返信 編集キー/
■78897 / inTopicNo.8)  Re[3]: 同じ分数のグループに纏めるには
□投稿者/ WebSurfer (844回)-(2016/02/23(Tue) 12:57:03)
No78850 (どど さん) に返信

>     //前回時刻、 始値、安値、高値、終値のフィールドは適当に初期化しておく
> DateTime Time = args.Tick.DateTime;
> double Price = args.Tick.Price;
> double Volume = args.Tick.Volume;

先にも質問しましたが args とは何でしょう? たぶんそこのところが「適当」ではないか
と想像していますが、「適当」では何がしたいのかわからないです。

掲示板の反対側にいる第三者には掲示板に書いてあること以外は知りえないということ強く
意識して、質問者さんのやりたいことをきちんと説明していただけるとその先に進めると思
うのですが・・・
引用返信 編集キー/
■78938 / inTopicNo.9)  Re[1]: 同じ分数のグループに纏めるには
□投稿者/ Jitta (180回)-(2016/02/24(Wed) 21:27:54)
No78837 (どど さん) に返信
> 前回時刻、 始値、安値、高値、終値のフィールドは適当に初期化しておく
> 受信した現在時刻と現在値をString.Split、DateTime、DecimalなどでParseする
> 前回時刻と現在時刻の年月日時分を比べる
> 一致しているなら、安値、高値を必要に応じて更新し、前回時刻と終値に現在の値を設定する
> 一致していないなら前回時刻、始値、安値、高値、終値を出力し、前回時刻、始値、安値、高値、終値に現在の値を設定する

これは、「条件」じゃなく、「手順」の一部だなぁ。

 プログラムというのは、結果を得るためにしなければいけないことを積み上げることです。
「音楽会」という会を完成させるために、誰が、何を、どんな順に、演奏するか、決めます。
そして、「音楽会のプログラム」ができあがります。
同じように、「初期化する」「受信する」「受信内容を読み解く」「前回値と比較する」「更新する」という手順を経て、目的の結果が得られるわけです。
そのためにしなければならないのは、「コードを書く」ことではありません。
「手順を、コードになるまで細かく分け、具体化する」ことです。

 No78850 に書かれている「コードの断片」は、「条件」とおっしゃった「手順の一部」だけをコード化してあります。
ですから、望む結果にはほど遠い内容です。
前回時刻などの「初期値」、つまりプログラムを最初に実行したときに入力しておくべき値はなんでしょうか。
「前回時刻」であれば、たとえば、昨日のデータを引っ張り出してきて、その最終時刻かもしれません。
もしかしたら、今日、実行して途中まで更新してあるデータがあるかもしれません。
そういった「曖昧な点」を、曖昧でなくなるまで具体化していくことが、「プログラムを作る」ということです。
「プログラムを作る」ことと、「コードを書く」ことは一致しません。
まずは、「プログラムを作って」ください。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -