<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>文字列関数 アーカイブ - 自動売買を作ろう！</title>
	<atom:link href="https://mql-programing.com/archives/tag/%e6%96%87%e5%ad%97%e5%88%97%e9%96%a2%e6%95%b0/feed/" rel="self" type="application/rss+xml" />
	<link>https://mql-programing.com/archives/tag/文字列関数/</link>
	<description>MQLプログラミング学習サイト</description>
	<lastBuildDate>Wed, 01 Apr 2026 04:02:32 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://mql-programing.com/main29/wp-content/uploads/2021/02/cropped-ブログアイコン-32x32.jpg</url>
	<title>文字列関数 アーカイブ - 自動売買を作ろう！</title>
	<link>https://mql-programing.com/archives/tag/文字列関数/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【MQL4】文字列関数を完全マスター！StringFormat・DoubleToString・IntegerToString・StringLen・StringSubstrの使い方</title>
		<link>https://mql-programing.com/archives/13049/%e3%80%90mql4%e3%80%91%e6%96%87%e5%ad%97%e5%88%97%e9%96%a2%e6%95%b0%e3%82%92%e5%ae%8c%e5%85%a8%e3%83%9e%e3%82%b9%e3%82%bf%e3%83%bc%ef%bc%81stringformat%e3%83%bbdoubletostring%e3%83%bbintegertostring/</link>
		
		<dc:creator><![CDATA[朝日奈りさ]]></dc:creator>
		<pubDate>Sat, 18 Apr 2026 01:00:00 +0000</pubDate>
				<category><![CDATA[【中級編】MQLプログラムの読み方・書き方]]></category>
		<category><![CDATA[MQL4]]></category>
		<category><![CDATA[EA開発]]></category>
		<category><![CDATA[文字列関数]]></category>
		<category><![CDATA[StringFormat]]></category>
		<category><![CDATA[DoubleToString]]></category>
		<guid isPermaLink="false">https://mql-programing.com/?p=13049</guid>

					<description><![CDATA[<p>EA開発をしていると、「ログに価格やチケット番号を表示したい」「コメント欄にきれいな書式で情報を出力したい」という場面が頻繁にあります。そんなとき活躍するのが文字列関数です。 MQL4には多くの文字列関数が用意されていま [&#8230;]</p>
<p>投稿 <a href="https://mql-programing.com/archives/13049/%e3%80%90mql4%e3%80%91%e6%96%87%e5%ad%97%e5%88%97%e9%96%a2%e6%95%b0%e3%82%92%e5%ae%8c%e5%85%a8%e3%83%9e%e3%82%b9%e3%82%bf%e3%83%bc%ef%bc%81stringformat%e3%83%bbdoubletostring%e3%83%bbintegertostring/">【MQL4】文字列関数を完全マスター！StringFormat・DoubleToString・IntegerToString・StringLen・StringSubstrの使い方</a> は <a href="https://mql-programing.com">自動売買を作ろう！</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<p>EA開発をしていると、「ログに価格やチケット番号を表示したい」「コメント欄にきれいな書式で情報を出力したい」という場面が頻繁にあります。そんなとき活躍するのが<strong>文字列関数</strong>です。</p>
<p>MQL4には多くの文字列関数が用意されていますが、この記事では特に使用頻度の高い<strong>5つの関数</strong>に絞って解説します。</p>
<ul>
<li><strong>DoubleToString</strong> — 実数を文字列に変換</li>
<li><strong>IntegerToString</strong> — 整数を文字列に変換</li>
<li><strong>StringFormat</strong> — 書式を指定して文字列を生成</li>
<li><strong>StringLen</strong> — 文字列の長さを取得</li>
<li><strong>StringSubstr</strong> — 文字列の一部を切り出す</li>
</ul>
<p>すべてサンプルコード付きで、最後には5関数を組み合わせた実践例も紹介します。それでは順番に見ていきましょう！</p>
<h2><span id="toc1">DoubleToString — 実数を文字列に変換する</span></h2>
<p><code>DoubleToString</code>は、double型の数値を指定した小数桁数の文字列に変換する関数です。価格やロット数の表示に欠かせません。</p>
<h3><span id="toc2">基本的な使い方</span></h3>
<pre><code class="language-mql4">void OnStart()
{
    double price = 145.123456;

    // 小数点以下3桁で表示
    string s1 = DoubleToString(price, 3);
    Print("3桁: ", s1);  // 出力: 145.123

    // 小数点以下5桁で表示
    string s2 = DoubleToString(price, 5);
    Print("5桁: ", s2);  // 出力: 145.12346（四捨五入される）
}
</code></pre>
<h3><span id="toc3">実践テクニック：_Digits との組み合わせ</span></h3>
<p>通貨ペアによって小数桁数は異なります（USDJPYは3桁、EURUSDは5桁など）。<code>_Digits</code>を使えば、通貨ペアに応じた桁数で自動的に変換できます。</p>
<pre><code class="language-mql4">void OnTick()
{
    double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);

    // 通貨ペアに合った桁数で文字列化
    string priceStr = DoubleToString(bid, _Digits);
    Print(_Symbol, " の現在価格: ", priceStr);
}
</code></pre>
<p>この書き方なら、どの通貨ペアのチャートにEAを適用しても正しい桁数で価格が表示されます。</p>
<h2><span id="toc4">IntegerToString — 整数を文字列に変換する</span></h2>
<p><code>IntegerToString</code>は、整数を文字列に変換する関数です。単純な変換だけでなく、<strong>ゼロ埋め（パディング）</strong>もできるのが特徴です。</p>
<h3><span id="toc5">基本的な使い方</span></h3>
<pre><code class="language-mql4">void OnStart()
{
    int ticket = 12345;

    // 単純な変換
    string s1 = IntegerToString(ticket);
    Print("チケット: ", s1);  // 出力: 12345
}
</code></pre>
<h3><span id="toc6">ゼロ埋め（パディング）の使い方</span></h3>
<p><code>IntegerToString</code>の第2引数で桁数、第3引数で埋める文字を指定できます。ログの整形やファイル名の連番に便利です。</p>
<pre><code class="language-mql4">void OnStart()
{
    int num = 42;

    // 6桁にゼロ埋め
    string s1 = IntegerToString(num, 6, '0');
    Print("ゼロ埋め: ", s1);  // 出力: 000042

    // 8桁にスペース埋め（デフォルト）
    string s2 = IntegerToString(num, 8);
    Print("スペース埋め: [", s2, "]");  // 出力: [      42]
}
</code></pre>
<h2><span id="toc7">StringFormat — 書式指定で文字列を組み立てる</span></h2>
<p><code>StringFormat</code>はC言語の<code>sprintf</code>に相当する関数で、<strong>最も万能な文字列生成関数</strong>です。複数の値をひとつの文字列にまとめたいときに大活躍します。</p>
<h3><span id="toc8">主な書式指定子</span></h3>
<table>
<thead>
<tr>
<th>指定子</th>
<th>意味</th>
<th>例</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>%s</code></td>
<td>文字列</td>
<td>&#8220;USDJPY&#8221;</td>
</tr>
<tr>
<td><code>%d</code></td>
<td>整数</td>
<td>12345</td>
</tr>
<tr>
<td><code>%f</code></td>
<td>実数（デフォルト6桁）</td>
<td>145.123000</td>
</tr>
<tr>
<td><code>%.Nf</code></td>
<td>実数（小数N桁）</td>
<td>145.12（N=2の場合）</td>
</tr>
<tr>
<td><code>%%</code></td>
<td>%そのもの</td>
<td>%</td>
</tr>
</tbody>
</table>
<h3><span id="toc9">サンプルコード</span></h3>
<pre><code class="language-mql4">void OnStart()
{
    string symbol = "USDJPY";
    double price  = 145.678;
    int    ticket  = 99001;
    double lots   = 0.1;

    // 書式を指定して一気に文字列生成
    string msg = StringFormat("%s | Ticket:%d | Price:%.3f | Lots:%.2f",
                              symbol, ticket, price, lots);
    Print(msg);
    // 出力: USDJPY | Ticket:99001 | Price:145.678 | Lots:0.10
}
</code></pre>
<p><code>StringFormat</code>を使えば、文字列の連結（<code>+</code>演算子）を多用するよりもコードがすっきりします。特に3つ以上の値を組み合わせるときはStringFormatがおすすめです。</p>
<h2><span id="toc10">StringLen — 文字列の長さを取得する</span></h2>
<p><code>StringLen</code>は文字列の文字数を返す関数です。入力値のバリデーションや空文字チェックに使います。</p>
<h3><span id="toc11">基本的な使い方</span></h3>
<pre><code class="language-mql4">void OnStart()
{
    string text = "Hello MQL4";
    int len = StringLen(text);
    Print("文字数: ", len);  // 出力: 10（スペースも1文字）

    // 空文字チェック
    string comment = "";
    if(StringLen(comment) == 0)
    {
        Print("コメントは空です");
    }
}
</code></pre>
<h3><span id="toc12">実践テクニック：入力パラメータのチェック</span></h3>
<pre><code class="language-mql4">input string MagicPrefix = "EA01";

int OnInit()
{
    // プレフィックスが長すぎないかチェック
    if(StringLen(MagicPrefix) > 10)
    {
        Print("エラー: MagicPrefixは10文字以内にしてください");
        return INIT_PARAMETERS_INCORRECT;
    }
    return INIT_SUCCEEDED;
}
</code></pre>
<h2><span id="toc13">StringSubstr — 文字列の一部を切り出す</span></h2>
<p><code>StringSubstr</code>は文字列から指定位置・指定長さの部分文字列を取り出す関数です。日時文字列の分解やファイル名の加工に活用できます。</p>
<h3><span id="toc14">基本的な使い方</span></h3>
<pre><code class="language-mql4">void OnStart()
{
    string text = "2024.01.15 09:30:00";

    // 日付部分を取得（先頭から10文字）
    string datePart = StringSubstr(text, 0, 10);
    Print("日付: ", datePart);  // 出力: 2024.01.15

    // 時刻部分を取得（11文字目から最後まで）
    string timePart = StringSubstr(text, 11);
    Print("時刻: ", timePart);  // 出力: 09:30:00

    // 年だけ取得（先頭から4文字）
    string year = StringSubstr(text, 0, 4);
    Print("年: ", year);  // 出力: 2024
}
</code></pre>
<p>第2引数が<strong>開始位置</strong>（0始まり）、第3引数が<strong>切り出す文字数</strong>です。第3引数を省略すると、開始位置から末尾までの全文字が返されます。</p>
<h3><span id="toc15">実践テクニック：末尾N文字を切り出す関数</span></h3>
<p>StringLenとStringSubstrを組み合わせると、末尾から指定文字数を取り出すユーティリティ関数が作れます。</p>
<pre><code class="language-mql4">// 末尾n文字を取得する関数
string StringRight(string text, int n)
{
    int len = StringLen(text);
    if(n >= len) return text;
    return StringSubstr(text, len - n, n);
}

void OnStart()
{
    string filename = "report_2024.csv";
    string ext = StringRight(filename, 4);
    Print("拡張子: ", ext);  // 出力: .csv
}
</code></pre>
<h2><span id="toc16">実践例：5つの関数を組み合わせた注文ログ出力</span></h2>
<p>最後に、ここまで学んだ5つの関数を全て使った実践的なサンプルを紹介します。注文情報をきれいに整形してログ出力する関数です。</p>
<pre><code class="language-mql4">// 注文情報を整形して出力する関数
void PrintOrderInfo(int ticket)
{
    if(!OrderSelect(ticket, SELECT_BY_TICKET))
    {
        Print("チケット ", IntegerToString(ticket), " が見つかりません");
        return;
    }

    string symbol   = OrderSymbol();
    int    type     = OrderType();
    double lots     = OrderLots();
    double openPrice = OrderOpenPrice();
    string comment  = OrderComment();

    // IntegerToString: チケット番号をゼロ埋め
    string ticketStr = IntegerToString(ticket, 8, '0');

    // DoubleToString: 価格を通貨ペアに合った桁数で変換
    int digits = (int)MarketInfo(symbol, MODE_DIGITS);
    string priceStr = DoubleToString(openPrice, digits);

    // StringLen: コメントが空なら代替テキストを設定
    if(StringLen(comment) == 0)
        comment = "(コメントなし)";

    // StringSubstr: コメントが長すぎる場合は20文字に切り詰め
    if(StringLen(comment) > 20)
        comment = StringSubstr(comment, 0, 20) + "...";

    // StringFormat: 全体を整形
    string typeStr = (type == OP_BUY) ? "BUY" : "SELL";
    string log = StringFormat("[%s] %s %s %.2fLots @ %s Comment:%s",
                              ticketStr, symbol, typeStr,
                              lots, priceStr, comment);
    Print(log);
    // 出力例: [00012345] USDJPY BUY 0.10Lots @ 145.678 Comment:MyEA_Entry
}
</code></pre>
<p>このように、文字列関数を組み合わせることで<strong>読みやすく情報量の多いログ</strong>が簡単に作れます。デバッグ効率が格段に上がるので、ぜひ活用してください。</p>
<h2><span id="toc17">まとめ</span></h2>
<p>今回紹介した5つの文字列関数のポイントを整理します。</p>
<table>
<thead>
<tr>
<th>関数名</th>
<th>用途</th>
<th>覚えておきたいポイント</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>DoubleToString</strong></td>
<td>実数→文字列</td>
<td><code>_Digits</code>と組み合わせて通貨ペア対応</td>
</tr>
<tr>
<td><strong>IntegerToString</strong></td>
<td>整数→文字列</td>
<td>第2・第3引数でゼロ埋め（パディング）可能</td>
</tr>
<tr>
<td><strong>StringFormat</strong></td>
<td>書式指定で文字列生成</td>
<td><code>%s</code><code>%d</code><code>%.Nf</code>を使い分ける</td>
</tr>
<tr>
<td><strong>StringLen</strong></td>
<td>文字列の長さ取得</td>
<td>空文字チェックやバリデーションに活用</td>
</tr>
<tr>
<td><strong>StringSubstr</strong></td>
<td>部分文字列の切り出し</td>
<td>開始位置は0始まり、第3引数省略で末尾まで</td>
</tr>
</tbody>
</table>
<p>これらの関数はEA開発のあらゆる場面で登場します。特に<strong>StringFormat</strong>は使いこなせると、Print文やComment表示が一気にスマートになります。まずはサンプルコードをコピーして動かしてみるところから始めてみてください！</p>
<p>投稿 <a href="https://mql-programing.com/archives/13049/%e3%80%90mql4%e3%80%91%e6%96%87%e5%ad%97%e5%88%97%e9%96%a2%e6%95%b0%e3%82%92%e5%ae%8c%e5%85%a8%e3%83%9e%e3%82%b9%e3%82%bf%e3%83%bc%ef%bc%81stringformat%e3%83%bbdoubletostring%e3%83%bbintegertostring/">【MQL4】文字列関数を完全マスター！StringFormat・DoubleToString・IntegerToString・StringLen・StringSubstrの使い方</a> は <a href="https://mql-programing.com">自動売買を作ろう！</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
