はじめに
システムトレードプログラマのmt4/mql4のメモノートです。
初心者向けの簡単なトピックから公開していきます。
.noteでEAそのものも公開していますので良ければそちらも見てください。
目次
処理内容
ゼロパディング (英: zero padding) またはゼロ埋めは、文字で数値を表す際に、書式で指定された桁数に満たない場合に、桁数をそろえるためゼロを付加することである。
by wikipedia
「ゼロ埋め」とか「桁そろえ」とか「桁合わせ」とかとも言いますでしょうか
基本の基本、ゼロパディングの処理です。
桁数(文字数)を揃える目的で「12」→「00012」や「345」→「00345」のように左に「0」を何個かくっつけることですが、これ以外と使うシーンがあるんです。
特に時刻とか日付系
外部APIとかサーバーとか、ローカルタイムとか色々 判定して処理したいときに
あれ、動かないじゃんって思うとゼロが揃ってなかったりするんですよね。
こんな感じで
サーバーから取った日付:02/08/2021
とあるAPIから取った日付:2/8/2021
まあ他にも指標系のニュース使ったりするときもこの現象は発生します。
そんなときにこの関数で統一してから処理していきましょう。
mql4ソースコード
こちらが関数側のソースです。呼び出し側の前に記述されている必要があります。
//+------------------------------------------------------------------+
//| ゼロパディング ZeroPading
//| code by KOUSHIROU
//| https://note.com/mt4_coder
//+------------------------------------------------------------------+
string ZeroPading(int rawdigits, int digits)
{
string result = IntegerToString(rawdigits);
int length = StringLen(result);
if(length >= digits)
{
return(result);
}
for(int i = 0; i < digits - length; i++)
{
result = "0" + result;
}
return(result);
}
//+------------------------------------------------------------------+
こちらは呼び出し側の例
この例は、日付が1桁の場合にゼロ付けする。例)5 → 05、31→31(2桁の場合はそのまま)
string day_2dig = ZeroPading(Day(),2);
これも呼び出し側の例
この例は、数列を5桁に統一する 例)123→00123にする
string nazo_code = 123;
int marumekomi = 5;
string aft_code = ZeroPading(nazo_code,marumekomi);
シンプルですが日付・ニュース系の情報を使う場合
使いどころは多いです。
皆様の手助けになりますように。
間違いなどあればご指摘いただけると助かります。
以上