MT4のsymbols.rawなどを参照、編集するツール「Symbols Viewer and Editer for MT4」


MT4のsymbols.sel、symbols.raw、symgroups.raw、ticks.rawの内容を参照するツールです。
一部の項目については編集することもできます。
また、ヒストリカルデータ(*.hst)の通貨ペア名(シンボル名)を変更することもできます。

MT4SymVEの画面イメージ

MT4の画面で確認できる情報はFX業者によって多少異なるようです。
例えば、「通貨ペアリスト」画面の「設定」ボタンをクリックして表示される「取引条件」画面の中に買いや売りのスワップが表示されるFX業者と表示されないFX業者があります。
(作成者の環境ではYJFXとOANDAは表示されず、FXTFと外為ファイネストは表示されていました)

当ツールを使用するとFX業者に関係なくすべての情報を参照できますし、FX業者ごとの違いも比較して見れます。
MarketInfo関数やSymbolInfoInteger関数などを使用してもこれらの情報を取得できますが、スクリプトを作成するのが面倒であればこのツールを使用するのも良いでしょう。


symbols.sel、symbols.raw、symgroups.rawに対しては一部の項目を編集できます。
なので、スワップを好きな値に変更してからEAのテストを行うこともできます。

ちなみに、シンボルの色も変更できます。「だから何?」と言われればそれまでですが…(笑)
(下の画像は通貨ペアAUDUSD-cdの色を緑色に変更したときの表示例)
シンボルの色を変更したときの表示例


ヒストリカルデータ(*.hst)の通貨ペア名(シンボル名)を変更することもできます。
GMOのヒストリカルデータをMT4用に変換するツール「GMOtoMT4」で作成したヒストリカルデータをFXTFの1000通貨コースのMT4で使用する場合、シンボル名が異なるのでそのままでは使用できません。
シンボル名を「USDJPY」から「USDJPY-cd」のように「-cd」を付与する必要があります。(ファイル名の変更も必要です)
このような場合、当ツールで通貨ペア名(シンボル名)を変更すればFXTFの1000通貨コースでも使用できるようになります。

ファイルはMT4用のトップページからダウンロードできます。

補足:編集機能はスワップを変更することが主な目的です。(EAのテストのために)
それ以外の項目も変更できるのはオマケです。「ついでなんでとりあえず作ってみた」ってやつです。(^_^;)

注意:編集したファイルはオフライン状態のMT4でのみ使用してください。
オンライン状態、特に取引を行っているMT4で使用するとどのような不具合が発生するかわかりません。


導入方法(インストール)

ダウンロードしたZIPファイルを適当なフォルダに展開(解凍)してください。

補足:ZIPファイルはMT4用のトップページからダウンロードできます。

注意:「C:\Program Files\」や「C:\Program Files (x86)\」フォルダ配下には展開しないでください。正しく動作しない可能性があります。


削除方法(アンインストール)

当ソフトを終了し、上記インストール時に作成したフォルダごと削除してください。
当ソフトはレジストリを使用していません。


使い方(symbols.sel等の参照)

  1. メニューの「ファイルを読み込む」をクリックします。
  2. 英数字32桁くらいの長いフォルダ名をダブルクリックします。

    補足:複数のMT4をインストールしている場合は長いフォルダ名が複数できていると思います。
    参照したいファイルがどのフォルダ内にあるか知りたい場合はMT4のメニュー「ファイル」から「データフォルダを開く」をクリックして表示されるエクスプローラーのパス名を確認してください。

  3. 「history」フォルダをダブルクリックします。
  4. 参照したいファイルが存在するフォルダをダブルクリックします。

    補足:作成者の環境では業者名(YJFXとかFXTFとか)が含まれているフォルダ内に参照したいファイルが存在していました。

  5. symbols.sel、symbols.raw、symgroups.raw、ticks.rawのいずれかを開いてください。
    どれを開いても結果は同じです。

    補足:2回目以降からは前回開いたフォルダが表示されるので、上記2.~4.の操作は省略できます。

  6. あとは画面上部のタブから参照したいファイルを選択し、画面左側の一覧から参照したい通貨ペア等を選択してください。

使い方(symbols.sel等の編集)

  1. 上記「使い方(symbols.sel等の参照)」で編集したいファイルを読み込みます。
  2. メニューの「自己責任で編集する」をクリックしてチェックを入れます。
  3. 編集したいファイル、通貨ペア等を選択します。
  4. 編集したい項目の「値」をクリックします。(カーソルキーで移動してEnterキー押下でも可)
  5. 編集可能な状態になったら値を変更します。(変更後はEnterキーで確定)

    補足:symbols.rawの「シンボルの色」とsymgroups.rawの「グループの色」の場合は「色の設定」画面が表示されますので、色を選択後、「OK」ボタンをクリックしてください。

  6. 編集したい項目の値をすべて変更したら、メニューの「ファイルに保存する」をクリックしてください。
    複数の通貨ペアに対して編集を行いたい場合は通貨ペアごとに3.~6.の操作を繰り返してください。

    注意:保存する前に画面左側の一覧をクリックしたり別の通貨ペアに変えたりすると、変更した値は変更前に戻ります。その場合は再度編集し直す必要がありますので注意してください。(複数通貨ペアに対する同時編集は不可)
    また、画面上部のタブを切り替えて別のファイルの情報を表示、編集することができますが、保存されるのは画面に表示されている情報の分だけです。複数のファイルを同時に編集した場合は各ファイルごとに保存を行ってください。


使い方(ヒストリカルデータの通貨ペア名を変更)

  1. メニューの「ヒストリカルデータの通貨ペア名変更」をクリックし、変更したいヒストリカルデータを開いてください。

    補足:2回目以降からは前回開いたフォルダが表示されます。

  2. 「ヒストリカルデータの通貨ペア名変更」画面の「変更後の通貨ペア名」を入力し「変更する」ボタンをクリックします。
    (下の画像は通貨ペア名をAUDJPY-cdに変更する場合の例)
    ヒストリカルデータの通貨ペア名変更画面

    補足:変更されたファイルは変更前のファイルと同じフォルダに保存されます。
    ファイル名は変更後の通貨ペア名になっています。


使い方(メニューの説明)

MT4SymVEのメニュー

ファイルを読み込む

参照または編集したいsymbols.sel等を読み込みます。

補足:ファイルを読み込むとタイトル名にフォルダ名が付与されるので、当ツールを複数起動して異なるFX業者のファイルを同時に参照する場合はタイトル名を見ると判断しやすくなります。
フォルダ名が付与されたタイトル名

注意:4つのファイル(symbols.sel、symbols.raw、symgroups.raw、ticks.raw)が揃っていない場合はエラーになります。エラー発生時の動作は保証できません。

自己責任で編集する

ファイルを編集したい場合、クリックしてチェックを入れます。
再度クリックするとチェックが外れます。

注意:ファイルの編集にはリスクが伴います。このメニューは容易に編集できないようにするための処置です。
また、編集したファイルはオフライン状態のMT4でのみ使用してください。
オンライン状態、特に取引を行っているMT4で使用するとどのような不具合が発生するかわかりません。

ファイルに保存する

編集した内容を元のファイルに対して上書き保存します。
別ファイル名での保存は行われませんので、元のファイルを残しておきたい場合は予めバックアップしておいてください。

補足:ファイルに保存されるのは後述の「各ファイルについて」で編集可能になっている項目だけです。
画面上の操作では編集可能ではない項目の変更もできますが保存はされません。

ヒストリカルデータの通貨ペア名変更

ヒストリカルデータの通貨ペア名(シンボル名)の変更を行います。

変更されたファイルは変更前のファイルと同じフォルダに保存されます。
ファイル名は変更後の通貨ペア名になります。

補足:これは単独の処理なので予めsymbols.sel等を読み込む必要はありません。

設定(加算する年数~時間)

各ファイル内の一部の項目(日時など)に対して加算する年数等を指定します。

MT4の日時はunix時間(1970-01-01 00:00:00)からの経過秒数だと思っていますが、それだと時間にずれが発生するので仕方なく調整用の設定項目を追加しました。
原因が作成者の環境なのか、勘違いなのか、プログラムが悪いのか、わかりません。
申し訳ございませんが、何らかの不具合があれば利用者側で調整してください。
その際、調整値やMT4の業者名などの情報を掲示板(MT4専用)に投稿していただけると助かります。

ヘルプを開く

オフラインヘルプ(このHTML文書)を表示します。

終了

当ツールを終了します。


各ファイルについて

それぞれのファイルに格納されている情報の開始位置や長さ、各項目の説明および編集可能な項目は以下のとおりです。
また、説明には参考にしたファイル(C++のヘッダファイル)のコメント(英文)を原文として記述しています。

なお、以下の情報は実際のデータやネット情報などを調べながら記述していますが、誤った記述が含まれているかもしれません。
その点はご了承ください。

symbols.sel内にある各通貨ペアの情報
位置 長さ 説明 編集
0 12 原文:Symbol

通貨ペアのシンボル名です。
Symbol関数で返される値です。
なので、例えばFXTFの1000通貨コースの場合は「USDJPY-cd」など「-cd」が含まれたシンボル名になります。

12 4 原文:Digits

通貨ペアの価格精度(小数点以下の桁数)です。
Digits関数で返される値です。

16 4 原文:symbol id as in "symbols.raw"

symbols.raw内の該当する通貨ペアの番号です。
番号はsymbols.raw内の最初の通貨ペアが「0」番、次が「1」番(以降1ずつ増加)になるようです。
symbols.selとsymbols.rawを紐付けるための番号だと思われます。

×
20 4 原文:always 0x0001

不明。常に「1」らしいです。

×
24 4 原文:symbol group id as in "symgroups.raw"

symgroups.raw内の該当するグループの番号です。
番号はsymgroups.raw内の最初のグループが「0」番、次が「1」番(以降1ずつ増加)になるようです。
symbols.selとsymgroups.rawを紐付けるための番号だと思われます。

×
28 4 原文:-(説明無し)

不明。

×
32 8 原文:point size

通貨ペアの価格の小数点数値です。
Point関数で返される値です。

40 4 原文:0=current spread (variable), otherwise fixed spread in points

スプレッドです。
「0」は可変スプレッドを意味するようです。
固定スプレッドの場合は「1」以上の値が設定されているようです。

44 4 原文:-(説明無し)

不明。

×
48 4 原文:last tick type: 0=uptick, 1=downtick, 2=n/a

不明。

52 2 原文:always 0x0100

不明。常に「0x0100(10進数で256)」とありますが、「0」の場合もあるようです。

×
54 2 原文:variable (many times NULL)

不明。

×
56 4 原文:time

最後に受信したtickの受信時間(サーバー時間)です。

×
60 4 原文:-(説明無し)

不明。

×
64 8 原文:bid

最後に受信した売値です。

72 8 原文:ask

最後に受信した買値です。

80 8 原文:session high

当日の高値です。

88 8 原文:session low

当日の安値です。

96 16 原文:variable (many times NULL)

不明。

×
112 8 原文:bid (repeated)

最後に受信した売値と同じ値になっていますが、詳細は不明です。

120 8 原文:ask (repeated)

最後に受信した買値と同じ値になっていますが、詳細は不明です。


symbols.raw内にある各通貨ペアの情報
位置 長さ 説明 編集
0 12 原文:symbol

通貨ペアのシンボル名です。
例えばFXTFの1000通貨コースの場合は「USDJPY-cd」など「-cd」が含まれたシンボル名になります。

12 64 原文:description

シンボルの説明です。
通貨ペアリストの通貨ペア名(シンボル名)の右側に表示されてます。

76 12 原文:alt name

通貨ペアの代替名です。
通貨ペアのシンボル名(symbol)と異なる場合に設定されているようです。
例えばFXTFの1000通貨コースの場合、シンボル名が「USDJPY-cd」だと「USDJPY」が設定されています。

88 12 原文:base currency

基準通貨です。
通貨ペアの左側の通貨名が設定されていると思ったのですが、仮想通貨の場合は右側が設定されていました。
例えば「AUDUSD」や「USDJPY」だと左側の「AUD」や「USD」が設定されていますが、「BCCJPY」や「BTCJPY」や「MONAJPY」だと右側の「JPY」でした。

100 4 原文:index of group in "symgroups.raw"

symgroups.raw内の該当するグループの番号です。
番号はsymgroups.raw内の最初のグループが「0」番、次が「1」番(以降1ずつ増加)になるようです。
symbols.rawとsymgroups.rawを紐付けるための番号だと思われます。

×
104 4 原文:digits

通貨ペアの価格精度(小数点以下の桁数)です。

108 4 原文:0=No|1=CloseOnly|2=Full

トレードモードです。
「0」がトレード禁止、「1」が決済のみ許可、「2」が制限無しです。
ちなみに、YJFXは「0」、OANDAは「2」でした。

112 4 原文:color in "Market Watch" window

「気配値表示」画面に表示されているシンボル(通貨ペア)の色です。
下の画像は通貨ペアAUDUSD-cdの色を緑色に変更したときの例です。
シンボルの色を変更したときの表示例

116 4 原文:unique symbol id

symbols.raw内の通貨ペアの順番(番号)です。
順番(番号)はsymbols.raw内の最初の通貨ペアが「0」番、次が「1」番(以降1ずつ増加)になるようです。

×
120 1508 原文:-(説明無し)

不明。

×
1628 4 原文:-(説明無し)

不明。

×
1632 8 原文:-(説明無し)

不明。

×
1640 8 原文:-(説明無し)

不明。

×
1648 12 原文:-(説明無し)

不明。

×
1660 4 原文:spread in points: 0=current online spread (variable)

スプレッドです。
「0」は可変スプレッドを意味するようです。
固定スプレッドの場合は「1」以上の値が設定されているようです。

1664 16 原文:-(説明無し)

不明。

×
1680 8 原文:swap long

買いポジション(ロング)時のスワップです。

EAのテストでスワップを好きな値に変更したい場合はこの項目を変更したら良いと思いますが、スワップの計算方法はFX業者によって異なるようです。
また、スワップの表示形式には「ポイント形式」と「パーセント形式」があるようです。
とりあえず、

・ポイント形式の場合の計算方法
 契約サイズ×取引数量×最小価格変動値×スワップの数値

・パーセント形式の場合の計算方法
 通貨ペアのレート×スワップの数値÷100×取引数量÷365

という情報をネット検索で入手したのですが、例えば「スワップを50円にしたい」といった場合、実際どのような値を入れたら良いのかわかりません。

なので、「スワップを『0』に設定してスワップを含めない差金決済だけの損益でEAを評価したい」という使い方しか思いつきません。

1688 8 原文:swap short

売りポジション(ショート)時のスワップです。

スワップ変更については「買いポジション(ロング)時のスワップ」を参照。

1696 4 原文:Day of week to charge 3 days swap rollover.

スワップが3日分付与される曜日です。
日曜日が「0」で月曜日が「1」と続き土曜日が「6」になるようです。

1700 4 原文:-(説明無し)

不明。

×
1704 8 原文:lot size in units

1ロットあたりの通貨枚数です。

1712 16 原文:-(説明無し)

不明。

×
1728 4 原文:stop distance level

リミットストップレベルです。
値はpoints単位のようです。

1732 12 原文:-(説明無し)

不明。

×
1744 8 原文:margin init (0 = ContractSize)

1ロットの初期証拠金らしいです。詳しくは知りません。

1752 8 原文:margin maintenance (0 = ContractSize)

1ロットの初期証拠金(計算モード)らしいです。詳しくは知りません。

1760 8 原文:margin hedged

1ロットの必要証拠金らしいです。詳しくは知りません。

1768 8 原文:leverage calculation:
   0...5 = relative to account leverage (ie. 0.83333 = AccountLeverage/MarginDivider)
   > 10 = absolute custom leverage (ie. 100 = 1:100)

レバレッジ(の計算方法?)らしいです。詳しくは知りません。

1776 8 原文:point size

通貨ペアの価格の小数点数値です。

1784 8 原文:points per unit

1通貨あたりのポイント数です。

point(s)はMetatrader独自の単位らしく、各通貨ペアで扱える最小変動幅を指すそうです。
例えば、USDJPYの1pointが0.001円の場合、1通貨つまり1円は1000pointsに、
EURUSDの1pointが0.00001ドルの場合、1通貨つまり1ドルは100000pointsに、
なるらしいです。

1792 24 原文:-(説明無し)

不明。

×
1816 12 原文:margin currency

証拠金の通貨です。

1828 104 原文:-(説明無し)

不明。

×
1932 4 原文:-(説明無し)

不明。

×

symgroups.raw内にある各グループの情報
位置 長さ 説明 編集
0 16 原文:group name

「通貨ペアリスト」画面に表示されているグループ名です。

16 60 原文:group description

グループの説明です。
どこに表示されているのかわかりません。

先頭に「?」が表示される場合がありますが、それは実際のデータの先頭1文字がNull値で表示不可だったので当ツールで「?」に変換して表示させているものです。なぜNull値になっているのかは不明です。

76 4 原文:group color in "Market Watch" window, may be overwritten by SYMBOL.color

グループの色らしいですが、どこに表示されているのかわかりません。


ticks.raw内にあるTickの情報
位置 長さ 説明 編集
0 12 原文:symbol

通貨ペアのシンボル名です。
例えばFXTFの1000通貨コースの場合は「USDJPY-cd」など「-cd」が含まれたシンボル名になります。

×
12 4 原文:timestamp

Tickを受信したときの時間(サーバー時間)みたいです。

×
16 8 原文:bid

Tickを受信した売値みたいです。

×
24 8 原文:ask

Tickを受信した買値みたいです。

×
32 4 原文:consecutive tick counter

連続ティックカウンターです。
通貨ペアのシンボル名に関係なくTickを受信するごとに1つカウントアップしているみたいです。

×
36 4 原文:-(説明無し)

不明。

×

ソースについて

最低限必要なソースのみ添付されています。リソースファイル(.res)などは添付されていません。


更新履歴

リリース日 バージョン 内容
2019/01/23 1.0.0.0 初リリース