<?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>OrderSend関数 アーカイブ - 自動売買を作ろう！</title>
	<atom:link href="https://mql-programing.com/archives/tag/ordersend%E9%96%A2%E6%95%B0/feed/" rel="self" type="application/rss+xml" />
	<link>https://mql-programing.com/archives/tag/ordersend関数/</link>
	<description>MQLプログラミング学習サイト</description>
	<lastBuildDate>Tue, 31 Mar 2026 12:15:00 +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>OrderSend関数 アーカイブ - 自動売買を作ろう！</title>
	<link>https://mql-programing.com/archives/tag/ordersend関数/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【MQL4関数】OrderSend関数の使い方！エントリー注文の出し方とサンプルプログラム</title>
		<link>https://mql-programing.com/archives/550/ordersend/</link>
		
		<dc:creator><![CDATA[朝日奈りさ]]></dc:creator>
		<pubDate>Wed, 21 Apr 2021 04:43:33 +0000</pubDate>
				<category><![CDATA[【中級編】MQLプログラムの読み方・書き方]]></category>
		<category><![CDATA[注文関係]]></category>
		<category><![CDATA[MQL]]></category>
		<category><![CDATA[リファレンス]]></category>
		<category><![CDATA[自動売買]]></category>
		<category><![CDATA[OrderSend関数]]></category>
		<category><![CDATA[注文方法]]></category>
		<guid isPermaLink="false">https://mql-programing.com/?p=550</guid>

					<description><![CDATA[<p>OrderSend関数とは 自動売買を作るからには、自動でトレードさせたいですよね！ 「ロジックは考えてあるのに、注文を出す方法が分からない」という方は、OrderSend関数を使ってみましょう。 OrderSend関数 [&#8230;]</p>
<p>投稿 <a href="https://mql-programing.com/archives/550/ordersend/">【MQL4関数】OrderSend関数の使い方！エントリー注文の出し方とサンプルプログラム</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>自動売買EAで、トレードさせるにはどうしたらいいの？</p>
</div></div>



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



<p>自動売買を作るからには、自動でトレードさせたいですよね！</p>



<p><strong>「ロジックは考えてあるのに、注文を出す方法が分からない」</strong>という方は、<span class="marker-under-red">OrderSend関数</span>を使ってみましょう。</p>



<p>OrderSend関数は、FX会社に注文を出す関数です。</p>



<p>プログラムで実行することで、注文を出すことができます。</p>



<p>　</p>



<p>対応している注文方法は以下の通りです。</p>



<p><strong>・成り行き注文<br>・指値注文<br>・逆指値注文</strong></p>



<p><strong><span class="marker-under-red">つまり、エントリー注文だけを出すことができる関数です。</span></strong></p>



<p>指値の変更や決済の関数は、別の関数がありますので、そちらを利用してください。</p>



<p>　</p>



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



<p>OrderSend関数の使い方は、基本的な関数と同じです。</p>



<p>関数をマスターしていない方はこちらの記事が参考になります。</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 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="160" height="90" /></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>　</p>



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



<p>OrderSend関数は、引数が非常に多い関数です。</p>



<p>そのため、難しい部分もあるかと思います。</p>



<p><strong>ですが、<span class="marker-under-red">成り行き注文のプログラムだけ作ってしまえば、あとは簡単に作れてしまう</span>ので、まずは成り行き注文のプログラムを作ってみましょう。</strong></p>



<p>　</p>



<p>さて本題です。</p>



<p>OrderSend関数の基本的な書き方は以下の通りです。</p>



<p>分かりやすいように、引数は省略しています。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>int ticketNum = OrderSend( ①, ②, ③, ④, ⑤, ⑥, ⑦, ⑧, ⑨, ⑩, ⑪);</code></pre></div>



<p>　</p>



<p><strong><span class="marker-under-red">返り値はint型で、引数は１１個あります。</span></strong></p>



<p>まずは返り値から見ていきましょう。</p>



<p>　</p>



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



<p>OrderSend関数の返り値はint型です。</p>



<p>返り値は配列のような連続した値ではなく、値が１つだけ返って来ます。</p>



<p><strong>OrderSend関数の返り値は、関数の中でも特殊で、返ってきた値を使うことは、ほとんどありません。</strong></p>



<p>返り値の具体的な値は以下の通りです。</p>



<p>・注文が成功すればチケット番号（注文番号）が返ってきます。<br>・注文が失敗すれば-1が返ってきます。</p>



<p>ポジションの管理方法をチケット番号にしている場合は、重要になるのですが、その方法は難易度が高いので、今は気にしなくて大丈夫です。</p>



<p><strong><span class="marker-under-red">このようにOrderSend関数は、あくまで注文を出すだけの関数なので、返り値は重要ではありません。</span></strong></p>



<p>　</p>



<h3 class="wp-block-heading"><span id="toc5">OrderSend関数の引数</span></h3>



<p>ここからはOrderSend関数の引数について解説していきます。</p>



<p>数が多いので、ゆっくりと見ていきましょう。</p>



<p>はじめに、OrderSend関数には１１個の引数があります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>int ticketNum = OrderSend( ①, ②, ③, ④, ⑤, ⑥, ⑦, ⑧, ⑨, ⑩, ⑪);</code></pre></div>



<p>　</p>



<p>一覧でザッと見てみます。</p>



<figure class="wp-block-table alignwide"><table><tbody><tr><td><strong>番号</strong></td><td><strong>データ型</strong></td><td><strong>引数名</strong></td><td><strong>内容</strong></td></tr><tr><td>①</td><td>string</td><td>symbol</td><td>通貨ペアを設定（NULLなど）</td></tr><tr><td>②</td><td>int</td><td>cmd</td><td>注文の種類を設定（OP_BUYなど）</td></tr><tr><td>③</td><td>double</td><td>volume</td><td>ロット数を設定</td></tr><tr><td>④</td><td>double</td><td>price</td><td>注文の価格を設定</td></tr><tr><td>⑤</td><td>int</td><td>slippage</td><td>許容するスリッページを設定</td></tr><tr><td>⑥</td><td>double</td><td>stoploss</td><td>損切りを設定</td></tr><tr><td>⑦</td><td>double</td><td>takeprofit</td><td>利確を設定</td></tr><tr><td>⑧</td><td>string</td><td>comment</td><td>ポジションのコメントを設定</td></tr><tr><td>⑨</td><td>int</td><td>magic</td><td>マジックナンバーを設定</td></tr><tr><td>⑩</td><td>datetime</td><td>expiration</td><td>ポジションの有効期限を設定</td></tr><tr><td>⑪</td><td>color</td><td>arrow_color</td><td>チャート上のポジションの色を設定</td></tr></tbody></table></figure>



<p>　</p>



<p>１つずつ詳しく見ていきましょう。</p>



<p>　</p>



<h4 class="wp-block-heading"><span id="toc6">①symbol</span></h4>



<p>symbolは、注文を実行する通貨ペアを設定します。</p>



<p>例えばドル円の場合、<strong>「USDJPY」</strong>という値になります。</p>



<p><strong>ですが、具体的に通貨ペアを設定する必要はありません。</strong></p>



<p>というのもMQLには便利なものがあり、<strong><span class="marker-under-red">「Symbol」</span>または<span class="marker-under-red">「NULL」</span></strong>と書くだけで、現在の通貨ペアを設定できます。</p>



<p>そのため通常は、下記のように入力すれば大丈夫です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>int ticketNum = OrderSend( NULL, ②, ③, ④, ⑤, ⑥, ⑦, ⑧, ⑨, ⑩, ⑪);</code></pre></div>



<p>　</p>



<h4 class="wp-block-heading"><span id="toc7">②cmd</span></h4>



<p>cmdには注文の種類を設定します。</p>



<p>注文の種類は６種類ありますが、<strong><span class="marker-under-red">「成り行き買い注文（OP_BUY）」と「成り行き売り注文（OP_SELL）」</span></strong>だけ覚えれば問題なしです。</p>



<p>ここでは成り行き買い注文を出す場合を考えています。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>int ticketNum = OrderSend( NULL, OP_BUY, ③, ④, ⑤, ⑥, ⑦, ⑧, ⑨, ⑩, ⑪);</code></pre></div>



<p>　</p>



<h2 class="wp-block-heading"><span id="toc8">実用的なサンプルプログラム</span></h2>



<p>ここからは、OrderSend関数を使った<strong>実用的なサンプルプログラム</strong>を紹介していきます。</p>



<p>基本の書き方を理解した上で、実際のEAでどのように使うかを見ていきましょう。</p>



<p>　</p>



<h3 class="wp-block-heading"><span id="toc9">サンプル①：エラーハンドリング付きの成り行き注文</span></h3>



<p>実際のEA開発では、注文が失敗したときにエラー内容を確認できるようにしておくことが非常に重要です。</p>



<p>以下のプログラムは、<strong>注文の成功・失敗を判定し、失敗した場合はエラーコードをログに出力する</strong>実用的なサンプルです。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="MQL4"><code>//+------------------------------------------------------------------+
//| エラーハンドリング付き成り行き買い注文のサンプル                  |
//+------------------------------------------------------------------+
void OnTick()
{
   // すでにポジションを持っている場合は何もしない
   if(OrdersTotal() > 0) return;

   // 損切り・利確の価格を計算（現在の買い値から50pips離れた位置）
   double stopLoss   = Ask - 50 * Point;  // 損切り：現在価格の50pips下
   double takeProfit = Ask + 100 * Point;  // 利確：現在価格の100pips上

   // 成り行き買い注文を実行
   int ticket = OrderSend(
      NULL,              // 現在の通貨ペア
      OP_BUY,            // 買いの成り行き注文
      0.1,               // 0.1ロット
      Ask,               // 現在の買い値
      20,                // スリッページ2pips（0.1pips単位）
      stopLoss,          // 損切り価格
      takeProfit,        // 利確価格
      "Buy Order",       // コメント
      12345,             // マジックナンバー
      0,                 // 有効期限なし
      clrBlue            // チャート上の矢印の色
   );

   // 注文結果を判定する
   if(ticket >= 0)
   {
      // 注文成功：チケット番号をログに表示
      Print("注文成功！チケット番号: ", ticket);
   }
   else
   {
      // 注文失敗：エラーコードを取得してログに表示
      int errorCode = GetLastError();
      Print("注文失敗！エラーコード: ", errorCode);
   }
}</code></pre></div>



<p><strong>GetLastError()</strong>を使うことで、なぜ注文が失敗したのかを調べることができます。エラーコードの意味はMQLリファレンスで確認できますので、デバッグに活用してください。</p>



<p>　</p>



<h3 class="wp-block-heading"><span id="toc10">サンプル②：移動平均線のゴールデンクロスで買い注文を出すEA</span></h3>



<p>次は、<strong>テクニカル指標と組み合わせた実用的なEA</strong>のサンプルです。</p>



<p>短期移動平均線が長期移動平均線を下から上に抜けた（ゴールデンクロス）タイミングで買い注文を出します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="MQL4"><code>//+------------------------------------------------------------------+
//| 移動平均線ゴールデンクロスで買い注文を出すEA                     |
//+------------------------------------------------------------------+
// パラメータ設定（外部から変更可能）
extern double LotSize      = 0.1;   // ロット数
extern int    ShortPeriod  = 5;     // 短期移動平均の期間
extern int    LongPeriod   = 25;    // 長期移動平均の期間
extern int    StopLossPips = 30;    // 損切り幅（pips）
extern int    TakeProfitPips = 60;  // 利確幅（pips）
extern int    MagicNumber  = 1001;  // マジックナンバー

void OnTick()
{
   // 現在のバーの短期・長期移動平均線の値を取得
   double shortMA_current = iMA(NULL, 0, ShortPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);
   double longMA_current  = iMA(NULL, 0, LongPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);

   // 1本前のバーの短期・長期移動平均線の値を取得
   double shortMA_prev = iMA(NULL, 0, ShortPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
   double longMA_prev  = iMA(NULL, 0, LongPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);

   // 自分のマジックナンバーのポジションがあるか確認
   bool hasPosition = false;
   for(int i = 0; i < OrdersTotal(); i++)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         // マジックナンバーと通貨ペアが一致するポジションがあるかチェック
         if(OrderMagicNumber() == MagicNumber &#038;&#038; OrderSymbol() == Symbol())
         {
            hasPosition = true;
            break;
         }
      }
   }

   // すでにポジションがある場合は注文しない
   if(hasPosition) return;

   // ゴールデンクロスの判定
   // 1本前：短期MA ≦ 長期MA かつ 現在：短期MA ＞ 長期MA
   if(shortMA_prev <= longMA_prev &#038;&#038; shortMA_current > longMA_current)
   {
      // 損切り・利確の価格を計算
      double sl = Ask - StopLossPips * Point;
      double tp = Ask + TakeProfitPips * Point;

      // 買い注文を実行
      int ticket = OrderSend(
         NULL, OP_BUY, LotSize, Ask, 20,
         sl, tp,
         "GoldenCross Buy",  // ゴールデンクロスの買い注文
         MagicNumber, 0, clrBlue
      );

      if(ticket < 0)
      {
         Print("ゴールデンクロス買い注文失敗 エラー: ", GetLastError());
      }
      else
      {
         Print("ゴールデンクロス買い注文成功 チケット: ", ticket);
      }
   }
}</code></pre></div>



<p>このサンプルのポイントは、<strong>マジックナンバーを使ってポジションの重複を防いでいる</strong>ところです。すでに自分のEAがポジションを持っている場合は、新たな注文を出さないようにしています。</p>



<p>　</p>



<h3 class="wp-block-heading"><span id="toc11">サンプル③：買い注文と売り注文を切り替えるEA</span></h3>



<p>実際のEA開発では、条件に応じて<strong>買い注文と売り注文を使い分ける</strong>必要があります。</p>



<p>以下のサンプルは、RSIの値に応じて売買方向を切り替えるEAです。<strong>買い注文と売り注文でAsk/Bidや損切り・利確の方向が逆になる</strong>点に注目してください。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="MQL4"><code>//+------------------------------------------------------------------+
//| RSIの値で売買を切り替えるEA                                      |
//+------------------------------------------------------------------+
extern double LotSize     = 0.1;   // ロット数
extern int    RSI_Period  = 14;    // RSIの期間
extern int    RSI_BuyLevel  = 30;  // RSIがこの値以下なら買い（売られすぎ）
extern int    RSI_SellLevel = 70;  // RSIがこの値以上なら売り（買われすぎ）
extern int    SL_Pips     = 40;    // 損切り幅（pips）
extern int    TP_Pips     = 80;    // 利確幅（pips）
extern int    MagicNumber = 2002;  // マジックナンバー

void OnTick()
{
   // 自分のポジションがすでにあれば何もしない
   for(int i = 0; i < OrdersTotal(); i++)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         if(OrderMagicNumber() == MagicNumber &#038;&#038; OrderSymbol() == Symbol())
            return;  // ポジションがあるので処理を中断
      }
   }

   // RSIの値を取得（現在のバー）
   double rsiValue = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, 0);

   // RSIが30以下 → 売られすぎなので買い注文
   if(rsiValue <= RSI_BuyLevel)
   {
      // 買い注文の場合：Askで注文、SLはAskより下、TPはAskより上
      double sl = Ask - SL_Pips * Point;
      double tp = Ask + TP_Pips * Point;

      int ticket = OrderSend(
         NULL, OP_BUY, LotSize, Ask, 20,
         sl, tp,
         "RSI Buy",       // RSIによる買い注文
         MagicNumber, 0, clrBlue
      );

      if(ticket >= 0)
         Print("RSI買い注文成功 RSI=", rsiValue, " チケット=", ticket);
      else
         Print("RSI買い注文失敗 エラー=", GetLastError());
   }

   // RSIが70以上 → 買われすぎなので売り注文
   if(rsiValue >= RSI_SellLevel)
   {
      // 売り注文の場合：Bidで注文、SLはBidより上、TPはBidより下
      // ※買い注文とは損切り・利確の方向が逆になる点に注意！
      double sl = Bid + SL_Pips * Point;
      double tp = Bid - TP_Pips * Point;

      int ticket = OrderSend(
         NULL, OP_SELL, LotSize, Bid, 20,
         sl, tp,
         "RSI Sell",      // RSIによる売り注文
         MagicNumber, 0, clrRed
      );

      if(ticket >= 0)
         Print("RSI売り注文成功 RSI=", rsiValue, " チケット=", ticket);
      else
         Print("RSI売り注文失敗 エラー=", GetLastError());
   }
}</code></pre></div>



<p>初心者がよく間違えるポイントですが、<strong>買い注文はAsk、売り注文はBid</strong>を使います。また、<strong>損切り・利確の方向も売買で逆</strong>になりますので、必ず確認するようにしましょう。</p>



<p>　</p>



<h3 class="wp-block-heading"><span id="toc12">サンプル④：注文関数を共通化して使い回す方法</span></h3>



<p>EA開発に慣れてくると、<strong>注文処理を関数として共通化</strong>しておくと、コードの見通しが良くなり、バグの防止にもつながります。</p>



<p>以下は、買い注文・売り注文をそれぞれ関数化したサンプルです。OnTick()からシンプルに呼び出せるようになります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="MQL4"><code>//+------------------------------------------------------------------+
//| 注文関数を共通化して使い回すサンプル                              |
//+------------------------------------------------------------------+
extern double LotSize     = 0.1;   // ロット数
extern int    SL_Pips     = 50;    // 損切り幅（pips）
extern int    TP_Pips     = 100;   // 利確幅（pips）
extern int    Slippage    = 20;    // スリッページ
extern int    MagicNumber = 3003;  // マジックナンバー

//+------------------------------------------------------------------+
//| 買い注文を出す関数                                                |
//+------------------------------------------------------------------+
int SendBuyOrder(string comment)
{
   double sl = Ask - SL_Pips * Point;
   double tp = Ask + TP_Pips * Point;

   int ticket = OrderSend(
      NULL, OP_BUY, LotSize, Ask, Slippage,
      sl, tp,
      comment, MagicNumber, 0, clrBlue
   );

   if(ticket < 0)
      Print("買い注文失敗 エラー: ", GetLastError());
   else
      Print("買い注文成功 チケット: ", ticket);

   return ticket;
}

//+------------------------------------------------------------------+
//| 売り注文を出す関数                                                |
//+------------------------------------------------------------------+
int SendSellOrder(string comment)
{
   double sl = Bid + SL_Pips * Point;
   double tp = Bid - TP_Pips * Point;

   int ticket = OrderSend(
      NULL, OP_SELL, LotSize, Bid, Slippage,
      sl, tp,
      comment, MagicNumber, 0, clrRed
   );

   if(ticket < 0)
      Print("売り注文失敗 エラー: ", GetLastError());
   else
      Print("売り注文成功 チケット: ", ticket);

   return ticket;
}

//+------------------------------------------------------------------+
//| 自分のポジションがあるか確認する関数                              |
//+------------------------------------------------------------------+
bool HasMyPosition()
{
   for(int i = 0; i < OrdersTotal(); i++)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         if(OrderMagicNumber() == MagicNumber &#038;&#038; OrderSymbol() == Symbol())
            return true;
      }
   }
   return false;
}

//+------------------------------------------------------------------+
//| メイン処理                                                        |
//+------------------------------------------------------------------+
void OnTick()
{
   // すでにポジションがある場合は何もしない
   if(HasMyPosition()) return;

   // 移動平均線の値を取得
   double shortMA = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_CLOSE, 0);
   double longMA  = iMA(NULL, 0, 25, 0, MODE_SMA, PRICE_CLOSE, 0);

   // 短期MAが長期MAより上なら買い注文
   if(shortMA > longMA)
   {
      SendBuyOrder("MA Buy");
   }
   // 短期MAが長期MAより下なら売り注文
   else if(shortMA < longMA)
   {
      SendSellOrder("MA Sell");
   }
}</code></pre></div>



<p>このように注文処理を関数化しておくと、<strong>OnTick()の中がスッキリ</strong>して読みやすくなります。また、買い注文・売り注文の処理が1か所にまとまるので、<strong>修正やバグ修正も簡単</strong>になります。</p>



<p>特に<strong>HasMyPosition()関数</strong>のように、ポジションの有無を確認する処理も関数化しておくと、どのEAでも使い回しができて非常に便利です。</p>



<p>　</p>



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



<p>今回はOrderSend関数の使い方を解説しました。</p>



<p>ポイントをまとめると以下の通りです。</p>



<p><strong>・OrderSend関数はエントリー注文を出すための関数<br>・引数は11個あるが、まずは成り行き注文を覚えればOK<br>・買い注文はAsk、売り注文はBidを使う<br>・損切り・利確の方向は、買いと売りで逆になる<br>・エラーハンドリング（GetLastError）を入れておくとデバッグが楽になる<br>・注文処理を関数化しておくと、コードの管理がしやすくなる</strong></p>



<p><strong><span class="marker-under-red">まずはサンプル①のシンプルな成り行き注文から試してみて、慣れてきたらサンプル④のように関数化していくのがおすすめです。</span></strong></p>



<p>ぜひ、自分のEA開発に活用してみてください！</p>
<p>投稿 <a href="https://mql-programing.com/archives/550/ordersend/">【MQL4関数】OrderSend関数の使い方！エントリー注文の出し方とサンプルプログラム</a> は <a href="https://mql-programing.com">自動売買を作ろう！</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
