質問編集履歴

31

文章の修正

2022/12/19 07:17

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,21 +1,6 @@
1
- ### 前提
2
-
3
- データを読み込み、高値等を求めたいです。
4
- また、画面には、高値等を表示させたいです。
5
-
6
-
7
-
8
- ### 実現したいこと
9
-
10
- データファイルを読み込んだ後、高値等を画面に出力させたいです。
11
-
12
-
13
-
14
1
 
15
2
  ### 試したこと
16
3
 
17
-
18
- 現時点では以下のコードで、高値等を出力させることができました。
19
4
  正しく表示されているかを確認しています。
20
5
 
21
6
 

30

文章の修正

2022/12/18 22:11

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 前提
2
2
 
3
- 株価のデータを読み込み、高値等を求めたいです。
3
+ データを読み込み、高値等を求めたいです。
4
4
  また、画面には、高値等を表示させたいです。
5
5
 
6
6
 

29

文章の修正

2022/12/18 22:10

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 前提
2
2
 
3
- 株価のデータを読み込み、高値等を画面に出力させるプログラムを組みたいです。
3
+ 株価のデータを読み込み、高値等を求めたいです。
4
4
  また、画面には、高値等を表示させたいです。
5
5
 
6
6
 

28

文章の修正

2022/12/18 22:08

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,7 +1,6 @@
1
1
  ### 前提
2
2
 
3
3
  株価のデータを読み込み、高値等を画面に出力させるプログラムを組みたいです。
4
- データには、時刻・株価の順に、時系列順に並んでいます。
5
4
  また、画面には、高値等を表示させたいです。
6
5
 
7
6
 

27

文章の修正

2022/12/18 21:52

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- Fortranを使用したデータ解析
1
+ Fortranにおけるデータ解析
test CHANGED
File without changes

26

文章の修正

2022/12/18 21:51

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -2,13 +2,13 @@
2
2
 
3
3
  株価のデータを読み込み、高値等を画面に出力させるプログラムを組みたいです。
4
4
  データには、時刻・株価の順に、時系列順に並んでいます。
5
- また、画面には、高値・安値・始値・終値を表示させたいです。
5
+ また、画面には、高値を表示させたいです。
6
6
 
7
7
 
8
8
 
9
9
  ### 実現したいこと
10
10
 
11
- データファイルを読み込んだ後、始値・高値・安値・終値を画面に出力させたいです。
11
+ データファイルを読み込んだ後、高値を画面に出力させたいです。
12
12
 
13
13
 
14
14
 

25

文章の修正

2022/12/18 21:50

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,32 +1,15 @@
1
1
  ### 前提
2
2
 
3
- 株価のデータを読み込み、1秒区切りで高値等を画面に出力させるプログラムを組みたいです。
3
+ 株価のデータを読み込み、高値等を画面に出力させるプログラムを組みたいです。
4
- データには、時刻(hh/mm/ss/tttttt)・株価の順に、時系列順に並んでいます。
4
+ データには、時刻・株価の順に、時系列順に並んでいます。
5
- また、画面には、1秒区切りで高値・安値・始値・終値を表示させたいです。
5
+ また、画面には、高値・安値・始値・終値を表示させたいです。
6
- データファイルの中身は次のようになっています。(時刻は(時・分・秒・1マイクロ秒)となっています。)
7
6
 
8
- 90000243601 745.8
7
+
9
- 90000604508 744.9
10
- 90001372798 766.9
11
- 90001777654 766.6
12
- 90002563876 766.3
13
- 90002577687 754.8
14
-
15
-
16
-
17
8
 
18
9
  ### 実現したいこと
19
10
 
20
- データファイルを読み込んだ後、以下の例のように、1秒ごとに始値・高値・安値・終値を画面に出力させたいです。
11
+ データファイルを読み込んだ後、始値・高値・安値・終値を画面に出力させたいです。
21
12
 
22
- 時刻 始値 高値 安値 終値
23
- 9時1秒 744 744.6 743.9 744.5
24
- 9時2秒 744.2 744.8 744.1 744.7
25
- 9時3秒 745.5 746.1 745.4 746
26
- 9時4秒 745.8 746.5 745.7 746.4
27
-
28
-
29
-
30
13
 
31
14
 
32
15
 
@@ -36,60 +19,4 @@
36
19
  現時点では以下のコードで、高値等を出力させることができました。
37
20
  正しく表示されているかを確認しています。
38
21
 
39
- ```Fortran
40
- program kakaku
41
- implicit none
42
- integer(8) :: time, time0, tt
43
- real(8) :: price, high, low, opening, closing
44
- time0 = 999999
45
22
 
46
- open(17,file='rate.dat',status='old')
47
- read(17, '(I6.6, I6.6, f10.4)') time, tt, price
48
-
49
- high = price
50
- low = price
51
- opening = price
52
-
53
- rewind(17)
54
-
55
- do
56
- read(17, '(I6.6, I6.6, f10.4)', end=99, err=98) time, tt, price
57
-
58
- if (time > time0) then
59
- print '(f10.4)', high, low, opening, closing
60
- print *
61
- high = price
62
- low = price
63
- opening = price
64
- end if
65
-
66
- if (high < price) then
67
- high = price
68
- end if
69
-
70
- if (low > price) then
71
- low = price
72
- end if
73
-
74
- print '(I6.6, I6.6, f10.4)', time, tt, price
75
- time0 = time
76
- closing = price
77
- end do
78
-
79
- 98 print *, 'Error'
80
- 99 high=price
81
- low=price
82
- opening=price
83
- closing=price
84
- print '(f10.4)', high, low, opening, closing
85
-
86
- stop
87
-
88
- end program kakaku
89
-
90
- ```
91
-
92
-
93
-
94
-
95
-

24

文章の追加

2022/12/18 01:35

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,9 +1,9 @@
1
1
  ### 前提
2
2
 
3
- 株価のティックデータ(datファイル)を読み込んで、1秒足のデータを画面に出力させるプログラムを組みたいです。
3
+ 株価のデータを読み込、1秒区切りで高値等を画面に出力させるプログラムを組みたいです。
4
- ティックデータには、時刻(hh/mm/ss/tttttt)・株価の順に、時系列順に並んでいます。
4
+ データには、時刻(hh/mm/ss/tttttt)・株価の順に、時系列順に並んでいます。
5
- また、1秒足は、1秒間における四本値(始値・高値・安値・終値を表してす。
5
+ また、画面には、1秒区切りで高値・安値・始値・終値を表示させたす。
6
- datファイルの中身は次のようになっています。(時刻は(時・分・秒・1マイクロ秒)となっています。)
6
+ データファイルの中身は次のようになっています。(時刻は(時・分・秒・1マイクロ秒)となっています。)
7
7
 
8
8
  90000243601 745.8
9
9
  90000604508 744.9
@@ -17,7 +17,7 @@
17
17
 
18
18
  ### 実現したいこと
19
19
 
20
- datファイルを読み込んだ後、以下の例のように、1秒ごとに始値・高値・安値・終値を画面に出力させたいです。
20
+ データファイルを読み込んだ後、以下の例のように、1秒ごとに始値・高値・安値・終値を画面に出力させたいです。
21
21
 
22
22
  時刻 始値 高値 安値 終値
23
23
  9時1秒 744 744.6 743.9 744.5
@@ -33,9 +33,8 @@
33
33
  ### 試したこと
34
34
 
35
35
 
36
- ご指摘があったように、IF文間違っており、修正しました。
36
+ 点では以下コードで、高値等を出力させることできました。
37
- このデータは、時刻が11:30:00:000000(11時30分ジャスト)までのデータが書かれています。(この部分が説明不足でした。)
38
- 実行画面追加しました(時刻最後の行の部分)
37
+ 正しく表示されているか確認てい
39
38
 
40
39
  ```Fortran
41
40
  program kakaku
@@ -89,9 +88,8 @@
89
88
  end program kakaku
90
89
 
91
90
  ```
92
- 実行画面
93
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-12-17/d95b84d4-b866-4850-812a-661f5505ff44.png)
94
91
 
95
92
 
96
93
 
97
94
 
95
+

23

文章の追加

2022/12/17 10:30

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -34,6 +34,7 @@
34
34
 
35
35
 
36
36
  ご指摘があったように、時刻のIF文が間違っており、修正しました。
37
+ このデータは、時刻が11:30:00:000000(11時30分ジャスト)までのデータが書かれています。(この部分が説明不足でした。)
37
38
  実行画面を追加しました。(時刻最後の行の部分)
38
39
 
39
40
  ```Fortran

22

文章の追加

2022/12/17 09:40

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -88,6 +88,8 @@
88
88
  end program kakaku
89
89
 
90
90
  ```
91
+ 実行画面
92
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-12-17/d95b84d4-b866-4850-812a-661f5505ff44.png)
91
93
 
92
94
 
93
95
 

21

文章の追加

2022/12/17 09:40

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -34,6 +34,7 @@
34
34
 
35
35
 
36
36
  ご指摘があったように、時刻のIF文が間違っており、修正しました。
37
+ 実行画面を追加しました。(時刻最後の行の部分)
37
38
 
38
39
  ```Fortran
39
40
  program kakaku

20

文章の修正

2022/12/17 02:52

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
 
36
36
  ご指摘があったように、時刻のIF文が間違っており、修正しました。
37
- 現時点では、終値が正しく出力できないです。できたところまでのプログラムを記載します。このプログラムだと、時刻が1行だけのとき、終値が正しく表示されなくなってしまいます。原因は、時刻が1行だけのとき終値がひとつ前の値を記憶しているため、だと思います。(実行画面を記載します。)
37
+
38
38
  ```Fortran
39
39
  program kakaku
40
40
  implicit none
@@ -54,10 +54,6 @@
54
54
  do
55
55
  read(17, '(I6.6, I6.6, f10.4)', end=99, err=98) time, tt, price
56
56
 
57
- if (time == time0) then
58
- closing = price
59
- end if
60
-
61
57
  if (time > time0) then
62
58
  print '(f10.4)', high, low, opening, closing
63
59
  print *
@@ -66,17 +62,17 @@
66
62
  opening = price
67
63
  end if
68
64
 
69
- if (high .lt. price) then
65
+ if (high < price) then
70
66
  high = price
71
67
  end if
72
68
 
73
- if (low .gt. price) then
69
+ if (low > price) then
74
70
  low = price
75
71
  end if
76
72
 
77
73
  print '(I6.6, I6.6, f10.4)', time, tt, price
78
74
  time0 = time
79
-
75
+ closing = price
80
76
  end do
81
77
 
82
78
  98 print *, 'Error'
@@ -92,7 +88,6 @@
92
88
 
93
89
  ```
94
90
 
95
- 実行画面
96
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-12-17/3b8e62cc-7f74-40ff-890f-f76b4f4333ac.png)
97
91
 
98
92
 
93
+

19

 文章の修正

2022/12/17 00:48

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
 
36
36
  ご指摘があったように、時刻のIF文が間違っており、修正しました。
37
- 現時点では、終値が正しく出力できないです。できたところまでのプログラムを記載します。このプログラムだと、時刻が1行だけのとき、終値が正しく表示されなくなってしまいます。(実行画面を記載します。)
37
+ 現時点では、終値が正しく出力できないです。できたところまでのプログラムを記載します。このプログラムだと、時刻が1行だけのとき、終値が正しく表示されなくなってしまいます。原因は、時刻が1行だけのとき終値がひとつ前の値を記憶しているため、だと思います。(実行画面を記載します。)
38
38
  ```Fortran
39
39
  program kakaku
40
40
  implicit none

18

文章の追加

2022/12/16 23:13

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -34,8 +34,7 @@
34
34
 
35
35
 
36
36
  ご指摘があったように、時刻のIF文が間違っており、修正しました。
37
- 現時点では、終値が正しく出力できず、最後の時刻にると四本値自体が出力きなくなってしまいます。できたところまでのプログラムを記載します。
37
+ 現時点では、終値が正しく出力できなです。できたところまでのプログラムを記載します。このプログラムだと、時刻が1行だけのとき、終値が正しく表示されなくなってしまいます。(実行画面を記載します。)
38
- (実行画面を添付します。)
39
38
  ```Fortran
40
39
  program kakaku
41
40
  implicit none
@@ -81,12 +80,19 @@
81
80
  end do
82
81
 
83
82
  98 print *, 'Error'
83
+ 99 high=price
84
+ low=price
85
+ opening=price
86
+ closing=price
87
+ print '(f10.4)', high, low, opening, closing
88
+
84
- 99 stop
89
+ stop
90
+
85
91
  end program kakaku
86
92
 
87
93
  ```
88
94
 
89
95
  実行画面
90
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-12-16/ac860955-414e-4848-b98b-83f0e1aa6216.png)
96
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-12-17/3b8e62cc-7f74-40ff-890f-f76b4f4333ac.png)
91
97
 
92
98
 

17

文章の修正

2022/12/16 11:52

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -34,7 +34,8 @@
34
34
 
35
35
 
36
36
  ご指摘があったように、時刻のIF文が間違っており、修正しました。
37
- 現時点では、四本を求めることができたのですが、最後の時刻になると正しく出力できなくなってしまいます。(実行画面添付します。
37
+ 現時点では、値が正しく出力でき、最後の時刻になると四本値自体が出力できなくなってしまいます。できたところまでのプログラム記載します。
38
+ (実行画面を添付します。)
38
39
  ```Fortran
39
40
  program kakaku
40
41
  implicit none

16

文章の修正

2022/12/16 11:04

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -33,17 +33,17 @@
33
33
  ### 試したこと
34
34
 
35
35
 
36
-
36
+ ご指摘があったように、時刻のIF文が間違っており、修正しました。
37
- 現時点では、まずデータ列を1秒ごとのまとまりに区切り、その範囲での四本値(高値・安値・始値・終値)途中まで求めることできたのですが、時刻の最後ら辺になると四本値が出力できなくなってしまいます。(実行画面を添付します。)
37
+ 現時点では、四本値を求めることできたのですが、最後の時刻になると正しく出力できなくなってしまいます。(実行画面を添付します。)
38
38
  ```Fortran
39
39
  program kakaku
40
40
  implicit none
41
- integer(8) :: hh, mm, ss, ss0, tt
41
+ integer(8) :: time, time0, tt
42
42
  real(8) :: price, high, low, opening, closing
43
- ss0 = 99
43
+ time0 = 999999
44
44
 
45
45
  open(17,file='rate.dat',status='old')
46
- read(17, '(3I2.2, I6.6, f10.4)') hh, mm, ss, tt, price
46
+ read(17, '(I6.6, I6.6, f10.4)') time, tt, price
47
47
 
48
48
  high = price
49
49
  low = price
@@ -52,9 +52,13 @@
52
52
  rewind(17)
53
53
 
54
54
  do
55
- read(17, '(3I2.2, I6.6, f10.4)', end=99) hh, mm, ss, tt, price
55
+ read(17, '(I6.6, I6.6, f10.4)', end=99, err=98) time, tt, price
56
56
 
57
+ if (time == time0) then
58
+ closing = price
59
+ end if
60
+
57
- if (ss > ss0) then
61
+ if (time > time0) then
58
62
  print '(f10.4)', high, low, opening, closing
59
63
  print *
60
64
  high = price
@@ -70,22 +74,18 @@
70
74
  low = price
71
75
  end if
72
76
 
73
- print '(3I2.2, I6.6, f10.4)', hh, mm, ss, tt, price
77
+ print '(I6.6, I6.6, f10.4)', time, tt, price
74
- ss0 = ss
75
-
76
- if (ss == ss0) then
77
- closing = price
78
+ time0 = time
78
- end if
79
-
80
79
 
81
80
  end do
82
81
 
82
+ 98 print *, 'Error'
83
83
  99 stop
84
84
  end program kakaku
85
85
 
86
86
  ```
87
87
 
88
88
  実行画面
89
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-12-16/dfb8a081-c442-4bd0-b96a-01d3b2d10264.png)
89
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-12-16/ac860955-414e-4848-b98b-83f0e1aa6216.png)
90
90
 
91
91
 

15

文章の追加

2022/12/16 09:11

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
 
36
36
 
37
- 現時点では、まずデータ列を1秒ごとのまとまりに区切り、その範囲での高値安値始値を画面に出力させることはできまし。終をどう表現すればよいでしょうか以下にコード記載します。
37
+ 現時点では、まずデータ列を1秒ごとのまとまりに区切り、その範囲での四本値(高値安値始値・終値)途中まで求めることはできたのですが、時刻の最後ら辺になると四本が出力きなくなってまいます(実行画面添付します。
38
38
  ```Fortran
39
39
  program kakaku
40
40
  implicit none
@@ -55,7 +55,7 @@
55
55
  read(17, '(3I2.2, I6.6, f10.4)', end=99) hh, mm, ss, tt, price
56
56
 
57
57
  if (ss > ss0) then
58
- print '(f10.4)', high, low, opening
58
+ print '(f10.4)', high, low, opening, closing
59
59
  print *
60
60
  high = price
61
61
  low = price
@@ -72,6 +72,12 @@
72
72
 
73
73
  print '(3I2.2, I6.6, f10.4)', hh, mm, ss, tt, price
74
74
  ss0 = ss
75
+
76
+ if (ss == ss0) then
77
+ closing = price
78
+ end if
79
+
80
+
75
81
  end do
76
82
 
77
83
  99 stop
@@ -79,4 +85,7 @@
79
85
 
80
86
  ```
81
87
 
88
+ 実行画面
89
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-12-16/dfb8a081-c442-4bd0-b96a-01d3b2d10264.png)
82
90
 
91
+

14

文章の修正

2022/12/16 08:37

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
 
36
36
 
37
- 現時点では、まずデータ列を1秒ごとのまとまりに区切り、その範囲での高値と安値と始値を画面に出力させることはできました。終値をどう表現すればよい分かりません。以下にコードを記載します。
37
+ 現時点では、まずデータ列を1秒ごとのまとまりに区切り、その範囲での高値と安値と始値を画面に出力させることはできました。終値をどう表現すればよいでしょうか。以下にコードを記載します。
38
38
  ```Fortran
39
39
  program kakaku
40
40
  implicit none

13

文章の追加

2022/12/16 07:47

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
 
36
36
 
37
- 現時点では、まずデータ列を1秒ごとのまとまりに区切り、その範囲での高値と安値と始値を画面に出力させることはできました。以下にコードを記載します。
37
+ 現時点では、まずデータ列を1秒ごとのまとまりに区切り、その範囲での高値と安値と始値を画面に出力させることはできました。終値をどう表現すればよいのか分かりません。以下にコードを記載します。
38
38
  ```Fortran
39
39
  program kakaku
40
40
  implicit none

12

文章の追加

2022/12/16 06:12

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
 
36
36
 
37
- 現時点では、まずデータ列を1秒ごとのまとまりに区切り、その範囲での高値と安値を画面に出力させることはできました。以下にコードを記載します。
37
+ 現時点では、まずデータ列を1秒ごとのまとまりに区切り、その範囲での高値と安値と始値を画面に出力させることはできました。以下にコードを記載します。
38
38
  ```Fortran
39
39
  program kakaku
40
40
  implicit none
@@ -42,12 +42,12 @@
42
42
  real(8) :: price, high, low, opening, closing
43
43
  ss0 = 99
44
44
 
45
-
46
45
  open(17,file='rate.dat',status='old')
47
46
  read(17, '(3I2.2, I6.6, f10.4)') hh, mm, ss, tt, price
48
47
 
49
- high = price
48
+ high = price
50
- low = price
49
+ low = price
50
+ opening = price
51
51
 
52
52
  rewind(17)
53
53
 
@@ -55,10 +55,11 @@
55
55
  read(17, '(3I2.2, I6.6, f10.4)', end=99) hh, mm, ss, tt, price
56
56
 
57
57
  if (ss > ss0) then
58
- print '(f10.4)', high, low
58
+ print '(f10.4)', high, low, opening
59
59
  print *
60
60
  high = price
61
61
  low = price
62
+ opening = price
62
63
  end if
63
64
 
64
65
  if (high .lt. price) then
@@ -75,6 +76,7 @@
75
76
 
76
77
  99 stop
77
78
  end program kakaku
79
+
78
80
  ```
79
81
 
80
82
 

11

文章の修正

2022/12/16 06:08

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -36,10 +36,10 @@
36
36
 
37
37
  現時点では、まずデータ列を1秒ごとのまとまりに区切り、その範囲での高値と安値を画面に出力させることはできました。以下にコードを記載します。
38
38
  ```Fortran
39
- program price
39
+ program kakaku
40
40
  implicit none
41
41
  integer(8) :: hh, mm, ss, ss0, tt
42
- real(8) :: price, high, low, open, close
42
+ real(8) :: price, high, low, opening, closing
43
43
  ss0 = 99
44
44
 
45
45
 
@@ -74,7 +74,7 @@
74
74
  end do
75
75
 
76
76
  99 stop
77
- end program price
77
+ end program kakaku
78
78
  ```
79
79
 
80
80
 

10

文章の修正

2022/12/16 06:00

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -44,7 +44,7 @@
44
44
 
45
45
 
46
46
  open(17,file='rate.dat',status='old')
47
- read(17, '(3I2.2, I6.6, f10.4)', end=99) hh, mm, ss, tt, price
47
+ read(17, '(3I2.2, I6.6, f10.4)') hh, mm, ss, tt, price
48
48
 
49
49
  high = price
50
50
  low = price

9

文章の修正

2022/12/16 05:36

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -32,8 +32,7 @@
32
32
 
33
33
  ### 試したこと
34
34
 
35
- ファイルの中身を画面に出力させることはできたのですが、上記のプログラムが中々うまくいきません。
35
+
36
- datファイルを1行ずつ読み込み、1秒ごとの四本値をそれぞれ配列に入れ、それぞれの配列にmaxvalやminvalなどの関数を使うと考えているのですが、それらを上手くコードに書けません。
37
36
 
38
37
  現時点では、まずデータ列を1秒ごとのまとまりに区切り、その範囲での高値と安値を画面に出力させることはできました。以下にコードを記載します。
39
38
  ```Fortran

8

文章の追加

2022/12/16 05:35

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -35,28 +35,47 @@
35
35
  ファイルの中身を画面に出力させることはできたのですが、上記のプログラムが中々うまくいきません。
36
36
  datファイルを1行ずつ読み込み、1秒ごとの四本値をそれぞれ配列に入れ、それぞれの配列にmaxvalやminvalなどの関数を使うと考えているのですが、それらを上手くコードに書けません。
37
37
 
38
- 現時点では、まずデータ列を1秒ごとのまとまりに区切るプログラム完成しました。以下にコードを記載します。
38
+ 現時点では、まずデータ列を1秒ごとのまとまりに区切り、その範囲での高値と安値を画面に出力させことできました。以下にコードを記載します。
39
39
  ```Fortran
40
- program interval
40
+ program price
41
41
  implicit none
42
42
  integer(8) :: hh, mm, ss, ss0, tt
43
- real(8) :: price
43
+ real(8) :: price, high, low, open, close
44
44
  ss0 = 99
45
45
 
46
+
46
47
  open(17,file='rate.dat',status='old')
48
+ read(17, '(3I2.2, I6.6, f10.4)', end=99) hh, mm, ss, tt, price
49
+
50
+ high = price
51
+ low = price
52
+
53
+ rewind(17)
47
54
 
48
55
  do
49
- read(17, '(3I2.2, I6.6,f10.4)', end=99) hh, mm, ss, tt, price
56
+ read(17, '(3I2.2, I6.6, f10.4)', end=99) hh, mm, ss, tt, price
57
+
50
58
  if (ss > ss0) then
59
+ print '(f10.4)', high, low
51
60
  print *
61
+ high = price
62
+ low = price
52
63
  end if
64
+
65
+ if (high .lt. price) then
66
+ high = price
67
+ end if
68
+
69
+ if (low .gt. price) then
70
+ low = price
71
+ end if
72
+
53
73
  print '(3I2.2, I6.6, f10.4)', hh, mm, ss, tt, price
54
74
  ss0 = ss
55
75
  end do
56
76
 
57
77
  99 stop
58
- end program interval
78
+ end program price
59
-
60
79
  ```
61
80
 
62
81
 

7

文章の追加

2022/12/16 01:58

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -35,6 +35,28 @@
35
35
  ファイルの中身を画面に出力させることはできたのですが、上記のプログラムが中々うまくいきません。
36
36
  datファイルを1行ずつ読み込み、1秒ごとの四本値をそれぞれ配列に入れ、それぞれの配列にmaxvalやminvalなどの関数を使うと考えているのですが、それらを上手くコードに書けません。
37
37
 
38
- 現時点では、まずデータ列を1秒ごとのまとまりに区切るプログラムは完成しました。
38
+ 現時点では、まずデータ列を1秒ごとのまとまりに区切るプログラムは完成しました。以下にコードを記載します。
39
+ ```Fortran
40
+ program interval
41
+ implicit none
42
+ integer(8) :: hh, mm, ss, ss0, tt
43
+ real(8) :: price
44
+ ss0 = 99
45
+
46
+ open(17,file='rate.dat',status='old')
47
+
48
+ do
49
+ read(17, '(3I2.2, I6.6,f10.4)', end=99) hh, mm, ss, tt, price
50
+ if (ss > ss0) then
51
+ print *
52
+ end if
53
+ print '(3I2.2, I6.6, f10.4)', hh, mm, ss, tt, price
54
+ ss0 = ss
55
+ end do
56
+
57
+ 99 stop
58
+ end program interval
59
+
60
+ ```
39
61
 
40
62
 

6

追記

2022/12/15 13:31

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
File without changes

5

追記

2022/12/15 11:39

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -33,33 +33,8 @@
33
33
  ### 試したこと
34
34
 
35
35
  ファイルの中身を画面に出力させることはできたのですが、上記のプログラムが中々うまくいきません。
36
- datファイルを1行ずつ読み込み、1秒ごとの四本値をそれぞれ配列に入れ、それぞれの配列にmaxvalやminvalなどの関数を使うと考えているのですが、うまいきません。
36
+ datファイルを1行ずつ読み込み、1秒ごとの四本値をそれぞれ配列に入れ、それぞれの配列にmaxvalやminvalなどの関数を使うと考えているのですが、それらを上手コードに書けません。
37
- ※追記 (2022-12-15-19:37)
38
- 現時点では、まずデータ列を1秒ごとのまとまりに区切るプログラムを作成しているのですが、画面に出力すると数値が欠けてしまいます。以下にそのプログラムを記載します。
39
- ```Fortran
40
- program interval
41
- implicit none
42
- integer(8) :: hh, mm, ss, ss0, tt
43
- real(4) :: price
44
- ss0 = 99
45
37
 
46
- open(17,file='rate.dat',status='old')
47
-
48
- do
49
- read(17, '(3I2.2, I6.6, 2X, f6.3)', end=99) hh, mm, ss, tt, price
50
- if (ss > ss0) then
51
- print *
52
- end if
53
- print '(3I2.2, I6.6, 2X, f6.3)', hh, mm, ss, tt, price
54
- ss0 = ss
55
- end do
56
-
57
- 99 stop
58
- end program interval
59
- ```
60
- 実行すると以下のようになります。途中の数が欠けています。
61
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-12-15/d3a4ae4c-5437-45f8-b0b2-734999f408e2.png)
62
- これよう表示させいです(小数点以下の000は表示させなくて大丈夫です。)
38
+ 現時点では、まずデータ列1秒ごとまとまり区切るプログラムは完成しました。
63
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-12-15/0ba92018-72da-4d22-9dc4-36cff3ccffaa.png)
64
39
 
65
40
 

4

追記

2022/12/15 10:37

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  ファイルの中身を画面に出力させることはできたのですが、上記のプログラムが中々うまくいきません。
36
36
  datファイルを1行ずつ読み込み、1秒ごとの四本値をそれぞれ配列に入れ、それぞれの配列にmaxvalやminvalなどの関数を使うと考えているのですが、うまくいきません。
37
- ※追記 (2022-12-15-19:03)
37
+ ※追記 (2022-12-15-19:37)
38
38
  現時点では、まずデータ列を1秒ごとのまとまりに区切るプログラムを作成しているのですが、画面に出力すると数値が欠けてしまいます。以下にそのプログラムを記載します。
39
39
  ```Fortran
40
40
  program interval

3

追記

2022/12/15 10:37

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -46,11 +46,11 @@
46
46
  open(17,file='rate.dat',status='old')
47
47
 
48
48
  do
49
- read(17, '(3I2.2, I6, 2X, f6.3)', end=99) hh, mm, ss, tt, price
49
+ read(17, '(3I2.2, I6.6, 2X, f6.3)', end=99) hh, mm, ss, tt, price
50
50
  if (ss > ss0) then
51
51
  print *
52
52
  end if
53
- print '(3I2.2, I6, 2X, f6.3)', hh, mm, ss, tt, price
53
+ print '(3I2.2, I6.6, 2X, f6.3)', hh, mm, ss, tt, price
54
54
  ss0 = ss
55
55
  end do
56
56
 
@@ -58,7 +58,7 @@
58
58
  end program interval
59
59
  ```
60
60
  実行すると以下のようになります。途中の数が欠けています。
61
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-12-15/68fc7f89-d891-41bd-9246-63e5bba3d423.png)
61
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-12-15/d3a4ae4c-5437-45f8-b0b2-734999f408e2.png)
62
62
  これを次のように表示させたいです。(小数点以下の000は表示させなくて大丈夫です。)
63
63
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-12-15/0ba92018-72da-4d22-9dc4-36cff3ccffaa.png)
64
64
 

2

"試してみたこと"の追記

2022/12/15 10:22

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -59,7 +59,7 @@
59
59
  ```
60
60
  実行すると以下のようになります。途中の数が欠けています。
61
61
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-12-15/68fc7f89-d891-41bd-9246-63e5bba3d423.png)
62
- これを次のように表示させたいです。
62
+ これを次のように表示させたいです。(小数点以下の000は表示させなくて大丈夫です。)
63
63
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-12-15/0ba92018-72da-4d22-9dc4-36cff3ccffaa.png)
64
64
 
65
65
 

1

”試したこと"の追記

2022/12/15 10:13

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -34,5 +34,32 @@
34
34
 
35
35
  ファイルの中身を画面に出力させることはできたのですが、上記のプログラムが中々うまくいきません。
36
36
  datファイルを1行ずつ読み込み、1秒ごとの四本値をそれぞれ配列に入れ、それぞれの配列にmaxvalやminvalなどの関数を使うと考えているのですが、うまくいきません。
37
+ ※追記 (2022-12-15-19:03)
38
+ 現時点では、まずデータ列を1秒ごとのまとまりに区切るプログラムを作成しているのですが、画面に出力すると数値が欠けてしまいます。以下にそのプログラムを記載します。
39
+ ```Fortran
40
+ program interval
41
+ implicit none
42
+ integer(8) :: hh, mm, ss, ss0, tt
43
+ real(4) :: price
44
+ ss0 = 99
45
+
46
+ open(17,file='rate.dat',status='old')
47
+
48
+ do
49
+ read(17, '(3I2.2, I6, 2X, f6.3)', end=99) hh, mm, ss, tt, price
50
+ if (ss > ss0) then
51
+ print *
52
+ end if
53
+ print '(3I2.2, I6, 2X, f6.3)', hh, mm, ss, tt, price
54
+ ss0 = ss
55
+ end do
56
+
57
+ 99 stop
58
+ end program interval
59
+ ```
60
+ 実行すると以下のようになります。途中の数が欠けています。
61
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-12-15/68fc7f89-d891-41bd-9246-63e5bba3d423.png)
62
+ これを次のように表示させたいです。
63
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-12-15/0ba92018-72da-4d22-9dc4-36cff3ccffaa.png)
37
64
 
38
65