チャートに表示する時に使う
トレードに直接関係ありませんが、何らかの数値(例えば現在保有中のポジションの合計損益額)を3桁のカンマ区切りでチャートに表示したい時に使える関数をご紹介します。
MQL5の公式フォーラムに同じ悩みを方がいらっしゃっていて、解決策も既に提示されておりました。
それが「How can 1000000 be formatted as 1,000,000 ?」です。
該当の関数を以下に転記しておきます。
//|【関数】数値⇒3桁区切り文字列変換
//|【戻値】3桁区切りの文字列
//|【備考】precision:表示したい小数点以下の桁数
string formatDouble(double number,
int precision,
string pcomma = ",",
string ppoint = ".")
{
string snum = DoubleToStr(number, precision);
int decp = StringFind(snum, ".", 0);
string sright = StringSubstr(snum, decp + 1, precision);
string sleft = StringSubstr(snum, 0, decp);
string formated = "";
string comma = "";
while(StringLen(sleft) > 3){
int length = StringLen(sleft);
string part = StringSubstr(sleft, length - 3, 0);
formated = part + comma + formated;
comma = pcomma;
sleft = StringSubstr(sleft, 0, length - 3);
}
if (sleft == "-") comma = ""; // this line missing previously
if (sleft != "") formated = sleft+comma+formated;
if (precision > 0) formated = formated+ppoint+sright;
return(formated);
}
上記関数を以下の要領で呼び出して使います。
string commaNumber = formatDouble(1000000.4, 0);
上記の場合、commaNumberには「1,000,000」が格納されます。
利用シーンはあまりないかもしれませんが、この機能って自分でゼロから考えだそうとすると、意外と苦戦します。
地味な機能ですが、良い仕事してくれますよ^-^
