<?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>OrderSymbol アーカイブ - 自動売買を作ろう！</title>
	<atom:link href="https://mql-programing.com/archives/tag/ordersymbol/feed/" rel="self" type="application/rss+xml" />
	<link>https://mql-programing.com/archives/tag/ordersymbol/</link>
	<description>MQLプログラミング学習サイト</description>
	<lastBuildDate>Tue, 31 Mar 2026 12:20:31 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://mql-programing.com/main29/wp-content/uploads/2021/02/cropped-ブログアイコン-32x32.jpg</url>
	<title>OrderSymbol アーカイブ - 自動売買を作ろう！</title>
	<link>https://mql-programing.com/archives/tag/ordersymbol/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【MQL4関数】OrderSymbol関数の使い方！正しくポジションを決済する方法</title>
		<link>https://mql-programing.com/archives/775/ordersymbol/</link>
		
		<dc:creator><![CDATA[朝日奈りさ]]></dc:creator>
		<pubDate>Sun, 25 Apr 2021 05:28:19 +0000</pubDate>
				<category><![CDATA[【中級編】MQLプログラムの読み方・書き方]]></category>
		<category><![CDATA[注文関係]]></category>
		<category><![CDATA[MQL]]></category>
		<category><![CDATA[リファレンス]]></category>
		<category><![CDATA[自動売買]]></category>
		<category><![CDATA[注文]]></category>
		<category><![CDATA[OrderSymbol]]></category>
		<guid isPermaLink="false">https://mql-programing.com/?p=775</guid>

					<description><![CDATA[<p>OrderSymbol関数とは 自動売買が勝手に別のポジションを決済することはありませんか？ そういうときは、自動売買のプログラム内で、通貨ペアの設定ができていない可能性があります。 　 通貨ペアの設定ができていない場合 [&#8230;]</p>
<p>投稿 <a href="https://mql-programing.com/archives/775/ordersymbol/">【MQL4関数】OrderSymbol関数の使い方！正しくポジションを決済する方法</a> は <a href="https://mql-programing.com">自動売買を作ろう！</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-11 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://mql-programing.com/main29/wp-content/uploads/2021/10/アイコン.png" alt="朝日奈りさ" class="speech-icon-image"/></figure><div class="speech-name">朝日奈りさ</div></div><div class="speech-balloon">
<p class="wp-block-paragraph">別の通貨ペアのポジションを、自動売買が勝手に決済しちゃった！どうしたら防げるの？</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc1">OrderSymbol関数とは</span></h2>



<p class="wp-block-paragraph">自動売買が勝手に別のポジションを決済することはありませんか？</p>



<p class="wp-block-paragraph"><strong>そういうときは、自動売買のプログラム内で、通貨ペアの設定ができていない可能性があります。</strong></p>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph">通貨ペアの設定ができていない場合、別の通貨ペアのポジションを決済してしまうことがあります。</p>



<p class="wp-block-paragraph"><strong><span class="marker-under-red">例えば、自動売買を「USDJPY」で動かしているのに、「EURUSD」のポジションを決済してしまったり、「AUDJPY」のポジションを決済してしまったりします。</span></strong></p>



<p class="wp-block-paragraph">そこで、別のポジションを決済してしまうことを防ぐために、<strong>OrderSymbol関数</strong>を使いましょう。</p>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph">OrderSymbol関数とは、保有ポジションの通貨ペアの情報を取得する関数です。</p>



<p class="wp-block-paragraph"><strong>保有ポジションの通貨ペアを取得することで、正しい通貨ペアのポジションだけを決済させることができます。</strong></p>



<p class="wp-block-paragraph">例えば、自動売買が「USDJPY」で動いているなら、<strong><span class="marker-under-red">「USDJPY」のポジションだけを決済させる</span></strong>ことができます。</p>



<p class="wp-block-paragraph">このように OrderSymbol関数を使って正しい通貨ペアを設定することで、別の通貨ペアのポジションを勝手に決済してしまうことを防ぐことができます。</p>



<p class="wp-block-paragraph">　</p>



<h2 class="wp-block-heading"><span id="toc2">OrderSymbol関数の書き方</span></h2>



<p class="wp-block-paragraph">OrderSymbol関数の書き方は、関数の書き方と同じです。</p>



<p class="wp-block-paragraph">もし関数の使い方をマスターしていない方は、こちらの記事が参考になります。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-自動売買を作ろう！ wp-block-embed-自動売買を作ろう！"><div class="wp-block-embed__wrapper">

<a href="https://mql-programing.com/function/" title="【MQLプログラミング基礎】関数は難しい？関数の使い方を理解しよう！プログラム例あり" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img fetchpriority="high" decoding="async" src="https://mql-programing.com/main29/wp-content/uploads/cocoon-resources/blog-card-cache/624de21c236a113367001dd95952af29.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">【MQLプログラミング基礎】関数は難しい？関数の使い方を理解しよう！プログラム例あり</div><div class="blogcard-snippet external-blogcard-snippet">関数とは？ 「プログラムは、何度も同じことを書かないといけない」 と思っている方、ぜひ関数を使ってみてください。 関数とは、何度も繰り返すプログラムを、まとめた状態のものです。 事前に、まとまりを作っておくことで、同じプ</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://mql-programing.com/archives/183/function/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">mql-programing.com</div></div></div></div></a>
</div></figure>



<p class="wp-block-paragraph"><br>　</p>



<h3 class="wp-block-heading"><span id="toc3">基本的な書き方</span></h3>



<p class="wp-block-paragraph">OrderSymbol関数の基本的な書き方は以下の通りです。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>string orderSymbol = OrderSymbol();</code></pre></div>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph">返り値は string型で、引数はありません。</p>



<p class="wp-block-paragraph">　</p>



<h3 class="wp-block-heading"><span id="toc4">返り値（戻り値）</span></h3>



<p class="wp-block-paragraph">OrderSymbol関数の返り値は、string型です。</p>



<p class="wp-block-paragraph"><strong><span class="marker-under-red">保有ポジションの通貨ペア名が返ってきます。</span></strong></p>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph">例えば、保有ポジションがドル円の場合、<strong>「USDJPY」</strong>という値が返ってきます。</p>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph">このように OrderSymbol関数は、string型が返り値となっていて、保有ポジションの通貨ペア名が返ってきます。</p>



<p class="wp-block-paragraph">　</p>



<h3 class="wp-block-heading"><span id="toc5">事前にポジションを選択しておく</span></h3>



<p class="wp-block-paragraph">OrderSymbol関数は、<strong>ポジションを選択しないと使うことができません。</strong></p>



<p class="wp-block-paragraph"><strong><span class="marker-under-red">そのため OrderSymbol関数を実行する前に、ポジションを選択しておきましょう。</span></strong></p>



<p class="wp-block-paragraph">ポジションを選択するには、<strong><a href="https://mql-programing.com/orderselect/">OrderSelect関数</a></strong>を使います。</p>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph"><strong>必ず OrderSelect関数 → OrderSymbol関数 の順にプログラムする</strong>ので、以下のようなプログラムになります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>//保有ポジションを一つ選択
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
   {

   //選択したポジションが、実行されている通貨ペアと同じかどうかチェック
   if(OrderSymbol() == Symbol())
   {

      //ここにポジションを決済するプログラムを書く

   }
}</code></pre></div>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph">このように、OrderSymbol関数を実行する前に、ポジションを選択しておくようにしましょう。</p>



<p class="wp-block-paragraph">ちなみに if文の条件式に「Symbol( )」と書いていますが、Symbol関数は<strong>自動売買が動いている通貨ペアの情報</strong>が返ってきます。</p>



<p class="wp-block-paragraph"><strong><span class="marker-under-red">OrderSymbol関数でポジションの通貨ペアを取得し、Symbol関数で自動売買が動いている通貨ペアを取得します。</span></strong></p>



<p class="wp-block-paragraph">通貨ペアを一致させることで、別のポジションを決済してしまうことを防いでいます。</p>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph">OrderSelect関数は、こちらの記事が参考になります。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-自動売買を作ろう！ wp-block-embed-自動売買を作ろう！"><div class="wp-block-embed__wrapper">

<a href="https://mql-programing.com/orderselect/" title="【MQL4関数】OrderSelect関数の使い方！保有ポジションの選択のやり方" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://i0.wp.com/mql-programing.com/main29/wp-content/uploads/2021/04/OrderSelect.jpg?fit=1200%2C675&#038;ssl=1" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">【MQL4関数】OrderSelect関数の使い方！保有ポジションの選択のやり方</div><div class="blogcard-snippet external-blogcard-snippet">目次 OrderSelect関数とはOrderSelect関数の書き方基本的な書き方返り値（戻り値）引数①index②select③poolOrderSelect関数の具体的な使い方（サンプルあり）まとめ OrderSe</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://mql-programing.com/archives/712/orderselect/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">mql-programing.com</div></div></div></div></a>
</div></figure>



<p class="wp-block-paragraph">　</p>



<h2 class="wp-block-heading"><span id="toc6">OrderSymbol関数の具体的な使い方（サンプルあり）</span></h2>



<p class="wp-block-paragraph">先ほど、OrderSelect関数と組み合わせましたが、さらに他の関数とも組み合わせます。</p>



<p class="wp-block-paragraph">上記の例では、ポジションを１つだけ選択して、通貨ペアを取得していましたが、全てのポジションの情報を取得してみます。</p>



<p class="wp-block-paragraph">全てのポジションの情報を取得するためには、<a href="https://mql-programing.com/repeat-for-while/">for文</a>を使って全てのポジションをチェックします。</p>



<p class="wp-block-paragraph">そのとき、for分の条件式に保有ポジション数が必要となりますので、<a href="https://mql-programing.com/orderstotal/">OrdersTotal関数</a>と組み合わせて使ってみましょう。</p>



<p class="wp-block-paragraph">例えば、以下のようなプログラムです。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>//保有ポジションを一つずつチェックしていく
  for( int i = OrdersTotal() - 1; i &gt;= 0; i--)
     {

      //保有ポジションを一つ選択
      if( OrderSelect( i, SELECT_BY_POS, MODE_TRADES))
          {

              //選択したポジションが、実行されている通貨ペアと同じかどうかチェック
              if( OrderSymbol() == Symbol())
              {

              //ここにポジションを決済するプログラムを書く

              }
          }
     }</code></pre></div>



<p class="wp-block-paragraph">　</p>



<div class="wp-block-cocoon-blocks-button-1 aligncenter button-block"><a href="https://mql-programing.com/product/file_ordersymbol/" class="btn btn-m btn-circle" target="_self"><span class="fz-20px">サンプルプログラムはこちらから</span></a></div>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph">このように書くことで、全てのポジションをチェックし、その中から自動売買が動いている通貨ペアだけを選択することができます。</p>



<p class="wp-block-paragraph"><strong>この書き方は、自動売買を作るときによく使う書き方なので、どこかにコピーしておくと良いでしょう。</strong></p>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph">OrdersTotal関数の使い方は、以下の記事が参考になります。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-自動売買を作ろう！ wp-block-embed-自動売買を作ろう！"><div class="wp-block-embed__wrapper">

<a href="https://mql-programing.com/orderstotal/" title="【MQL4関数】OrdersTotal関数の使い方！保有ポジション数の取得のやり方" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://i0.wp.com/mql-programing.com/main29/wp-content/uploads/2021/04/OrdersTotal.jpg?fit=1200%2C675&#038;ssl=1" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">【MQL4関数】OrdersTotal関数の使い方！保有ポジション数の取得のやり方</div><div class="blogcard-snippet external-blogcard-snippet">目次 OrdersTotal関数とはOrdersTotal関数の使用方法と注意点まとめ OrdersTotal関数とは 自動売買でトレードするとき、保有ポジション数をチェックしたいですよね！ そのときに OrdersTo</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://mql-programing.com/archives/705/orderstotal/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">mql-programing.com</div></div></div></div></a>
</div></figure>



<p class="wp-block-paragraph">　</p>



<h2 class="wp-block-heading"><span id="toc7">OrderSymbol関数の実用的なプログラム例</span></h2>



<p class="wp-block-paragraph">ここからは、OrderSymbol関数を使った実用的なプログラム例を紹介します。</p>



<p class="wp-block-paragraph"><strong>実際のEA（自動売買）で使える形になっていますので、ぜひ参考にしてください。</strong></p>



<p class="wp-block-paragraph">　</p>



<h3 class="wp-block-heading"><span id="toc8">例1：自分の通貨ペアの買いポジションだけを全決済するEA</span></h3>



<p class="wp-block-paragraph">OrderSymbol関数とOrderType関数を組み合わせることで、特定の通貨ペアの買いポジションだけを決済することができます。</p>



<p class="wp-block-paragraph">以下の例では、ボタンを押す代わりにOnTick内で条件を満たしたときに、買いポジションだけを全決済します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>//+------------------------------------------------------------------+
//| 自分の通貨ペアの買いポジションだけを全決済する関数               |
//+------------------------------------------------------------------+
void CloseAllBuyPositions()
{
   // 保有ポジションを後ろからループ（決済するとインデックスがずれるため）
   for(int i = OrdersTotal() - 1; i >= 0; i--)
   {
      // ポジションを選択
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         // 通貨ペアが一致しているかチェック
         if(OrderSymbol() == Symbol())
         {
            // 買いポジション（OP_BUY）かどうかチェック
            if(OrderType() == OP_BUY)
            {
               // 買いポジションを決済（Bid価格で決済する）
               bool result = OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 10, clrRed);

               // 決済結果をログに出力
               if(result)
                  Print("買いポジション決済成功: チケット=", OrderTicket());
               else
                  Print("買いポジション決済失敗: エラー=", GetLastError());
            }
         }
      }
   }
}

//+------------------------------------------------------------------+
//| OnTick関数での使用例                                              |
//+------------------------------------------------------------------+
void OnTick()
{
   // 例：RSIが70を超えたら買いポジションを全決済する
   double rsi = iRSI(Symbol(), 0, 14, PRICE_CLOSE, 0);

   if(rsi > 70)
   {
      CloseAllBuyPositions();
   }
}</code></pre></div>



<p class="wp-block-paragraph">このように、OrderSymbol関数で通貨ペアをチェックし、さらにOrderType関数で売買の種類をチェックすることで、<strong>買いポジションだけを狙って決済する</strong>ことができます。</p>



<p class="wp-block-paragraph">　</p>



<h3 class="wp-block-heading"><span id="toc9">例2：自分の通貨ペアのポジション数をカウントする</span></h3>



<p class="wp-block-paragraph">自動売買では、「今いくつポジションを持っているか」を確認したい場面がよくあります。</p>



<p class="wp-block-paragraph">OrderSymbol関数を使えば、<strong>自分のEAが動いている通貨ペアのポジション数だけを正確にカウント</strong>できます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>//+------------------------------------------------------------------+
//| 自分の通貨ペアのポジション数をカウントする関数                   |
//| buyCount: 買いポジション数（参照渡しで返す）                     |
//| sellCount: 売りポジション数（参照渡しで返す）                    |
//+------------------------------------------------------------------+
void CountMyPositions(int &amp;buyCount, int &amp;sellCount)
{
   // カウンターを初期化
   buyCount  = 0;
   sellCount = 0;

   // 全ポジションをループしてチェック
   for(int i = OrdersTotal() - 1; i >= 0; i--)
   {
      // ポジションを選択
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         // 自分の通貨ペアかどうかチェック
         if(OrderSymbol() == Symbol())
         {
            // 買いポジションならbuyCountを加算
            if(OrderType() == OP_BUY)
               buyCount++;

            // 売りポジションならsellCountを加算
            if(OrderType() == OP_SELL)
               sellCount++;
         }
      }
   }
}

//+------------------------------------------------------------------+
//| OnTick関数での使用例                                              |
//+------------------------------------------------------------------+
void OnTick()
{
   int buyCount, sellCount;

   // 自分の通貨ペアのポジション数を取得
   CountMyPositions(buyCount, sellCount);

   // ポジション数をログに出力
   Print("買いポジション数=", buyCount, " 売りポジション数=", sellCount);

   // 例：買いポジションが0のときだけ新規エントリーする
   if(buyCount == 0)
   {
      // ここに新規注文のプログラムを書く
   }
}</code></pre></div>



<p class="wp-block-paragraph">このように参照渡しを使うことで、<strong>買いと売りのポジション数を一度に取得</strong>できます。</p>



<p class="wp-block-paragraph">ポジション数を管理することで、「最大○個までしかポジションを持たない」といったルールも簡単に実装できます。</p>



<p class="wp-block-paragraph">　</p>



<h3 class="wp-block-heading"><span id="toc10">例3：マジックナンバーとOrderSymbolを組み合わせて安全に決済するEA</span></h3>



<p class="wp-block-paragraph">実際のEA開発では、OrderSymbol関数だけでなく<strong>マジックナンバー（OrderMagicNumber関数）</strong>も組み合わせることで、より安全にポジションを管理できます。</p>



<p class="wp-block-paragraph"><strong><span class="marker-under-red">同じ通貨ペアで複数のEAを動かす場合、マジックナンバーで自分のEAが建てたポジションだけを識別する必要があります。</span></strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>//+------------------------------------------------------------------+
//| マジックナンバーの設定                                           |
//+------------------------------------------------------------------+
#define MAGIC_NUMBER 123456  // このEA専用のマジックナンバー

//+------------------------------------------------------------------+
//| 通貨ペア＋マジックナンバーで自分のポジションだけを全決済する関数 |
//+------------------------------------------------------------------+
void CloseMyAllPositions()
{
   // 保有ポジションを後ろからループ
   for(int i = OrdersTotal() - 1; i >= 0; i--)
   {
      // ポジションを選択
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         // 通貨ペアが一致しているかチェック
         if(OrderSymbol() != Symbol()) continue;

         // マジックナンバーが一致しているかチェック（自分のEAが建てたポジションか）
         if(OrderMagicNumber() != MAGIC_NUMBER) continue;

         // 決済価格を決定（買いならBid、売りならAsk）
         double closePrice = 0;
         if(OrderType() == OP_BUY)
            closePrice = MarketInfo(OrderSymbol(), MODE_BID);
         else if(OrderType() == OP_SELL)
            closePrice = MarketInfo(OrderSymbol(), MODE_ASK);
         else
            continue;  // 指値・逆指値注文はスキップ

         // ポジションを決済
         bool result = OrderClose(OrderTicket(), OrderLots(), closePrice, 10, clrYellow);

         // 決済結果をログに出力
         if(result)
            Print("決済成功: チケット=", OrderTicket(), " 通貨ペア=", OrderSymbol());
         else
            Print("決済失敗: チケット=", OrderTicket(), " エラー=", GetLastError());
      }
   }
}

//+------------------------------------------------------------------+
//| OnTick関数での使用例                                              |
//+------------------------------------------------------------------+
void OnTick()
{
   // 例：金曜日の22時を過ぎたら週末リスク回避のため全決済する
   if(DayOfWeek() == 5 &amp;&amp; Hour() >= 22)
   {
      CloseMyAllPositions();
      return;  // 決済後は新規エントリーしない
   }

   // ここに通常のエントリーロジックを書く
}</code></pre></div>



<p class="wp-block-paragraph">このように、OrderSymbol関数とOrderMagicNumber関数を<strong>ダブルチェック</strong>することで、他のEAが建てたポジションを誤って決済してしまうことを完全に防ぐことができます。</p>



<p class="wp-block-paragraph">　</p>



<h3 class="wp-block-heading"><span id="toc11">例4：自分の通貨ペアの合計損益をリアルタイムで表示するインジケーター</span></h3>



<p class="wp-block-paragraph">OrderSymbol関数は、EAだけでなく<strong>インジケーター</strong>でも活用できます。</p>



<p class="wp-block-paragraph">以下の例では、自分の通貨ペアの保有ポジションの合計損益をチャート上にリアルタイム表示します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>//+------------------------------------------------------------------+
//| 自分の通貨ペアの合計損益をチャートに表示するインジケーター       |
//+------------------------------------------------------------------+
#property indicator_chart_window  // チャートウィンドウに表示

//+------------------------------------------------------------------+
//| 初期化関数                                                        |
//+------------------------------------------------------------------+
int OnInit()
{
   // タイマーを1秒間隔で設定（リアルタイム更新用）
   EventSetTimer(1);
   return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| 終了処理関数                                                      |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   // タイマーを停止
   EventKillTimer();

   // 表示したオブジェクトを削除
   ObjectDelete(0, "ProfitLabel");
   ObjectDelete(0, "ProfitValue");
}

//+------------------------------------------------------------------+
//| 自分の通貨ペアの合計損益を計算する関数                           |
//+------------------------------------------------------------------+
double CalcMyProfit()
{
   double totalProfit = 0;

   // 全ポジションをループ
   for(int i = OrdersTotal() - 1; i >= 0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         // 自分の通貨ペアのポジションだけを合計する
         if(OrderSymbol() == Symbol())
         {
            // OrderProfit()で損益、OrderSwap()でスワップ、OrderCommission()で手数料を取得
            totalProfit += OrderProfit() + OrderSwap() + OrderCommission();
         }
      }
   }

   return(totalProfit);
}

//+------------------------------------------------------------------+
//| タイマーイベント（1秒ごとに実行）                                |
//+------------------------------------------------------------------+
void OnTimer()
{
   // 自分の通貨ペアの合計損益を計算
   double profit = CalcMyProfit();

   // 損益の文字列を作成
   string profitText = Symbol() + " 合計損益: " + DoubleToString(profit, 2) + " " + AccountCurrency();

   // 損益に応じて色を変える（プラスなら青、マイナスなら赤）
   color textColor = (profit >= 0) ? clrDodgerBlue : clrRed;

   // チャート左上にテキストを表示
   if(ObjectFind(0, "ProfitValue") &lt; 0)
   {
      // オブジェクトが存在しない場合は新規作成
      ObjectCreate(0, "ProfitValue", OBJ_LABEL, 0, 0, 0);
      ObjectSetInteger(0, "ProfitValue", OBJPROP_CORNER, CORNER_LEFT_UPPER);
      ObjectSetInteger(0, "ProfitValue", OBJPROP_XDISTANCE, 20);
      ObjectSetInteger(0, "ProfitValue", OBJPROP_YDISTANCE, 30);
      ObjectSetInteger(0, "ProfitValue", OBJPROP_FONTSIZE, 14);
   }

   // テキストと色を更新
   ObjectSetString(0, "ProfitValue", OBJPROP_TEXT, profitText);
   ObjectSetInteger(0, "ProfitValue", OBJPROP_COLOR, textColor);

   // チャートを再描画
   ChartRedraw();
}

//+------------------------------------------------------------------+
//| OnCalculate関数（インジケーターに必須）                           |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &amp;time[],
                const double &amp;open[],
                const double &amp;high[],
                const double &amp;low[],
                const double &amp;close[],
                const long &amp;tick_volume[],
                const long &amp;volume[],
                const int &amp;spread[])
{
   return(rates_total);
}</code></pre></div>



<p class="wp-block-paragraph">このインジケーターでは、OrderSymbol関数を使って<strong>自分の通貨ペアのポジションだけの損益を合計</strong>しています。</p>



<p class="wp-block-paragraph">スワップや手数料も含めた正確な損益を表示できるので、<strong>複数の通貨ペアでポジションを持っている場合でも、通貨ペアごとの損益を把握</strong>することができます。</p>



<p class="wp-block-paragraph">　</p>



<h2 class="wp-block-heading"><span id="toc12">まとめ</span></h2>



<p class="wp-block-paragraph">今回は、OrderSymbol関数の使い方について解説しました。</p>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph">OrderSymbol関数のポイントをまとめると、以下の通りです。</p>



<ul class="wp-block-list">
<li><strong>OrderSymbol関数</strong>は、保有ポジションの通貨ペア名を取得する関数</li>
<li>返り値は<strong>string型</strong>で、引数はない</li>
<li>使用する前に必ず<strong>OrderSelect関数</strong>でポジションを選択しておく</li>
<li><strong>Symbol関数</strong>と組み合わせることで、自動売買が動いている通貨ペアのポジションだけを操作できる</li>
<li><strong>OrderMagicNumber関数</strong>と組み合わせることで、さらに安全にポジションを管理できる</li>
</ul>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph"><strong><span class="marker-under-red">OrderSymbol関数を正しく使うことで、別の通貨ペアのポジションを誤って決済してしまうトラブルを防ぐことができます。</span></strong></p>



<p class="wp-block-paragraph">自動売買を作るときは、必ずOrderSymbol関数で通貨ペアのチェックを入れるようにしましょう。</p>
<p>投稿 <a href="https://mql-programing.com/archives/775/ordersymbol/">【MQL4関数】OrderSymbol関数の使い方！正しくポジションを決済する方法</a> は <a href="https://mql-programing.com">自動売買を作ろう！</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
