FX手法

MQL言語初心者が初見でつまづきやすい「forの定型文」について解説するよ!

MQL言語初心者が初見でつまづきやすい「forの定型文」について解説するよ!

【2021年版】優位性の高いFX商材 Best10 (2021年11月版)

1 マーケティングFX
2 FXismデイトレ大百科
3 FXismプロコントローラー改
4 トワイライトゾーンFX
5 岡安盛男のFX 極
6 ProEX(プロエグジット)
7 FX Realize
8 あなたがFXで1番知りたかったこと。先進のFXビクトリーメソッド【アドバンス】完全版
9 スキャルピングFXプロ
6 1秒スキャルFX

全FX商材評価一覧はこちら

”MQL言語初見殺し”の「forを使った定型文」

MQLプログラミング言語、学習していますか?

今回は、MQL言語の学習者が初見でつまづく「forを使った定型文」について解説します。

つまづく…というよりは混乱すると書いたほうが正しいかもしれませんね。

オリジナル・インジケーターを作る際に欠かせない「for()文」。いわゆる繰り返し(ループ処理)をおこなうための命令文ですね。

オーソドックスなインジケーターをチャート上に表示させるには、全てのローソク足に合わせてインジケーターの値をプロットしていかなくてはいけません。

MetaTrader4のチャート上のローソク足ってたくさんありますよね。なので、最初に決めておいた計算式を「ローソク足本数分繰り返しなさい」という命令文を書くわけです。そのためにMQLプログラムでは繰り返し命令文=「for()」を使用することが一般的です。

for文は以下のように記述します。

for(初期化; 条件式; 更新式)
{
処理;
}

「forを使った定型文」は、インジケーターを構成する重要なソースコードの一つです。ところが、この命令文(for文)の書き方が色々と存在するために、初心者が「あれ?どれが正しいの?」と戸惑ってしまいます。

そもそもプログラムは、同じことをするための書き方(ソースコード)が色々と存在します。目的は同じでもプログラミングのやり方は人それぞれなのですね。もちろんシンプルで誰が見ても理解しやすく破綻のないソースコードがベストです。

この「forを使った定型文」=「全ローソク足を一巡して計算をおこなう処理」の書き方を、いくつか取り上げてみましょう。

forを使ったループ処理定型文【その1】

まずは、『新MT4対応 FXメタトレーダープログラミング入門』から引用します。

豊嶋 久道(著)・2015年11月1日出版
【Kindle版】900円(Kindle Unlimited会員は無料)

int limit = rates_total - prev_calculated; 
for(int i = 0; i < limit; i++)
{
処理;
}
return(rates_total-1);

limitを変数として宣言しておき、そこにrates_total(=ローソク足の総数)からprev_calculated(=計算済みのローソク足の数)を引いた値を入れておきます。

ローソク足が100本あるとして(rates_total=100)、最初は1本も計算していないのでprev_calculated(=計算済みのローソク足の数)はゼロですよね。なので、limitは100です。2回目以降のループ処理では、新しくできたローソク足だけを計算しましょう(rates_total – prev_calculated)、ということです。ティックが変わるたびに全ローソク足を計算するのは無駄が多いし負荷がかかります。なので新足のみを計算するわけです。

for(int i=0; i<limit; i++)で、0からスタートしlimitが99になるまで1本づつ増やしながら(i++)、ループ処理をおこなっていく…という命令文ですね。

最後のreturn(rates_total-1)の意味がやや難しいのですが、一度全てのローソク足をプロット後に、新しくできたローソク足の処理(つまり2回目以降の処理)をする際に、新足のみを計算させるためにreturn(rates_total-1)と書いています。仮に100本のローソク足があるとすれば、1を引くことでprev_calculatedに99を入れるためですね。そうすればrates_total(100) – prev_calculated(99)=1となるので、limitは1となります。結果、最新のローソク足(i < limitまでだから、0番)のみを計算することができるようになるのですね。

forを使ったループ処理定型文【その2】

さて、同じような処理を別の書き方で表したものを見てみましょう。※厳密に言えば同じ処理ではありません。似たような処理と考えてください。

以下のソースコードはMT4のベテランHTさんが動画内で紹介されていたものです。

int limit = Bars - IndicatorCounted() -1;
if(limit < 1)limit = 1;
for(int i = limit; i >= 0; i--)
{
処理;
}

Bars(=チャートの最大ローソク足総数)からIndicatorCounted()(=変化していないローソク足の本数、最初は0,2回め以降は計算済みの本数が入る=確定足)を引き、さらにマイナス1したものをlimitに入れます。ローソク足の総数が100本(0〜99番)ならば、最初は100-0-1=99、limitは99になりますね。つまり一番左側の古いローソク足(=99番)がlimitに代入されます。

for文では、99からスタートして、ゼロになるまで(i >= 0)1本ずつマイナスしながら(i–)ループ処理をおこなっています。

新しいローソク足が完成すればBarsは101になり、計算済み足のIndicatorCounted()は100となりますね。limitは101−100−1=0となります。しかし「if(limit < 1)limit = 1;」によって、limitは1になります。つまり0番目と1番目の足を計算することになりますね。

本来ならば、最新の足(つまり0番)のみを計算すればOKなのですが、データ(値)の正確性を担保するために、「if(limit < 1)limit = 1;」を加えて、常に最新のローソク足(0番)とその次に古い足(1番)を計算する処理をおこなっているとの解説です。

forを使ったループ処理定型文【その3】

もう一つ、You TubeでMQL言語の初心者向け解説をされている「キャンドルマツ」さんの動画から、同じ部分を取り出してみます。

int limit = Bars - IndicatorCounted() -1;
for(int i = limit; i >= 0; i--)
{
処理;
}

HTさんのソースコードと似ていますね。上から2行目のコード(if(limit < 1)limit = 1;)が欠けてるだけで、あとは全く同じです。

最初は、チャート上のローソク足の総数Barslimitに入れ、次回以降は「変化したバーの数」マイナス1がlimitに代入されます。「キャンドルマツ」さんの説明によれば、「−1」はバグ調整で付け足してあるとのこと。 MT4のバグによってBars – IndicatorCounted()が正しい値を返してくれない場合があり、その結果2本のローソク足が残る可能性(例 100ー98=2)があるので、あえて「−1」してlimitは常に1になるようにしているとの説明です(100ー98−1=1)。その調整によって、常に2本の足(0番と1番)を繰り返し計算してプロットすることになるとのこと。このバグの存在については私も詳しくないため、説明がよくわかりませんでした。詳しくは解説動画をご覧ください。

どちらかといえばHTさんのif(limit < 1)limit = 1;処理の方が私は理解しやすいかな?と思いました。仮にlimitが0でも1でも、1を返すわけです。まあ、このあたりは好みの問題かもしれませんね。

2行目のfor文については、HTさんと同じように最新のローソク足から過去に向かって計算を進めるソースコードです。最初に紹介した『新MT4対応 FXメタトレーダープログラミング入門』のソースコードは、過去のローソク足(一番古いローソク足)を起点にして、徐々に新しいローソク足へと計算をすすめるソースコードです。

forを使ったループ処理定型文【その4】

ネットで検索すれば、以下のようなソースコードを見かけたりすることもあります。

int limit = Bars - IndicatorCounted();
for(int i = 0; i < limit; i++)
{
処理;
}
int limit = Bars - IndicatorCounted();
for(int i = limit - 1; i >= 0; i--)
{
処理;
}

すごくシンプルですね。どちらのソースコードも、2回目以降は0番目(=最新のローソク足)のみを計算する処理です。

最新のローソク足から過去に向かって計算を進めるのか、それとも過去のローソク足(一番古いローソク足)を起点にして、徐々に新しいローソク足へと計算をすすめるのかは、作りたいインジケーターによって選択します(過去足を基準に計算するインジケーターならば、過去足を起点にして新しい足へと計算をすすめるコードを書くなど)。

まとめ:人によって微妙にコードの書き方が異なる

上に挙げたとおり、プログラマーによって微妙にコードの書き方が異なったり、作りたいインジケーターによって計算順序が異なったりと、MQL初心者(プログラミング初心者)にとっては混乱する要素が満載です。

頭がかたすぎたり融通がきかな場合、こうした違いにいちいち悩まされたりするんですよね。まずは、(プログラミングとはこういうものだ)と思って、学習を進めるしかありません。

構成・文/戸室達也

オリジナル特典|有料級ツールを22個まとめて無料プレゼント|日本語マニュアル付

当サイト「購入リンク」からFX商材をご購入いただいた方に、以下のオリジナル特典をすべて無料でご提供させて頂きます。管理人制作のオリジナルインジケーターに加え、海外のメジャー(かつ人気のある)ツールの中から、優位性の高いインジケーターを慎重に厳選しました。有料で提供されてもおかしくないほどの優位性・利便性を備えたツールばかりをラインナップしました。 すべてのツールに、オリジナル日本語翻訳マニュアルをご用意しました。

1.環境認識 &シグナルツール(9個)

管理人制作のオリジナルツールに加え、海外でメジャー(かつ人気のある)ツールの中から優位性の高いインジケーターを慎重に厳選しました。有料で提供されてもおかしくないほどの優位性・利便性を備えたツールばかりです。
Shin Bollinger Bands
Shin Bollinger Bands(旧 SQI)
新着! 2021年5月12日
以前配布していた特典の中で最も人気の高かった「SQI」をヴァージョンアップ。「Shin Bollinger Bands」は、ボリンジャーバンドのエクスパンション(バンドウォーク)を視覚的に捉えるためのツールです。トレンド発生の目安となるバンドウォーク発生を、ヒストグラムで知らせてくれます。 ≫ 特典の詳細はこちら
Shin TQ Chart
Shin TQ Chart
新着! 2021年4月25日
The Secre(投資家集団)からの提供ツールです。トレンドをどこまでも追いかけて利益にする順張り系シグナルツール。性能の素晴らしさについては、ぜひ動画をご覧ください。 ≫ 特典の詳細はこちら
Shin High Low Break
Shin High Low Break
トレンド中の押し目や戻りをピンポイントで狙ってシグナル(矢印)を点灯させます。複数のMAによるパーフェクトオーダーでトレンドを確認し、連続する3つのローソク足がMAまで戻された状態を押し目・戻りと判断。最後のローソク足の高値・安値ブレイクでシグナルを出します。シグナル精度は動画でご確認ください。 ≫ 特典の詳細はこちら
shin-top% Indicator
Top % Indicator 3
非常にユニークなツール。レートが動きそうな方向を%(パーセント)で表示してくれるインジケーターです。エントリータイミングでシグナル(矢印)も表示してくれます。FXだけでなくバイナリーオプションにも活用できます。精度の高さは言うまでもありません。 ≫ 特典の詳細はこちら
Shin BOX Chart
Shin Box Chart(旧 SQBOX)
当サイトで以前配布していたSQBOXのヴァージョンアップ版です。BOX(箱)によってレンジを判断し、BOXをブレイクしたところでENTRY。環境認識ツールとしても取引ツールとしても使える優れものです。 ≫ 特典の詳細はこちら
shin forex meter
Shin Forex Meter(通貨強弱)
数ある通貨強弱ツールの中から、最も使いやすいものをセレクトしました。通貨ペア毎のトレンド状態と、通貨同士の強弱をグラフで表示してくれるツールです。強い通貨を買い、弱い通貨を売る、これが売買の基本です。意識するだけで勝率がグンと上がります。 ≫ 特典の詳細はこちら
shin-stochastic MTF
Shin Stochastic MTF
2本のストキャスティクスのクロスでシグナル(矢印)を表示してくれるツール。ストキャスはMTF(マルチタイムフレーム)対応しており、任意の時間足のストキャスを設定可能。驚くほど天底を捉えるシグナル精度に、驚かされます。 ≫ 特典の詳細はこちら
BO-Simulator
Shin BO Simulator
バイナリーオプション専用のシミュレーターです。チャート上に表示させ、UP・Downボタンをクリックすることで、仮想取引ができます。チャート上にもENTRYマークが表示されます。指定時間で勝敗判定が自動的に行われ、取引結果も表示されます。シミュレーターとしては非常に細かな設定が可能であり、BO練習には欠かせないツールです。 ≫ 特典の詳細はこちら
Infoboard
Shin Info Board
相場状況を、信号機のような色で教えてくれる便利ツールです。1分足から日足までのトレンドの方向がひと目で判断できます。その他にも様々な相場情報(ATR値や値幅、スプレッドetc.)を一覧で表示してくれる利便性の高いボードです。 ≫ 特典の詳細はこちら

2.実用・便利ツール(7個)

MT4に常時設置しておきたい便利なツールを集めました。似たようなツールはたくさんありますが、その中でも使い勝手の良さや正確性などから7つのツールを厳選しました。
Pair Buttons
Shin Pair Buttons
一度使ったらもう手放せない!それほど便利なツールがこれ。通貨ペアや時間足をワンクリックで切り替えることができるボタンです。動作も軽いので常時チャート上に表示させておきたいツールです。とにかく使ってみて! ≫ 特典の詳細はこちら
Shin Rounder
Shin Rounder
キリ番(00や000)にラインを自動的に引いてくれる便利ツール。同様のツールの中でも、このツールが最も使いです。シンプルで軽く、ほかのラインと区別しやすいデザインのため、管理人も愛用しています。常に表示させておきたいツールの一つです。 ≫ 特典の詳細はこちら
Shin WT Lines
Shin WT Lines
トレンドラインやサポート・レジスタンスラインを引くためのボタンです。チャートの右下にある「TSR」ボタンをクリックするだけで簡単にラインが表示されます。MT4チャートのツールバーをクリックするよりも断然ラクに引けます。重宝します。 ≫ 特典の詳細はこちら
Shin SyncCursor
Shin Sync Cursor
チャート上に、常時、十字カーソルを表示させるインジケーターです。通常はクリックしてしまうとチャート上の十字カーソルは消えてしまいます。このツールを導入すると、クリックしても十字カーソルは消えません。ずっと表示したまま使えます。 ≫ 特典の詳細はこちら
Shin Trend Line
Shin Trend Line
トレンドライン(斜めのライン)を自動的に描写してくれるツールです。この手のツールは数多く出回っていますが、本ツールが最もおすすめです。シンプルさと精度の高さでは随一です。ラインを多用するトレーダーならば持っていて損はありません。 ≫ 特典の詳細はこちら
Shin Horizon
Shin Horizon
直近の高値・安値を起点に、水平ラインを自動描写してくれるツールです。サポレジラインとしてだけでなく、TPやSLの目安としても活用できるラインです。自分で引くラインに自信のない人は、まずはこれを使ってみることをおすすめします。 ≫ 特典の詳細はこちら
Market Clock
Shin Market Clock
東京市場、ロンドン市場、NY市場の時間を同時に表示してくれるツールです。海外トレーダーのYou Tube動画などで、よく見かけるツールの一つですね。シンプルですが、あると何気に便利です。 ≫ 特典の詳細はこちら

3.有料級|海外のメジャー取引システム(6個)

国内ではほとんど知られていない、優位性の極めて高いFXトレーディングシステムを厳選して紹介します。どれも有料で販売されてもおかしくないほどの完成度・優位性の高さです。
THV System
THV V4 Trading System(日本語マニュアル付)
新着! 2021年7月8日
世界で最も有名なトレーディングシステムといえばこれ、「THV」ですね。海外FXフォーラム『ForexFactory』から誕生したTHVは、またたくまに大人気となりました。その理由は当然ながら優位性の高さです。年々進化を重ね、現在はV4となりました。とにかく一度は試して欲しい取引システムです。オリジナル日本語マニュアルもご用意しました。 ≫ 特典の詳細はこちら
XARDFX System
XARDFX Trading System(日本語マニュアル付)
新着! 2021年3月8日
ここ数年、THVと双璧をなすほどの人気の高まりをみせているのが「XARDFX Trading System」。派手なチャート画面に目を奪われますが、人気の秘密は環境認識のしやすさ、そしてトレードのしやすさにあります。トレンドを視覚的に捉えやすいチャート画面は秀逸です。オリジナル日本語マニュアル付きです。 ≫ 特典の詳細はこちら
Forex Levelator System
Levelator Trading System(日本語マニュアル付)
非常に興味深い取引システムです。期間100の中の高値安値をベースにグラデーションのゾーンを表示させ、そのゾーンと移動平均線を使ってトレードするシステムです。見た目と違ってロジックは極めてシンプルかつ王道。これが無料!オリジナル日本語解説付きでご提供します。 ≫ 特典の詳細はこちら
Congestion Breakout System
Congestion Breakout System(日本語マニュアル付)
FX商材「トワイライトゾーン」によく似た取引システムです。2本のラインをブレイクした方向に仕掛ける順張り手法です。シンプルながら精度の高さは折り紙付き。まずは使ってみてください。日本語解説マニュアル付き。 ≫ 特典の詳細はこちら
Alfa Super Trend System
Alfa Super Trend System(日本語マニュアル付)
トレンド発生中の押し目や戻りを確実に捉えてシグナル(矢印)を点灯させます。わりと日本人好みのツールですね。シグナルの取捨選択は表示させているスーパートレンドインジケーターを使います。日本語解説マニュアル付きでご提供します。 ≫ 特典の詳細はこちら
arrozaq scalping system
Arrozaq Scaiping System(日本語マニュアル付)
シグナル点灯系の取引システムです。サブウィンドウのヒストグラム等でシグナル(矢印)をフィルタリングしてトレードを行います。日本のFX商材に似たツールですが、精度は高いです。シグナル好きの日本人にマッチするツールですね。日本語解説マニュアル付きでご提供します。 ≫ 特典の詳細はこちら

【2021年版】優位性の高いFX商材 Best10 (2021年11月版)

1 マーケティングFX
2 FXismデイトレ大百科
3 FXismプロコントローラー改
4 トワイライトゾーンFX
5 岡安盛男のFX 極
6 ProEX(プロエグジット)
7 FX Realize
8 あなたがFXで1番知りたかったこと。先進のFXビクトリーメソッド【アドバンス】完全版
9 スキャルピングFXプロ
6 1秒スキャルFX

全FX商材評価一覧はこちら

2021年 最新FX情報商材評価

S評価商材
A評価商材
B評価商材
C評価商材
D評価商材
評価S
…非常に高く評価する
評価A
…高く評価する
評価b
…評価する
評価c
…平均的
評価d
…低品質・粗悪
全FX商材評価一覧はこちら
FX情報商材検証レビュー.com(辛口評価&暴露サイト)
タイトルとURLをコピーしました