[MQL] DoubleToStr()とDoubleToString()の使い分け

MQLでDoubleToStr()とDoubleToString()をどう使い分けるべきかを記載します。本ページの内容は個人的なメモ程度の内容です。詳しくはご自身でお調べ下さい。

どっちも同じじゃないの?

MQLの関数を調べていると、「あれ?この関数って関数名が違うだけで○○関数と同じ関数じゃないの?」と思うことがあります。

一番分かりやすい例としては下記の二つの関数

  • DoubleToStr()
  • DoubleToString()

これって同じだよね?ね?

と思いますよね。はい、ほとんどの場合は上記の2つの関数は同じ意味となります。(細かく言えば違いますが、ほとんどの場合は同じ値が返ってきます。)

じゃぁどう使い分けるの?というお話です。

MQL5を想定して使い分けるべし

上記のDoubleToStr()DoubleToString()のように、ほぼ同じ機能の関数が存在する場合、どちらを使った方が良いのか迷う場合があります。

「機能は同じならどっちでもいいんじゃないの?」と思うかもしれません。

それはそうなのですが、私としては、機能が同じ二つの関数のどちらを使うか迷った場合には、MQL5で使える関数かどうかで判断するのがベターだと私は考えます。

DoubleToStr()はMQL4でしか使えませんが、DoubleToString()はMQL4でもMQL5でもどちらでも使えます。どうせなら両方で使えた方がいいですよね。

そもそも、似たような機能で関数が複数存在するのは、いろいろな理由でMQL5で別名関数が新設されたためです。今回のケースでは、MQL4でDoubleToStr()がもともとあって、MQL5ではDoubleToStr()の代わりにDoubleToString()が新設されたということです。そして後付けでMQL4にDoubleToString()が追加されたため、MQL4では似た関数が二つ存在するというまぎらわしい状況になってしまったのです。

つまり、DoubleToStr()DoubleToString()の二つは、どちらかというとMQL5に準拠しているDoubleToString()の方が新しいということが分かりますね。

そして、どちらを使っても同じ結果なら新しい方を使った方が将来性があるということです。つまり今回の場合は求める機能が同じならDoubleToString()を使うのがベターということです。

他にはどんな関数があるの?

それでは、同じようなパターンとしてはどんな関数があるのか?という疑問が沸きます。

よく使いそうなところでは、MarketInfo()SymbolInfoXXX()あたりでしょうか。他にもいろいろありますが、正確性や網羅性が怪しいので気になる方は、ご自身で頑張って調べてください。

まとめ

こので記事では、機能が同じなのに関数名が異なる複数の関数が存在する場合に、どちらを使うのが良いかについて書きました。

要するにMQL5化を予定しているならば、MQL5でも使える関数を使った方がいいのではないかという意見でした。

このあたりは私もまだ考えが定まっていないので、ご意見いただけると楽しいです。

コメント

この記事へのコメント(0 件)