由利恵? #蒲田さん
FXとは「Foreign Exchange(フォーリン・エクスチェンジ)」の頭文字を取った言葉である。
正式名称は、「外国為替証拠金取引」である。
円や米ドルなどといった通貨の交換を行い、その差額で損益が決まる。
為替レートは常に変動しており、通貨の価値は一定ではない。
例えば、需要が高い通貨は買われ、低い通貨は売られる。
FXは、この為替レートの変動を利用して損益を発生させる投資である。
ゴールデンクロスとは短期の移動平均が中期の移動平均を下から上へクロスすることであり、買いのサインと言われている。
デッドクロスとは短期の移動平均が中期の移動平均を上から下へクロスすることであり、売りのサインと言われている。
今回はこの2つを使って自動売買を行った。
#ref(): File not found: "1.png" at page "静的,空間的データ利活用(FX関連IDX)"
過去の値動きを表す移動平均線に、過去の値動きから計算される値動きの幅の目安となる線を加えたものである。目安の線の価格帯をバンドと呼ぶ。チャートに設定するには、「σ(シグマ)」という値を入れる。統計学的に価格がその移動平均線の上下のバンドの間で動く確率を想定している。
順張り
レンジ相場でバンドが挟まっている状態で、バンドの拡大をともなって相場が動いた際にはそのトレンドの方向に順張りでエントリーするという手法である。ボリンジャーバンドの開発者はこの方法を推奨していると言われている。
他にもいろいろな方法がある。 今回はこの方法で自動売買をしていないが、またチャレンジしたい。
#ref(): File not found: "2.png" at page "静的,空間的データ利活用(FX関連IDX)"
・MetaTrader5
以下のページを見ながら環境構築を行った。
MetaTrader5とPythonによる自動売買
slippage、stoploss、takeprofitを3に変更したプログラムコードを以下に示す。(もともとのコードはこの3つは5であった。)
#ref(): File not found: "3.png" at page "静的,空間的データ利活用(FX関連IDX)"
次にslippage、stoploss、takeprofitを10に変更したプログラムコードを以下に示す。
#ref(): File not found: "5.png" at page "静的,空間的データ利活用(FX関連IDX)"
slippage、stoploss、takeprofitを3に変更して、30分動かした結果を以下に示す。もともと100,000円あったが一気に減った。
#ref(): File not found: "4.png" at page "静的,空間的データ利活用(FX関連IDX)"
次にslippage、stoploss、takeprofitを10に変更して、30分動かした結果を以下に示す。だいだい1,000円ぐらい儲かった。
#ref(): File not found: "6.png" at page "静的,空間的データ利活用(FX関連IDX)"
slippage、stoploss、takeprofitを3に変更したときは何かの間違いかもしれないが大きく負けた。10に変更したときは少し勝ったのでやはり投資系は長い目で見た方が良いと思われる。
FXとは?どのような投資?初めての方でも知っておきたい9つの基礎知識
https://www.oanda.jp/lab-education/beginners/aboutfx/fx_trading/
売り時買い時どんな時? テクニカル分析学び時!
https://www.japannetbank.co.jp/investment/fx/analysis.html
FXや金,株価のtickを取得しそれらから時間足データを作成する.時間足データを用いて テクニカル分析,グレンジャー因果性分析をすることでオンラインのデモトレードを行う.
とりあえず、WSL2のインストールから始める。
管理者権限でPowerShellを開き、次のコマンドを入力する。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
次に、同じくpowershellでwindowsのどのシステムを使用しているか次のコマンドで確認する。
systeminfo | Select-String "システムの種類"
コマンドプロンプトの場合はこれ
systeminfo | find "システムの種類"
次にwindowsのバージョンを確認する。バージョンとビルド番号を確認するには、 Windows ロゴ キー + R キー を押して、「 winver 」と入力し、 [OK] を選択します。 (または、Windows コマンド プロンプトで ver コマンドを入力します)。 一つ前の手順で調べたシステムに必要な最新の Windows バージョンを満たしてない場合、更新します。
WSL 2 をインストールする前に、" 仮想マシン プラットフォーム " オプション機能を有効にする必要があります。管理者として PowerShell を開き、以下を実行します。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
お使いのパソコンを再起動して WSL のインストールを完了し、WSL 2 に更新します。
次にWSL2Linuxカーネル更新プログラムパッケージをダウンロードする。システムがx64の場合はx64、ARM64の場合はARM64をクリックする。
ダウンロード後、ダウンロードしたファイルを実行する。
次に、次のコマンドで、新しい Linux ディストリビューションをインストールする際の既定のバージョンとして WSL 2 を設定します。
wsl --set-default-version 2
次に、Ubuntu 20.04 LTSをMicrosoft Storeからインストールする。 下のリンクに行って入手を選択する。
複数のデバイスで使うか聞かれたら必要ないと答える。
その後、起動し、ユーザー名とパスワードを設定する。もちろん、どちらも覚えるか記録しておく。
このユーザー名およびパスワードは、インストールする Linux ディストリビューションごとに固有であり、Windows ユーザー名とは関係ありません。 ユーザーがユーザー名およびパスワードを作成すると、そのアカウントがディストリビューションの既定のユーザーとなり、起動時に自動的にサインインされます。 このアカウントは、Linux 管理者と見なされ、sudo (Super User Do) 管理コマンドを実行できます。
以下のサイトを参考にして行った。
参考サイト第九回 MT5とPythonを連携してみよう!
pythonは予めインストールされているものとする。
また、プログラムの見やすさや、実行のしやすさにおいて、visual stdio codeを使ってpythonを書くのがおすすめ。
(うまくPythonがインストールできない事例があったのでインストールの流れ書いておきます)
リンク先確認:Pythonのインストール方法(Windows)
ubuntuの場合,pipが初期でインストールされていない?からインストールしなきゃいけない.
sudo apt install python3-pip
でインストール.
Win10ではコマンドプロンプトを起動し、必要なライブラリをインストールする。
インストールの仕方はコマンドプロンプトで
pip install MetaTrader5
のように入力してインストールする。
今回インストールが必要なのは、
(インジケータの計算に利用するTA-Libはインストールの仕方が特殊なため、後述する)
その後以下のサイトからMT5をインストールする。
※ここでのMT5は前述したpip install MetaTrader5のMT5とは名前が同じだけで別物。
下記のリンクでインストールするものはアプリ
MetaTrader 5をダウンロードしましょう
MT5での最低取引量は0.01lot(10000通貨)なので残高は大体10万以上にしておくべき
MT5の左上のファイル→デモ口座を開くから残高を増やすことができる
参考サイトWindows環境のPythonでTA-Libを使えるようにする
「スタート」→「コントロールパネル」→「システムとセキュリティ」→「システム」ここに書いてある「システムの種類」が32ビットなのか64ビットなのかを覚えておく。
python -Vと入力するとpythonのバージョンが確認できる。
TA_Lib‑0.4.17‑cp36‑cp36m‑win_amd64.whlこれをダウンロードする。「win_amd64」がパソコンのビット数を指し、「cp36」がpythonのバージョンを指している。ここが自分の環境に合ったものをダウンロードする。
python -m pip install TA_Lib‑0.4.17‑cp36‑cp36m‑win_amd64.whlと打ち込む。(TA_Lib以下を自分がインストールしたものに書き換えるのを忘れずに)
Successfully installed ~~~と表示されたら完了。
注意点として、口座番号は上記で作ったXMの口座IDである。
最初に自分が取引に使用する市場の気配値を表示させる.
※もし、ウィンドウが出てきたらで自動売買の許可にチェックを入れる。
#ref(): File not found: "MT5準備.png" at page "静的,空間的データ利活用(FX関連IDX)"
その後、上のタブからツール→オプションで下記の画像の箇所にチェックを入れ、OKを押す。
#ref(): File not found: "5.png" at page "静的,空間的データ利活用(FX関連IDX)"
これでMT5はpythonを用いたオーダーリクエストに応じてくれるようになり、アルゴリズムトレードが可能になる。
MT5から市場のtickデータを取得し,common.csvで指定した時間足ごとにリサンプリングを行いcsvに保存する.これらを各市場に対して行う.
#ref(): File not found: "15.png" at page "静的,空間的データ利活用(FX関連IDX)"
tickdata.pyやgolddata.pyなどの流れは以下のようになっている.
OHLCVが保存されたcsvは指定した行数に達すると,古い順から削除され最新のデータが入るようになっている
tickdata.pyやgolddata.pyはバックグラウンドで常に動かしておき,データを貯め続ける.
csvファイルから時間足データを取得し,使用するインジケーターそれぞれを同時に最適化,最適なパラメータをそれぞれ保存.すべての市場に対して行う
#ref(): File not found: "backtest.png" at page "静的,空間的データ利活用(FX関連IDX)"
各インジケーターの最適化プログラム(indi_@@@.py)の流れは以下のようになっている.
各indi_@@@.pyのプログラムはバックグラウンドで常に動かしておき,最適なパラメータを更新し続ける.
円ドルや株価などの異なる市場間の分析を行う.時間足データを用いてグレンジャー因果分析また相関を求める.
#ref(): File not found: "市場間分析.PNG" at page "静的,空間的データ利活用(FX関連IDX)"
causal.pyの流れとしては単位根検定,共和分検定を行った後に,グレンジャー因果分析に使用できると判断された市場データを用いてVARモデルを推定し グレンジャー因果分析を行う。相関はすべての市場で求めて、因果性の有無と相関をまとめた情報をcausal.csvに保存する.
このプログラムもバックグラウンドで常に動かす.
詳しくは木下のところにある参考文献から勉強してください.
プログラムを実装するにあたり参考にしたサイトも張っておきます。
バックテストにおいて時間足を選択しパラメータの選択を行った.今度はそれらが保存されたcsvを用いて最適な時間足のおけるパラメータを使用して現在の市場を分析した際,売買シグナルが出ているのかということを抽出する.
#ref(): File not found: "シグナル.png" at page "静的,空間的データ利活用(FX関連IDX)"
画像のように各市場対する各インジケータのシグナルをcsvに保存する.これも常に動かす
#ref(): File not found: "teian3.PNG" at page "静的,空間的データ利活用(FX関連IDX)"