パンローリング トップバー パンローリング Top 相場データCD-ROM オプション倶楽部 トレーダーズショップ/書籍、DVD販売 株式コーナー Pan発行書籍 セミナー 相場アプリケーション パンレポート 掲示板 相場リンク集
メールはこちらまで

通勤のお供に投資の仲間たち携帯版を 携帯版 投資の仲間たち

パンローリング 投資の仲間たち

浜口準之助 林知之優利加太田 創羽根英樹 |  村居孝美 鎌田傳 片岡俊博 ニック 青木智(株の達人)

たけぞうの50億稼いだ男のメルマガ 石原順のメルマガ マーケットの極意 中原圭介と岡村友哉の投資を学ぶ 杉村富生の月刊 株式マガジン イベント投資倶楽部 【オプション倶楽部】OP売坊戦略コース バカラ村式 FX短期トレードテクニック パンローリングチャンネル ファクター分析投資スクール 2024年12月開講 投資戦略フェア EXPO2025


開催予定のセミナーDVD一覧お買い物ブログのホームに戻る

豊嶋久道


1965年山口県生まれ。1988年慶應義塾大学理工学部電気工学科卒業。1993年慶應義塾大学大学院博士課程修了。博士(工学)。大学生のころからC言語プログラミングに親しみ、実用系のフリーソフトウェア、シェアウェアを公開。2003年よりFX取引を始め、システムトレードの道へ。最近ではFXオプション取引も含めた売買システムの研究を行っている。主な著書に『FXメタトレーダー入門』 『FXメタトレーダー実践プログラミング』(パンローリング)がある。
著者WEB:Toyolab FX―手ぶらで為替取引

豊嶋久道の「メタトレーダー実践日記」

MT4のシンボル(通貨ペア)名

06月17日
メタトレーダー4で取り扱う通貨ペア名(プログラム中ではSymbol()で参照)は、通常は、「USDJPY」、「EURUSD」のように、アルファベット6文字で構成されています。

ところが、業者によっては、「USDJPYm」「USDJPYx」「USDJPYFXF」「USDJPYjpy」のように、6文字の通貨ペア名の後に数文字のアルファベットが追加されているケースもあります。

プログラム中で「Symbol()」を使って通貨ペア名を指定している場合は特に問題ありませんが、複数の通貨ペアから別の通貨ペア名を作る場合にはちょっと工夫する必要があります。

例えば、「FXメタトレーダー実践プログラミング」の382ページに対象通貨ペア名と資金の通貨名から別の通貨ペア名を作るプログラムがあります。

string symbol = StringSubstr(Symbol(), 0, 3) + AccountCurrency();

ここで、Symbol()="EURUSDx"、AccountCurrency()="JPY" の場合、"EURUSDx"の先頭3文字と"JPY"が連結されて symbol="EURJPY"となります。

しかし、通貨ペア名の最後に「x」がついている業者では、「EURJPY」という通貨ペアは存在しないため、プログラムが正しく動作しません。

ですから、この場合、最後に「x」がつくように、

string symbol = StringSubstr(Symbol(), 0, 3) + AccountCurrency() + "x";

と書く必要があるのです。あるいは、どういうケースにも対応できるようにするために、

string symbol = StringSubstr(Symbol(), 0, 3) + AccountCurrency() +
StringSubstr(Symbol(), 6, StringLen(Symbol())-6);

と書くこともできます。

最後に付けた部分がちょっと複雑ですが、StringLen()という関数は、パラメータの文字数を返します。ですから、StringLen(Symbol())-6は、通貨ペア名の6文字より多い部分の文字数になります。例えば、最後に「x」が」つく場合、1、「XFX」がつく場合、3となります。そして、StringSubstr()を使って、通貨ペア名の6文字目以降で6文字より多い部分を取り出すわけです。

他に通貨ペア名に余分な文字がついて困るのは、同じEAを複数の業者のMT4で動かす場合でしょう。
もし、そのEAで通貨ペア名のチェックを行う場合、通貨ペア名全体をチェックするより、最初の6文字だけをチェックするようにした方がいいでしょう。

例えば、あるEAを「EURJPY」の通貨ペアのチャートだけで動かしたい場合、

if(Symbol() != "EURJPY") return(1);

では、通貨ペア名が「EURJPYx」のMT4では、チェックできません。通貨ペアに余分な文字がついている場合にも対応するためには、

if(StringSubstr(Symbol(), 0, 6) != "EURJPY") return(1);

として最初の6文字だけをチェックした方が確実でしょう。但し、最初の部分が「EUR/JPY」のように変わってしまうケースには対応できませんので、注意してください。
コメント投稿
ページのトップへ


豊嶋久道氏の著書

FXメタトレーダー
実践プログラミング

高機能システムトレードソフト超活用術

FXメタトレーダー入門
最先端システムトレードソフト使いこなし術

過去のブログ

  • 11年09月
  • 11年04月
  • 11年03月
  • 10年12月
  • 10年10月
  • 10年09月
  • 10年08月
  • 10年06月
  • 10年03月
  • 10年02月
  • 10年01月
  • 09年12月
  • 09年10月
  • 09年09月