今からはじめるプログラミング30
さてさて。
グラフのプログラムがほぼできたところで。
元となるファイルを作成するプログラムを作りたいですね。
今更ながら、全体的な構想をまとめますね。
1・ファイル収集で為替情報とか株価情報とかをとってくる
2・グラフ作成プログラムでグラフ化する
3・(グラフ?)解析プログラムで自動で決済(かう/うる)する
123の全てを作ろうとは思っていませんが、
今回のサンプルはかなり実用的ではないですかね?
「先に言ってくれ!」
「というか作ろうと思ってないんかい!?」
という感じかもしれませんが、
まぁそんな感じです。
なんのこっちゃ?
というわけでデータを収集(ファイルを作成する)プログラムです。
下記の記事を参考にしました。
【Java】指定時間に実行、定期実行を簡単に実装する | のんぽぐ
DataCreateSample
-------------------------------------
package sample14;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class DataCreateSample {
public static void main(String[] args) {
SimpleDateFormat sdf =
new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
Timer timer = new Timer(false);
TimerTask task = new TimerTask() {
FileWriter fw = null;
BufferedWriter bw = null;
@Override
public void run() {
// TODO ここに定期実行させたい処理を記述
System.out.println("てすと");
String formatedDate = sdf.format(new Date());
try {
fw = new FileWriter("./dat/"+formatedDate+".txt");
bw = new BufferedWriter(fw);
//TODO get data from WEB site
String ss = formatedDate.substring(17, 19);//単純に秒を描いているだけ
bw.write(ss);
bw.flush();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
};
try {
timer.schedule(task, 0, 2000);
} catch (Exception e) {
// TODO Auto-generated catch block e.printStackTrace();
}
}
}
-------------------------------------
ここでは、現在の時間からファイル名を生成して、秒の値をファイルの中に書き込んでいるだけですが、実際はWEBサイトからとってくるようにすれば、その時点での値がファイルに書き込まれていく。。。というわけです。
WEBさいとからデータをとってくるヒントとなるプログラムは昔の記事で書いていると思うので、そちらを参考にしてもらってください。
どうでしょう?自動売買とかつくれそうな気がしてきませんか?
FXだとMT(MetaTrade)という無料のソフトが既にあるので、そちらを使うのがいいかもしれませんが、プログラムの勉強という感じで、設計するヒントになれば、と思いました。
ひとつのプログラムでは複雑になってしまうものでも、役割と動かすタイミングを別にしたりして、設計すれば、かなり複雑なことも自動化できます。
アプリケーションプログラムの醍醐味ですね。