3桁カンマ区切り文字列の関数

チャートに表示する時に使う

トレードに直接関係ありませんが、何らかの数値(例えば現在保有中のポジションの合計損益額)を3桁のカンマ区切りでチャートに表示したい時に使える関数をご紹介します。

MQL5の公式フォーラムに同じ悩みを方がいらっしゃっていて、解決策も既に提示されておりました。

それが「How can 1000000 be formatted as 1,000,000 ?」です。

該当の関数を以下に転記しておきます。

01//|【関数】数値⇒3桁区切り文字列変換
02//|【戻値】3桁区切りの文字列
03//|【備考】precision:表示したい小数点以下の桁数
04string formatDouble(double number,
05                    int precision,
06                    string pcomma = ",",
07                    string ppoint = ".")
08{
09  string snum   = DoubleToStr(number, precision);
10  int    decp   = StringFind(snum, ".", 0);
11  string sright = StringSubstr(snum, decp + 1, precision);
12  string sleft  = StringSubstr(snum, 0, decp);
13  string formated = "";
14  string comma    = "";
15 
16  while(StringLen(sleft) > 3){
17    int    length   = StringLen(sleft);
18    string part     = StringSubstr(sleft, length - 3, 0);
19           formated = part + comma + formated;
20           comma    = pcomma;
21           sleft    = StringSubstr(sleft, 0, length - 3);
22  }
23 
24  if (sleft == "-")  comma = ""; // this line missing previously
25  if (sleft != "")   formated = sleft+comma+formated;
26  if (precision > 0) formated = formated+ppoint+sright;
27 
28  return(formated);
29}

上記関数を以下の要領で呼び出して使います。

1string commaNumber = formatDouble(1000000.4, 0);

上記の場合、commaNumberには「1,000,000」が格納されます。

利用シーンはあまりないかもしれませんが、この機能って自分でゼロから考えだそうとすると、意外と苦戦します。

地味な機能ですが、良い仕事してくれますよ^-^

MT4の無料プログラミング講座

メルマガ登録して、MT4のプログラミング講座を無料で受けちゃおう!

超豪華プレゼントも盛りだくさん♪

MT4プログラミングを習得すると、オリジナルEA運用、作成代行、商品販売等、複数の収入源を手に入れられるよ。副業に最適だね!

↓↓↓ 詳細はこちら ↓↓↓

アイキャッチ

>

エターナル・パートナーPRO ~MT4裁量トレード支援ツール~ 「MT4は裁量トレーダーに優しくない」そう思ったことありませんか?もっと快適にトレードするための強力な売買ツールが必要だと考え、開発したのが「エターナル・パートナーPRO」です。元々は自分自身のために開発したツールですので、手抜き無しのガチものです。既に200名近い方に手に取っていただき、喜びの声が続々と届いております。ぜひご覧ください!

CTR IMG