<?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/category/mql-function/program-readable/feed/" rel="self" type="application/rss+xml" />
	<link>https://mql-programing.com/archives/category/mql-function/program-readable/</link>
	<description>MQLプログラミング学習サイト</description>
	<lastBuildDate>Thu, 30 Sep 2021 13:19:43 +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/category/mql-function/program-readable/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【MQLプログラミング】自動売買（EA）の実行タイミングとは？MQLプログラム例あり</title>
		<link>https://mql-programing.com/archives/106/mql-basic-structure/</link>
					<comments>https://mql-programing.com/archives/106/mql-basic-structure/#respond</comments>
		
		<dc:creator><![CDATA[朝日奈りさ]]></dc:creator>
		<pubDate>Sat, 10 Oct 2020 06:18:58 +0000</pubDate>
				<category><![CDATA[【初級編】MQLプログラミング基礎]]></category>
		<category><![CDATA[プログラムの読み方]]></category>
		<category><![CDATA[MQL]]></category>
		<category><![CDATA[基本構造]]></category>
		<guid isPermaLink="false">https://mql-programing.com/?p=106</guid>

					<description><![CDATA[<p>自動売買プログラム（EA）の構造パターンとは 自動売買プログラムを新規作成すると、すでにある程度プログラミングされています。 というのも、自動売買はプログラムの構造パターンがあり、いちいち書き込まなくても良いようになって [&#8230;]</p>
<p>投稿 <a href="https://mql-programing.com/archives/106/mql-basic-structure/">【MQLプログラミング】自動売買（EA）の実行タイミングとは？MQLプログラム例あり</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">自動売買プログラム（EA）の構造パターンとは</span></h2>



<p>自動売買プログラムを新規作成すると、すでにある程度プログラミングされています。</p>



<p>というのも、自動売買はプログラムの構造パターンがあり、いちいち書き込まなくても良いようになっているからです。</p>



<p><strong><span class="marker-under">その構造パターンとは、Oninit, OnDeinit, OnTick の3構造です。</span></strong></p>



<p>3つに分けられているのには理由があります。</p>



<p>それは<strong>実行タイミングを分けるため</strong>です。</p>



<p>実行タイミングが分かれていることで、プログラムを実行したときの動作をイメージしやすく、プログラミングをやりやすくなるというメリットがあります。</p>



<p>　</p>



<h2 class="wp-block-heading"><span id="toc2">大域・大域変数</span></h2>



<p>3構造の解説に入る前に、「<strong>大域</strong>」という概念があります。</p>



<p>これは、プログラム全体を指す言葉で、大域の中にプログラミングしていくことになります。</p>



<p>MQL以外のプログラミング言語（C言語、Java、Pythonなど）を勉強していると、<strong><span class="marker-under-red">「大域変数」</span></strong>という言葉が出てきます。</p>



<p>これは、<strong>「プログラム全体で利用できる変数」</strong>という意味です。</p>



<p>MQLでも大域変数を良く使うので、覚えておくと良いでしょう。</p>



<p>　</p>



<p>それでは、それぞれの構造と実行タイミングについて解説していきます。</p>



<p>　</p>



<h2 class="wp-block-heading"><span id="toc3">初期化関数（OnInit）</span></h2>



<p>OnInit関数は主に初期化に使われる関数です。</p>



<p>実行されるタイミングとしては、自動売買をMT4で起動した直後に、<strong><span class="marker-under-red">1回だけ実行</span></strong>されます。</p>



<p>プログラムによっては、書き込む必要がない関数なので、白紙の場合もあります。</p>



<h3 class="wp-block-heading"><span id="toc4">プログラム例</span></h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>int OnInit()
  {

//チャートごとにマジックナンバーを変える
   MAGIC=GetUniqueMagic();

//LEVERAGEによるロット数を計算
   double lotSize=LotSizeCalc();
   double LotSize=DoubleToStr(lotSize,2);

//ロット数を表示するためのオブジェクトを作成
   if(ObjectFind(0,&quot;LotSize&quot;)==-1) 
      MyObjectCreate(0,&quot;LotSize&quot;,OBJ_EDIT,SIZE,SIZE,SIZE,CORNER_RIGHT_UPPER,LotSize,SIZE,clrBlack,clrWhite);

//OnInitの終了
   return(INIT_SUCCEEDED);
  }</code></pre></div>



<p>上記のプログラム例は、私が実際に使っているOnInit関数です。</p>



<p>自分で作った関数も含まれております。</p>



<p>チャート上にオブジェクト（ボタンやテキストボックスなど）を作る場合は、<strong>OnInit関数でオブジェクトを作ると良い</strong>でしょう。</p>



<p>このように、Oninit関数はプログラムを開始するための準備（変数の初期化など）を書き込むものです。</p>



<p>　</p>



<h2 class="wp-block-heading"><span id="toc5">終了関数（OnDeinit）</span></h2>



<p>OnDeinit関数は主にメモリの解放に使われる関数です。</p>



<p>実行タイミングとしては、自動売買を終了したときに、<strong><span class="marker-under-red">1回だけ実行</span></strong>されます。</p>



<p>多くのプログラムでは、書き込む必要がない関数なので、白紙の場合が多いです。</p>



<h3 class="wp-block-heading"><span id="toc6">プログラム例</span></h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>void OnDeinit(const int reason)
  {
//作成したオブジェクトを削除
   if(ObjectFind(0,&quot;LotSize&quot;)==0)ObjectDelete(&quot;LotSize&quot;);
  }</code></pre></div>



<p>OnInit関数で作成したオブジェクトを、OnDeinit関数で解放します。</p>



<p><strong>この終了処理をしなかった場合、自動売買を終了してもオブジェクトがそのまま残ることになります。</strong></p>



<p>逆にオブジェクトを残したい場合は、OnDeinit関数で解放する必要はありません。</p>



<p>このように、OnInit関数で準備したものを、解放させるのがOnDeinit関数です。</p>



<p>　</p>



<h2 class="wp-block-heading"><span id="toc7">メイン関数（OnTick）</span></h2>



<p>OnTick関数は主に自動売買のロジックや、売買注文を書き込むところです。</p>



<p>実行タイミングとしては、ティック値（価格：ドル円なら105.00円など）が動いたときに実行されます。</p>



<p>OnInit関数やOnDeinit関数と違い、<strong><span class="marker-under-red">ティック値が動くたび、何度も実行されます。</span></strong></p>



<p>自動売買プログラムの根幹となる関数です。</p>



<h3 class="wp-block-heading"><span id="toc8">プログラム例</span></h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>void OnTick()
  {

//オブジェクトの値を更新
   ObjectSetString(0,&quot;LotSize&quot;,OBJPROP_TEXT,&quot;Lot: &quot;+LotSize);

//過去のバー100個のうちエントリーしていないかチェック
   if(Bars&lt;100 || IsTradeAllowed()==false)
      return;

//ポジションを決済
   if(CalculateCurrentOrders(Symbol())==0) 
      CheckForOpen();
   else                                    
      CheckForClose();
  }</code></pre></div>



<p>　</p>



<p>上記の例の<strong><span class="marker-under">OnTick関数では、自動売買のロジックをプログラミングし、ポジションを決済します。</span></strong></p>



<p>そのため、最も難易度が高く、習得するには時間がかかります。</p>



<p>しかしプログラミングのコツを覚えてしまえば、意外と簡単に作れるので、自分のプログラムだけでなく、他人のプログラムも見てみるとコツをつかみやすいです。</p>



<p>またロジックを実現するための、OnTick関数だけで使える関数などが、たくさん準備されています。</p>



<p>　</p>



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



<p>今回は自動売買プログラムの3構造を解説しました。</p>



<p><strong>・OnInit関数は初期化するための関数<br>・OnDeinit関数はメモリ解放するための関数<br>・OnTick関数はロジックを実行し、売買注文を出すための関数</strong></p>



<p>初めのうちはOnTick関数だけ作れば問題ないので、OnTick関数でロジックの実現に注力すると良いと思います。</p>



<p>大域変数もうまく活用してくださいね。</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/make_autotrade_by_myself/" title="【MQL4プログラミング】自動売買の作り方！FXで使えるテンプレートあり" 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/09/make_autotrade_by_myself.jpg?fit=1200%2C675&#038;ssl=1" 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">【MQL4プログラミング】自動売買の作り方！FXで使えるテンプレートあり</div><div class="blogcard-snippet external-blogcard-snippet">目次 はじめにFX自動売買とはFX自動売買を作るための準備FX自動売買の作り方口座凍結の対策をするプログラムテンプレートを作る決済ロジックをプログラミングするプログラムテンプレートを作るエントリーロジックをプログラミング</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/1605/make_autotrade_by_myself/" 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>



<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/mql-reference/" title="MQL4リファレンス【全データ一覧】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" width="160" height="90" src="https://mql-programing.com/main29/wp-content/uploads/2021/02/MQLリファレンス-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://mql-programing.com/main29/wp-content/uploads/2021/02/MQLリファレンス-160x90.jpg 160w, https://mql-programing.com/main29/wp-content/uploads/2021/02/MQLリファレンス-300x169.jpg 300w, https://mql-programing.com/main29/wp-content/uploads/2021/02/MQLリファレンス-1024x576.jpg 1024w, https://mql-programing.com/main29/wp-content/uploads/2021/02/MQLリファレンス-768x432.jpg 768w, https://mql-programing.com/main29/wp-content/uploads/2021/02/MQLリファレンス-120x68.jpg 120w, https://mql-programing.com/main29/wp-content/uploads/2021/02/MQLリファレンス-320x180.jpg 320w, https://mql-programing.com/main29/wp-content/uploads/2021/02/MQLリファレンス.jpg 1120w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">MQL4リファレンス【全データ一覧】</div><div class="blogcard-snippet internal-blogcard-snippet">/*! elementor - v3.6.5 - 27-04-2022 */.e-container.e-container--row .elementor-spacer-inner{width:var(--spacer-size)}.e-</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://mql-programing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">mql-programing.com</div></div></div></div></a>
</div></figure>



<p></p>



<p>　</p>
<p>投稿 <a href="https://mql-programing.com/archives/106/mql-basic-structure/">【MQLプログラミング】自動売買（EA）の実行タイミングとは？MQLプログラム例あり</a> は <a href="https://mql-programing.com">自動売買を作ろう！</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mql-programing.com/archives/106/mql-basic-structure/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
