FXシステムの使い方(シグナル配信) (2017/05/27)

FXシステムを用いたシグナル配信のやり方について簡単に説明する。シグナル配信といっても、多くの人に一斉にシグナルを配信するというのではなく、単に自分に配信するだけである。配信はメールで行う。

例として「~/py/sample_strategy.py」というファイルに戦略(トレードルール)が書かれているとする。通貨ペアはUSDJPY、足の種類は5分足とする。

シグナル配信

$ python ~/py/sample_strategy.py --mode signal --symbol USDJPY --timeframe 5

シグナル配信はトレードと同様で端末を使う。

シグナル配信の場合、「--mode signal」と設定する。

端末への出力は「年.月.日 時:分:秒 戦略 通貨ペア 足の種類 ユニット数」となっている。

シグナル配信は保有ポジションに変動があったタイミングで指定したメールアドレスにメールが送信される。メールの件名は戦略名となっており、本文は「[通貨ペア] [ユニット数(通貨数)][レート]」となっている。

ユニット数は買いポジションの場合はプラス、売りポジションの場合はマイナスである。レートは売値である。

シグナル配信を終了する場合は単に端末を閉じればいい。

OANDA用設定ファイルの作成 (2017/05/10)

OANDA用の設定ファイルを作成する。設定は毎回、コマンド入力してもいいのだが、それでは面倒臭い。そこで毎回使う設定はファイルに記述しておく。

①以下の設定を「settings.ini」ファイルとして「~/py」フォルダーに保存する。

[DEFAULT]
environment = practice
account_id = 1234567
access_token = 1234567890123456789012345678901-2345678901234567890123456789012
fromaddr = abcd@yahoo.co.jp
password = 12345678
toaddr =abcd@example.com
folder_ea = .wine/drive_c/"Program Files (x86)"/"OANDA - MetaTrader"/mql4/Files

②自分の環境に合わせて設定内容を変更し、保存する。

  • environment: 口座の種類を設定するもので、デモ口座の場合は「practice」と入力する。
  • account_id: 「OANDA REST APIの準備」でメモしたアカウントIDを入力する。
  • access_token: 同じく「OANDA REST APIの準備」でメモしたアクセストークンを入力する。
  • fromaddr: 送信元メールアドレスを入力する。戦略のシグナルをメールで送信したい場合、このアドレスで送信する。また、ここではyahooメールを利用することとする。
  • password: 送信元メールアドレスのパスワードを入力する。
  • toaddr: 送信先メールアドレスを入力する。戦略のシグナルをメールで受信したい場合、このアドレスで受信する。これはどこのメールでも構わない。
  • folder_ea: MT4の「Files」フォルダーのパスを入力する。パスはMT4のインストール先によって設定例と違う場合もある。これは戦略のシグナルをEAに送信し、EAで執行したい場合に使う。

FXシステムのダウンロード (2017/04/13)

ここで言う「FXシステム」とは私が作成した「forex_system.py」ファイルのことである。

以下のコマンドを実行して「forex_system.py」ファイルを「~/py」フォルダーにダウンロードする。

$ wget -P ~/py https://raw.githubusercontent.com/fxst24/fxst24/master/forex_system/forex_system.py

ランダムウォーク・データの作成 (2017/04/11)

ランダムウォークのデータを作成する。作成にあたってはUSDJPYのデータの日時を利用しているので、あらかじめ「ヒストリカルデータの加工」でデータを作成しておく必要がある。

import forex_system as fs
fs.get_randomwalk_data()

開始日と終了日はUSDJPYと同じになるので指定する必要はない。作成される足の種類もUSDJPYと同じである。

デフォルトの設定では1分足の単位で平均=0.0、標準偏差=0.01 / sqrt(1440)、歪度=0.0の正規分布に従うランダムウォークのデータが作成される。日足での標準偏差が0.01(1%)となるイメージである。

デフォルトとは違う設定で作成したい場合は以下のようにする。

import forex_system as fs
fs.get_randomwalk_data(mean=-0.00001, std=0.0005, skew=1.0)

この場合、平均=-0.00001、標準偏差=0.0005、歪度=1.0の非正規分布に従うランダムウォークのデータが作成される。歪度が0ではないのでランダムウォークと呼ぶのは正しくないかもしれないが、ここではランダムウォークとして扱う。

FXシステムの使い方(トレード) (2017/04/11)

FXシステムを用いたトレードのやり方について簡単に説明する。

例として「~/py/sample_strategy.py」というファイルに戦略(トレードルール)が書かれているとする。通貨ペアはUSDJPY、足の種類は5分足とする。

ライブ口座で絶対に使用してはならない

初めに断っておくが、ライブ口座では絶対に使用してはならない。トレード機能は試験的なものである。トレード中に起こりうる様々な障害に対し、必ずしも対応していない。

実際、サーバー側で障害が起きたときなどにエラーとなって、そのまま復帰できないことがある。その頻度は数日に1回程度はある。したがって、安心して資金を預けられるようなレベルのものではない。

私自身はデモ口座で稼働し、シグナルをメールで送信させ、それを参考に手動でトレードしている。

トレード

$ python ~/py/sample_strategy.py --mode trade --symbol USDJPY --timeframe 5

トレードはバックテストのときとは違って端末を使う。SpyderやJupyderからでも実行できるが、途中で止まってしまうことがある。

トレードの場合、「--mode trade」と設定する。スプレッドや検証期間は必要ないので設定しない。

デフォルトの設定ではロット数は0.1、損切り、利食いはしない、となっている。変更したい場合は「--lots 1.0」、「--sl 5.0」、「--tp 5.0」などのようにする。損切り、利食いの単位はpipsである。

また、やはりデフォルトの設定ではメール通知あり、MT4への通知なしとなっている。変更したい場合は「--mail 0」(メール通知なし)、「--mt4 1」(MT4への通知あり)とする。

メールで通知する設定にした場合、買いエントリー、買いエグジット、売りエントリー、売りエグジットが発生したタイミングで指定したメールアドレスにメールが送信される。その場合、件名は戦略名となっており、本文は「[通貨ペア]を[レート]で買い(売り)エントリー(エグジット)です。」となっている。

MT4へ通知する設定にした場合、MT4の「MQL4/Files」フォルダーに戦略名と同じ名前のcsvファイルを作成し、シグナルを書き込む。シグナルは売りの場合は「1」、ノーポジションの場合は「2」、買いの場合は「3」が書き込まれる。

初めは-1、0、1のようにするつもりであった。だが、シグナルが書き込まれると同時にMT4のEAがそれを読み込もうとした場合、EAは読み込めずにすべて「0」と判断してしまうようだ。

「0」をノーポジションに設定すると、EAは間違えて保有しているポジションを決済してしまう。そういうこともあって、それぞれに2を加えて0を使わないようにした。

出力は「年.月.日 時:分:秒 戦略 通貨ペア 足の種類 シグナル」となっている。

「シグナル」は売りなら「-1」、ノーポジションなら「0」、買いなら「1」と表示される。単にシグナルがそうなっている、というだけであって、実際のポジション状況を反映しているわけではない。

トレードを終了する場合は単に端末を閉じればいい。