//================================================================C // ボリンジャー・バンドによる株売買シミュレーション(複数パラメータ) // Input File: T-xxxx.txt : プログラムと同じフォルダー // Output File: MBoll-xxxx.txt : プログラムと同じフォルダー // xxxxは4桁の株価コードで画面から与える //----------------------------------------------------------------C // javac MBollBand.java : classファイルの作成 // java MBollBand : 実行 // <画面から入力> // code : 株価コード // kabu : 一口単位の株数(1000, 100, 10 or 1) // <プログラム中で与える> // maxn = 5; 投資可能な最大口数 //----------------------------------------------------------------C // Written by Yasunori Ushiro (後 保範), 2011/11/20 //  訂正(kochi[]): 2012/01/08 // ( Waseda University, 早稲田大学 ) //================================================================C import java.io.*; import java.util.*; public class MBollBand //================================================================C // 呼値変換関数 //================================================================C { public static int valset(int x) { int kochi[] = { 3000,5000,30000,50000,300000,500000,3000000 }; int kizami[] = { 1, 5, 10, 50, 100, 500, 1000, 10000 }; int i, y, z; // set kizami for (i=0; i<7; i++) { if(x < kochi[i]) break; } z = kizami[i]; // set return value y = (x + z/2) / z; y = y * z; return y; } //================================================================C // 出力の桁揃え //================================================================C public static void fout(int val, int keta, PrintWriter q) { int i, n, x; n = 1; if (val < 0) n++; x = Math.abs(val) / 10; while (x != 0) { n++; x /= 10; } n = keta - n; for (i=0; i= stock[k][4]) //高値 >= μ+band*σ // 売り処理 { if(hoyu >= 1) //株を保有 { urikai[k][0] = -1; hoyu--; //1口売却 if(stock[k][0] >= stock[k][4]) { urikai[k][1] = stock[k][0]; } //始値売却 else { urikai[k][1] = stock[k][4]; } //指値売却 } } urikai[k][2] = hoyu; } // 最終日処理(保有株を終値で売却) k = n - 1; urikai[k][0] = -hoyu; if (hoyu !=0 ) { urikai[k][1] = stock[n-1][3]; } else { urikai[k][1] = 0; } urikai[k][2] = 0; // 売買集計 Tkai = Turi = kosu = 0; for (k=ido; k 0) { kosu++; Tkai += urikai[k][1]; } else if (urikai[k][0] < 0) { Turi -= urikai[k][0]*urikai[k][1];;} } Tkai *= kabu; Turi *= kabu; rieki = Turi - Tkai; // 結果出力 // q.println(" "+ido+" "+band+" "+kosu+" "+Tkai+" "+Turi // +" "+rieki); fout(ido, 4, q); q.print(" "+band); fout(kosu, 5, q); fout(Tkai, 10, q); fout(Turi, 10, q); fout(rieki, 9, q); q.println(); band += 0.1; } } } }