0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【mt4/mql4】ゼロパディング(前ゼロ / zero padding / ゼロ埋め)処理

Last updated at Posted at 2021-10-25

はじめに

システムトレードプログラマのmt4/mql4のメモノートです。
初心者向けの簡単なトピックから公開していきます。
.noteでEAそのものも公開していますので良ければそちらも見てください。

目次

  1. 処理内容
  2. mql4ソースコード

処理内容

ゼロパディング (英: zero padding) またはゼロ埋めは、文字で数値を表す際に、書式で指定された桁数に満たない場合に、桁数をそろえるためゼロを付加することである。
by wikipedia

「ゼロ埋め」とか「桁そろえ」とか「桁合わせ」とかとも言いますでしょうか
基本の基本、ゼロパディングの処理です。
桁数(文字数)を揃える目的で「12」→「00012」や「345」→「00345」のように左に「0」を何個かくっつけることですが、これ以外と使うシーンがあるんです。

特に時刻とか日付系
外部APIとかサーバーとか、ローカルタイムとか色々 判定して処理したいときに
あれ、動かないじゃんって思うとゼロが揃ってなかったりするんですよね。

こんな感じで
サーバーから取った日付:02/08/2021
とあるAPIから取った日付:2/8/2021

まあ他にも指標系のニュース使ったりするときもこの現象は発生します。
そんなときにこの関数で統一してから処理していきましょう。

mql4ソースコード

こちらが関数側のソースです。呼び出し側の前に記述されている必要があります。

test.mq4
//+------------------------------------------------------------------+
//| ゼロパディング    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桁の場合はそのまま)

test.mq4
string day_2dig = ZeroPading(Day(),2);

これも呼び出し側の例
この例は、数列を5桁に統一する 例)123→00123にする

test.mq4
string nazo_code = 123;
int marumekomi = 5;
string aft_code = ZeroPading(nazo_code,marumekomi);

シンプルですが日付・ニュース系の情報を使う場合
使いどころは多いです。
皆様の手助けになりますように。

間違いなどあればご指摘いただけると助かります。
以上

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?