*

第13回:コードに汎用性を持たせる~”USDJPY”よりSymbol()~

公開日: : FX自動売買開発 , , , ,

MT4で設定を変更ができるような記述をする

これまでに様々なコードを扱いましたが、
これまでの書き方では毎回設定や数値を変更するたびに
ソースコードを編集しなければなりません。

今回はなるべくコードを編集せずに、
MT4側で設定を変更できるような記述を取り扱います。
※パラメータ化は今回は行いません。

例えば、
通貨ペアを指定する場面で”USDJPY”と指定してしまうと、
“USDJPYmajor”、”USDJPYminor”等のようになっている特殊なMT4ブローカーの場合、
正しく処理されません。

上記のようにSymbol()
(現在MT4で選択されている通貨ペア)を使うことにより、
MT4側の変更がEAに反映されるようになります。

また、
時間足についてもPERIOD_M5などを使うと、
たとえチャートが1時間足になっていたとしてもEAでは5分足で計算してしまいます。

のように「Period()」もしくは「0」と入力することにより汎用性が増します。

どの通貨ペアでも使えるpips単位を作る

pips単位について困ったことはありませんか。

現在多くのMT4業者ではドル円の最小単位が0.001となっています。
一昔前までは0.01だったこともありここに様々な問題が発生しています。

トレードでの話では1pips = 1銭 = 0.01 を表しますが、
MT4の最小桁は0.01か0.001の場合があります。

そのため、どちらの場合にも対応できるよな記述が必要になります。

EA起動時に一回だけ処理されるOnInit()内でpipsという変数を作ります。
下記がその記述ですが今までに扱っていない記述方法がでてくるので「
よくわからないけど、これでpipsという単位が使える」くらいの感覚で十分です。

for文を勉強したらまたここに戻ってきてください。

MarketInfo(Symbol(),MODE_DIGITS)というのは現在セットされている通貨ペアで、
小数第何位まで扱えるかという数値を返します。

2桁、4桁(EURUSD)の業者の場合はそのまま、
3桁、5桁の業者の場合は、10倍することにより、0.01 0.0001がpips単位になります。

ここで作ったpipsを使うことにより、
「ドル円がシグナル発生から5pips上がったら」という条件を

ではなく

と書くことができます。

0.05と書いてしまうとユーロドルの際におかしなことになりますが、
5*pipsと書くことにより、ドル円でもユーロドルでも使えるEAになります。

※3桁、5桁の場合に10倍するという記述だけで済まそうとすると、
CFDに対応できなくなります。

このコメントはWEBに公開されるので、問い合わせ等はメールでお願いします。

関連記事

トレード履歴からEAを復元することは可能か

「優秀なトレード履歴からEAを復元することはできるか」 という問い合わせをたまにいただきます。

記事を読む

第23回:短時間に大量のポジションを取るリスクを排除する

ポジションの時間を制御する EAプログラミングでは思わぬバグがつきものです。 よくあることとして

記事を読む

第22回:チャート上にデータを表示させる

MT4のチャート上にデータを表示させる Comment()という関数を使うとビジュアルモードのバッ

記事を読む

合成通貨アービトラージ

FXは通貨ペアなので、 その組み合わせは無数にあります。 例えば、ドルから円に換える場合、

記事を読む

2chの市況版のスレをテキストマイニングして逆張りする

よく「大衆の逆をいけば勝てる」みたいなことが相場の世界では言われますよね。 今回は2chの市況版の

記事を読む

 
  • ブログ管理人の横瀬兼元(ペンネーム)です。

    各トピックに対するコメントは各記事のコメント欄にお願いします。それ以外のご質問、ご相談などは
    infoあっとfxantenna.com
    まで
    私の偽物がいるらしいので偽物にご注意ください。
no image
シンプルなニューラルネットワークに基づいたEA(の記事)

MQLの記事って、ロシア語->英語->日本語の順に訳されるんで日本語の

no image
自動売買における仮想ストップロス、仮想テイクプロフィットの概念と意味

最近の自動売買系の論文やコードを読んでいると「仮想ストップロス」、「仮

no image
[bitwallet]paypal, Netteler, Skrillの次のオンラインマネーウォレット

近頃FX業界ではbitwallet(旧:mybitwallet)という

no image
ストップレベル=0はストップレベルがないことではない

MT4/MT5では予約注文を行う際にストップレベルというものがあります

no image
私の偽者、偽ブログにご注意ください

読者の方からご連絡いただいたのですが、私のブログの内容をそのままコピー

→もっと見る

PAGE TOP ↑