Fx予測ツールドル円2作成の経緯
2026/05/29
mam 様の
FANN(Fast Artificial Neural Network Library)
(Delphiでお手軽プログラミング)
https://mam-mam.net/delphi/fann.html
をそのまま使用して
2024/11月、向こう1年間の最高気温予測アプリを
アップロードさせていただきました。(感謝)
もしかしたら、売上なども予測できるのではないかと思い、
2024/11月、売上予測アプリも作ってみました。(感謝)
私は2023/05月からFXというのをやっています。
2026/05月現在少しづつ向上している感じはありますが
結果はうまくいっていません。
FX予測の参考資料として
2024/11月に経済指標記録アプリをアップロードし、
2025/02月にFX予測ツール(ドル円特化)をアップロードし、
更に2025/06月にFX予測ツール(ドル円)30分足用 を
作成しました。(多謝)
今回このFX予測ツールの改訂版として、
mam 様のFANN(Fast Artificial Neural Network Library)
を使用させていただき、
機械学習によるFX予測ドル円2として作成しました。(感謝)
2026年1月以降 Google Gemini 様に沢山教えていただき(多謝)
漸く05分足、30分足、4時間足の各10期後までの
予測プログラムを作ったところですが、ここで
Gemini 様から
10期予測では大きな変化率を抑制して
しまうので、売買サインが出にくいことから
1-3期予測とする提案がありました。
Gemini 様の提案に従い、今後はこの線に沿って
プログラム作成をするつもりですが、
私の腕が未熟なせいで、
私の問いに Google Gemini 様は1-2分で返事して
くれますが、その内容を私がプログラムに落とし込んで
返信するまで半月もかかるという状況で、
3期予測の完成まで相当期間かかることが予想されることと、
10期予測プログラムも約半年の時間を費やして作成した
ものなので、私としては棄て難いと言う未練もあり、
いったん、10期予測プログラムを完成させて
ブログにまとめておくことにしました。
10期予測をまとめるに当たって、予測の当否を判定する
方法を検討したのですが、10期予測では売買サインが出ず、
売買サインの当否を予測結果にできないので、
予測時点の最終終値から見て予測終値と実終値が
共に高値または安値なら当りとして結果表示
することにしました。
なお、3期予測に移行しても計算式は変わるが、計算の
基礎はFX価格情報等であり、テーブル構造は現在のものを
使用できると思われるので、これまでの作成した
MT4のスクリプトプログラムもそのまま使用できると思われます。
FXは価格の上下を当てるだけの単純なルールですが、
その中に国内外の経済情勢、政治情勢やトレーダの思惑を
含んで非常に複雑で奥深く感じています。
このツールがわずかでも役に立てれば非常に嬉しく思います。
かなりマニアックなツールなのでほとんど役にたたない
かも知れませんが、何かの参考になれば幸いです。
なお、このアプリは Windows で動作します。
スマホ、マック、Linuxなどでは動作しませんのでご了承願います。
使用方法
1 ファイル等のダウンロード
ファイル等は次からダウンロードできます。
ショートコード
FX予測ツールドル円2 (2 ダウンロード )ダウンロードの際、画面右上のダウンロードマークをクリックすると
ファイルが未確認と表示され、マルウエアの危険が表示されたら、
その下のマルウエア検査ボタンをクリックし、マルウエア検査通過後に
ファイル名がFx予測.zipとなると思います。
WindowsもGoogleも日々変化しているようなので、
ダウンロードの際、上記と違うかもしれません。悪しからず。
Fx予測ドル円2.zipファイルを適当な場所に移動して解凍します。
(ファイルを右クリックしてすべて展開を選択します。)
ファイルを解凍すると、[Fx予測ドル円2] フォルダの下に
次のファイル、フォルダが表示されます。
Data フォルダ
フォルダ内に次のフォルダが含まれます。
CSV フォルダ:
データベースのデータをCSVファイルに保存するフォルダです。
MTData フォルダ:
MT4以外のツールで作成した場合はこのフォルダに
保存してください。
一般のファイル
fannfloat.dll : 機械学習用のファイルです。
FxYUsJp2.exe : アプリの実行ファイルです。
UWCSV_script.txt :
MetaQuotes社のFXトレードソフトMT4から
為替レートデータをCSVファイルに書出すMT4用の
プログラムコードです。
テキスト内容をコピーして使用してください。
UWCSV_Multi.txt : 同上
SQDB.DB :
プログラムと同じディレクトリに置いてください。
SQLite データベースファイルです。(無料のデータベース)
SQLiteのサイトを見ると、世界で一番使われていると
書いてあります。
2 FXデータの取得(ダウンロード)
データの取得は MetaQuotes 社の MetaTrader4: [MT4] という
FX取引ツールを使っていることを前提として説明します。
[MT4] でなくてもデータ取得できると思いますが、
その場合は独自に取得していただくことになります。
MetaTrader4 [MT4] は
https://www.metatrader4.com/ja/download
からダウンロードできます。
ただし、私は XMTrading というところの
PC用ツールからダウンロードしており、
少し環境が違うかも知れません。
https://www.xmtrading.com/jp/mt4
なお、XMTrading はデモ口座で使用できます。
デモ口座使用は無料です。(登録は必要です)
[MT4] はプログラムを作成することが出来ます。
今回は自作のFXデータの取得(書出)プログラムを使用します。
MT4データ書出 プログラム作成の手順
1 新規プログラムの登録
[MT4]をインストールすると、 MetaEditor4 というプログラム作成ツールも
同時にインストールされますので、 MetaEditor4 を起動します。
画像 G01_メタエディタ起動 参照

上欄のファイルメニューから新規作成を選ぶとプログラムタイプ選択画面が
現れますので、スクリプトを選択してください。
スクリプトは、 1回だけ実行するタイプのプログラムです。
画像 G02_スクリプト選択 参照

スクリプトを選択するとファイル名登録画面が出ますのでファイル名を
登録してください。
今回登録していただくのは2種類のスクリプトプログラムです。
UWCSV_Multi.mq4 及び UWCSV_script.mq4 です。
当初 UWCSV.script.mp4 プログラムを作って
05分足、30分足、4時間足の各足で実行していたのですが、
Gemini様から一つのプログラムで各足のデータを出力する
プログラムの提案があり、早速取り入れさせていただきました。(感謝)
ファイル名は UWCSV_Multi.mq4 です。
このプログラムは一度の実行で複数時間足のFX情報を出力できる
プログラムですが、05分足だけは最後の05分だけが出力できません。
理由はわかりませんが、05分足だけは UWCSV_script.mq4
で出力する必要があるので、2種類のプログラムを入力していただく
ようお願いします。
実行する際は30分足で UWCSV_Multi.mq4 を実行し、
05分足で UWCSV_script.mq4 を実行してください。
3回の実行が2回になったので、改善と言えます。
お手数をおかけします。
なお、以前に作成した script とは出力内容が異なって
いますので、前回のものは利用できません。
今回新たに入力お願いします。
プログラム名はこれらの名前でなくても解り易い名前にして
いただければ結構です。
画像 G03_ファイル名登録 参照

登録が終わるとプログラム編集開始画面になりますので、
プログラムを記述します。
画像 G04_プログラム開始 画面参照

プログラムの内容は添付文書
UWCSV_Multi.txt 及び
UWCSV_script.txt の通りです。
(プログラムと同じディレクトリにあるファイルです。)
ファイルの内容閲覧はファイルをダブルクリックすることで
閲覧・編集できます。
通常はWindows標準のメモ帳が起動すると思います。
編集メニューから [全選択]
で選択し、[コピー]メニューで内容をコピーできますので
コピー内容を貼り付けすることで利用出来ます。
プログラムの編集が終わりましたら、上欄メニューの [コンパイル] を
クリックしてください。
画像 G05_コンパイル 参照

入力文字に間違いがあるとエラーが表示されますので、
エラーが表示されたら入力した文字を確認してください。
私の環境ではこのプログラムで動作しています。
書出項目は次の通りです。
(サーバー時間)
日付, 時間, 始値, 高値, 安値, 終値, 現在足05SMA,
現在足20SMA, 1H足20SMA, 4H足20SMA, 日足20SMA,
現在足20BB Lower, 現在足20BB Uper,
1H足20BB Lower, 1H足20BB Uper,
4H足20BB Lower, 4H足20BB Uper,
(ローカル時間)
日付, 時間
です。
BBとあるのはボリンジャーバンドのことです。
前回の出力データより大幅に項目が増えています。
項目の説明はしませんので、興味のある方は独学
願います。
実際のデータは次のようなものです
2025/10/29,23:40,152.643,152.631,152.643,152.619,
152.685,152.255,152.467,151.659,
0.063,49.680,152.534,152.835,151.744,
152.767,151.655,153.278,2025/10/30,06:40
プログラムはドル円に特化しており、
価格は小数点前3桁、小数点以後3桁の6桁で
出力しています。(実際には小数点は無視しています)
ドル円以外の通貨またはMetaTrader 4 以外の
トレーディングソフトを使用しておられる場合は
上記のデータの並びになるようにしてください。
桁数もできれば揃えていただくのが望ましいです。
サーバ時間とローカル時間
プログラムの初めの方で
dft = 3600 * 6; //6時間の時間差(秒で表現)
としてありますが、XMTrading場合サーバが
アフリカの東、セーセル国にあるので
日本との時間差が 6時間になります。
サーバの設置国によって時間差が異なりますので、
時間数を適宜修正願います。
また、米国夏時間の場合、時間差は 6時間ですが、
冬時間の場合、時間差は 7時間になります。
春と秋に時間の変更がありますので、直して
いただきますようお願いします。
Gemini様から自動で夏冬時間を変更するプログラム
の案内があり、取り入れてみましたが、うまく動作
しないようです。
業者によって米国時間の適用時期が異なることに
原因があり、 XMTradingもこれが原因のようなので、
夏冬時間の変更は手動でお願いします。
お手数をおかけします。
既に書出ファイルが存在する場合は、最終行の日時を調べて
次の日時から追加で書き出しています。
(その方が処理時間が短いと思います)
データは過去200日分を使用しますので、
ファイルが大きくなりすぎる場合は、
適宜前データを削除していただいても良いかと思います。
2 書出操作方法
[MT4] の操作方法はしばらく使って慣れるのが一番と思います。
[MT4] を起動して、ドル円の通貨ペアを表示させ、
30分の時間足を選択してください。
画像 G06_MT4起動画面 参照

画像 G07_スクリプト選択画面 参照

左端の [ナビゲータ] ボックスの中の スクリプトを開いていただくと
コンパイルした ファイル名(UWCSV_script.mq4, UWCSV_Multi.mq4)
が表示されますので、30分足の画面で UWCSV_Multi.mq4
を右クリックして[チャートで実行] メニューをクリックして、データ出力。
05分足の画面にして UWCSV_script.mq4 を右クリックして
[チャートで実効]メニューをクリックしてデータ出力。
[End of OutputData] と表示されると書出終了です。
書出はごく短時間で終了するはずです。
3 書き出したファイルの確認
書き出したファイルをファイルエクスプローラで検索してみてください。
Windows(C:) を開くと、末尾の方に [ユーザ]ディレクトリがあり、
[ユーザ]ディレクトリを開きます。
画像 G08_ユーザ 参照

画像 G09_出力したファイル 参照

ユーザディレクトリから ユーザ名、AppData、Roaming
とたどっていくと、 [MetaQuotes] ディレクトリにたどり着きます。
MetaQuotes ディレクトリの中の [Terminal] ディレクトリを
開きますと、 数字が並んだディレクトリがあると思いますので、
その中の [MQL4] ディレクトリの中の
[Files] ディレクトリの中に出力したファイルがあると思います。
ファイル名はUSDJPY30M.CSV などとなっており、
取引通貨ペア名、末尾の数字は時間足を示します。
ファイル名は変更しないでください。
なおファイルは CSV ファイルと呼ばれる形式のファイルで、
ファイルをダブルクリックすると メモ帳 や 表計算ソフト(エクセル)
などで閲覧編集することができます。
なお、表計算ソフトで編集した場合は、 編集結果を
CSV ファイルとして保存する必要があります。
表計算ソフトで保存したファイルが CSV ファイルにならない場合は
ファイルメニューの エクスポート を選択する事で
CSV 形式のファイルに出力できると思います。
画像 G10_メモ帳画面 参照

データを書き出していない場合は次のデータを
USDJPY???.CSV ファイルにコピーして スクリプトを
実行してみてください。
2025/10/29,23:40,152.643,152.631,152.643,152.619,152.685,152.255,152.467,151.659,0.063,49.680,152.534,152.835,151.744,152.767,151.655,153.278,2025/10/30,06:40
2025/10/29,23:45,152.649,152.643,152.647,152.633,152.675,152.255,152.467,151.659,0.060,50.016,152.538,152.812,151.744,152.767,151.655,153.278,2025/10/30,06:45
私の環境では以上のようなディレクトリに保管されています。
ファイルが確認できたら前段処理は一段落です。
初めてFXに触れる方にとっては大変ハードルが高いかと
思われますが、頑張ってください。
お疲れ様です。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
FxYUsJp2 アプリの使用方法
上記の方法で最新のFXデータをダウンロードした上で、
FxYUsJp2.exe ファイルをダブルクリックしてアプリを起動すると
初回だけ、プログラムは config.txt というファイルを探し、
なければCSVファイルの検索を行います。
画像 G11_初期画面 参照

上記 「書き出したファイルの確認」 項目で調べた場所を
辿っていき、30分足のファイル USDJPY30.CSVを選択すると、
プログラムは config.txt ファイルに位置を記録して、
以後は自動で
05分足、30分足、4時間足のCSVファイルを読込ます。
読込には10数秒程度の時間がかかります。
画像 G12_ファイル選択 参照

なお、読込がうまくいかない場合は、
プログラムファイルのあるディレクトリから Config.txt ファイルを
削除して見るなどしてみてください。
ファイルを選択すると
05分、30分、4時間各足とも順次読込ます。
[1:05分]、[2:30分]、[3:4時間]タブ(ページ)共通
各タブ(ページ)上欄 [予測] ボタン
をクリックすると、CSVファイル出力時点の最終値の後
10期の 高値、安値、終値を予測します。
10期というのは05分足ですと10期後(50分後)
までの05分ごとの 高値、安値、終値
のことであり、
4時間足ですと10期後(40時間後)までの
4時間毎の高値、安値、終値のことです。
学習期間:
05分足では初期値40日
30分足及び4時間足では初期値200日
学習回数:
5分足、30分足 1000回
4時間足 600回
学習期間、学習回数は任意に変更可能です。
初期値程度が適当と思われます。
学習期間や学習回数を増やすと学習時間は
長くなります。
例えば200万回の学習回数にすると
私の機械では学習に1日半程度かかりましたが、
予測精度の向上はあまりないようでした。
初期値の場合、学習時間は私の機械では約30秒を
要しました。
予測が終了すると 予測結果のグラフを表示します。
グラフのX軸は時刻、グラフのY軸は金額です。
18:05 と表示してあれば 18時05分を表します。
時刻はローカル時刻のはずです。
時刻がおかしいときはサーバーとの時差を
疑って、スクリプトプログラムを調べてください。
あるいはプログラムを終了させて、CSVファイル出力を
行い、再度プログラムを立ち上げてみてください。
グラフの緑色のラインは予測終値のラインで、
上下の細い赤ラインは高値、安値を表します。
G13_グラフ表示 参照

グラフの下欄
1行目に 実データの最終日時、終値、予測検証ボタンが、
2行目に読込日数、学習回数、MSE誤差、学習時間
MSE誤差(Mean Squared Error:平均二乗誤差)
を表します。
3行目に予測分
4行目に予測値
5行目に実終値
6行目に予測値と実終値の差額
7行目に合否を○×で表示します。
合否は予測時点の最終終値から見て
予測終値と実終値が共に高値または安値
なら当りとして表示しています。
なお、数値は小数点を除いてありますので、見る時は
小数点を補ってください。
予測から適当な時間が経過後に MT4画面で
CSVファイル書出をした上で、
本プログラムを起動し、
下欄右側の [予測検証] ボタンをクリックすると、
予測データと実際のデータの比較をします。
検証は全ての予測を1回で検証します。
また、予測日の欄で ↑↓ キーを押すと、
過去に予測した予測・検証データを見ることができます。
[4:学図] タブ(ページ)
画像 G14_機械学習図 参照

学習が終了して予測値等が表示されると、
[2:機学] ページに機械学習図が表示されます。
この図は mam 様の
FANN(Fast Artificial Neural Network Library)
(Delphiでお手軽プログラミング)
に掲載されているので表示させましたが、
この図がどのような意味を持つのかはわかりません。
右上の MSE(Mean Squared Error:平均二乗誤差)は
予測の際の誤差を表しています。
この数値が小さいほど誤差が少ないことを
表しますが、誤差が少なくても、必ずしも結果が
正しい訳ではありません。
[51:検証] タブ(ページ)
G15_検証表参照

予測及び検証データを記録しています。
この表のままではわかりにくいので、
表の現在行が
1:05分足、2:30分足、 3:4時間足ページに
予測終値、実終値のグラフと共に下欄には。
[1:予測] 画面の [予測] ボタンをクリックするたびに
この表の最終行に予測が追加されます。
ページの左側
5.1: 05分足予測検証表
5.2: 30分足予測検証表
5.3: 4時間足予測検証表
各表とも1-3ページで予測した結果を表示し下欄には。
日付、時刻、最終終値、読込日数、学習回数、MSE誤差、学習分
が表示されます。
各行と右表の明細行を消したいときは消したい行を
クリックして [F12]キー を押下することで消去できます。
ページの右側
各行の10回の予測、検証データが右表に表示されます。
左表をクリックしていただくと、その予測の10回分の予測額を
表示します。
予測期番号、予測終値、実終値、当否、高値、安値、…
他を表示します。
この予測検証行を消したいときは、その行にカーソルがあるときに
[F12]キーを押下することで、
左欄1行と右欄明細行を削除できます。
[52.検証2]タブ(ページ)
G16_検証2 参照

このページを開くだけで、51.検証ページの内容を集計し、
時間足別、各期毎に当り数、外れ数、当り率を表示します。
[6:FX表] タブ(ページ)
画像 G17_FX表 参照

FANN(Fast Artificial Neural Network)
mam様の Delphiでお手軽プログラミング に掲載されている
機械学習用のライブラリを活用して
機械学習し、予測するための入力データです。
SMAなど専門用語を使用していますが、必要ならネットで
検索願います。
機械学習への入力項目
時間他ほとんどの変化率項目は Gemini様の提案です。 (多謝)
時刻は循環であることを示すために
Sin変換 Cos変換しています。
終値: 10期先の変化率。終値は先の変化率(予測項目)
高値、安値: 終値からの乖離率
SLP: 1-3期前からの変化率(スロープ)
M05: 現在足5期のSMA(単純移動平均)の変化率
M20 :現在足20期のSMA(単純移動平均)の変化率
M1H: 1時間足20期のSMAの変化率
M4H: 4時間足20期のSMAの変化率
M45: 4時間足5期のSMAの変化率
ATR: Average True Range 20期平均的な値動き
RSI: Relative Strength Index 14期相対力指数
B0L: ボリンジャーバンド現在足 10期の変化率
B1L: ボリンジャーバンド1時間足 10期の変化率
B4L: ボリンジャーバンド4時間足 10期の変化率
読込データ及び予測データをこのFX表に表示します。
この表は MT4 から出力したFX価格データ(CSVファイル)
から再現できるデータなので、メモリ上の表としています。
プログラムを終了すると表データもなくなります。
このデータを保存したい場合は
[7:CSV]タブ(ページ)を参照願います。
[7:CSV]タブ(ページ)
G18_CSV保存表 参照

CSVファイルは表計算ソフト(エクセル等)などで閲覧可能なファイルです。
保存先はプログラムのあるディレクトリ以下
Data\CSV ディレクトリに保存されます。
F02R05M、F02R20M、F02R4H表はメモリデータベース上のテーブルです。
これらのテーブルは MT4 から出力したFXの価格データ(CSVファイル)
から再現できる、学習のためのデータなので
メモリデータベース上のテーブルとしました。
プログラムを終了すればデータは消えてしまいますので、
必要なら当該項目行にフォーカスがある状態で [書出] ボタンを
クリックすることでテーブル内容をCSVファイルとして保存できます。
F03V05H、F03V30H、F03V4HH、F03VDT
テーブルは保存されていますが必要ならCSVファイルとして
出力できます。
[8:FX表]タブ(ページ)
MT4 からCSVファイルに出力したデータを
一時的にメモリテーブルに読み込んだものです。
プログラムを終了すればデータは消えますが、
CSVファイルを読み込めばファイルは再現されますので
無視してください。
以上
この説明を見ていただくだけでも嬉しいですが、
使っていただければもっと嬉しいです。
また役に立てればこれ以上の幸せはありません。
最後までご覧いただきありがとうございます。
KUROKUWA 拜

コメント