Wizard In The Market
システムトレードの魔術師

*

■超直感!MT4プログラミング講座■ 第12回 配列の応用方法を覚えよう!

公開日: : 最終更新日:2015/01/13 MT4(MQL4)プログラミング講座

こんばんは。キリンです。
TopGunの運用で、初めて3機目まで導入されてしまいました。
最後に投入するということもあり、かなりの勝率を誇っている3機目ですが、
決済されるまでの精神的負担はでかいですね。
更なる改良や、別のEAを作る際にそれが緩和できるものを目指したいと思います。
では、前回の問題の回答です。

下記のプログラムは正しく表示されません。
間違いはどこでしょう?
string Array[5];
Array[5] = “Array[5]です”;
Print(Array[5]);

という内容でした。
そのブログのコメントで素晴らしい回答をいただきましたので、
ご紹介させていただきます。

宿題の答えは、、、、
string Array[5];
としているので、変数としては5個ですが、0から始まるので、指定できるのは4まで、かな?
だから、
Array[5] = “Array[5]です”;
と指定しても Array[5] は存在しないため表示できないということでしょうか?
りあるさんより

バッチリです。上記が正解です。
プログラミング上の本来の動作であれば、
Array[5] = “Array[5]です”;
という式がある時点でエラーで出力されるべきないようなのです。
定義されていないものに変数の中身を割り当てることができないんですね。
ですので、
Print(Array[5]);
と出力しても何も表示されません。
りあるさん、ありがとうございます!
では、今回の講義に入りたいと思います。


第12回 配列の応用方法を覚えよう!

■なぜ配列を使うのか
■配列とfor文
■連続でPrintを実行させる
■なぜ配列を使うのか?
前回、配列の「型」についてお話させていただきました。
どのようにして配列を定義するか。
実際に配列を変数として扱うにはどのようにすればいいかということは
ご理解いただけたのではないかなと思っています。
今日は、前回の内容を踏まえた上で配列の実用例をご紹介しようと思います。
配列を使うメリットなのですが、何がいいかといいますと、
「 [ ] の中の数字を変更することで、別のデータとして扱うことができる 」
ということです。
おそらくこの日本語では何を言いたいのか伝わらないと思いますので、
実例を挙げますね。
■配列とfor文
次のプログラムをご覧になっていただきたいです。
今までの講義と同様に
sprictのtestのstart()の{}の中に入れていただくと動作します。
お試しいただければと思います。

string Array[5];
Array[0] = “Array[0]です”;
Array[1] = “Array[1]です”;
Array[2] = “Array[2]です”;
Array[3] = “Array[3]です”;
Array[4] = “Array[4]です”;
for(int i=0; i<5; i++){ Print(Array[i]); }

このプログラムは繰り返しの回と配列の回の復習です。
分からないことがありましたら、第9回と第11回を再度ご覧になっていただければと思います。
ここで重要な部位を説明します。
Print(Array[i]);
です。
for文によって、i=0からi++でi<5だから、
Print(Array[0]);
Print(Array[1]);
Print(Array[2]);
Print(Array[3]);
Print(Array[4]);
まで繰り返すプログラムになります。
中身はご理解いただけると思うのですが、
大事なのはこれは「配列」だからできるのであって、
「変数」だとできないという点です。
例えば、
int Hensuu1;
int Hensuu2;
と定義しても、for文で繰り返しさせることができないんですね。
無理やり書こうとすると、
for(i=1; i<3; i++){
Hensuui;
}
となるのですが、Hensuuiというのは、「Hensuui」で一つの変数になっちゃっています。
「Hensuu1」や「Hensuu2」にはならないのですね。
これが、変数でできなくて配列だと実現できることになります。
変数を使うときは、「連続して動作させたいとき」だと思っていただいていいと思います。
例えば、for分を使えば連続で動作させることができるんです。
Array[i]の使い方、しっかり理解してくださいね!
今回の講義はこれで終了です。
次回はグローバル関数、ローカル関数のお話をできればなーって思っています。
問題を楽しみにしていただいている方もいらっしゃるので、
最後に簡単な出題をさせていただきます。

string Array[5];
Array[0] = “Array[0]です”;
Array[1] = “Array[1]です”;
Array[2] = “Array[2]です”;
Array[3] = “Array[3]です”;
Array[4] = “Array[4]です”;
for(int i=0; i<5; i++){
Print(Array[i]);
}

上記のプログラムを、Array[3], Array[4]のみ出力させるよう
プログラムを変更してください。
ご回答楽しみにしていますね!
最後までお読みくださりまして、ありがとうございます!

にほんブログ村 為替ブログへ 
Fx-Kirin

About Fx-Kirin

2009年10月にFXを開始、翌年2010年5月から脱サラをしてFX業界に専念。 2012年10月頃から本格的に勝ち始め、一月で資産を倍にする、2年半月間負けなし等、安定した収支で2013年11月に生涯FX収支が1億を超える。 投資スタイルはシステムトレード。プログラミングの知識がほぼない状態から、独学で自分がしたいと思うことであればほぼ実現することが可能なレベルまで成長。好きな言語はRuby, Python。必要となればC++からVBA、Pascal等なんでも行う。MT4/MT5のプログラミングも得意。 2011年にはFXで稼いだ資金をもとにシンガポールに移住し、留学も兼ねて起業をチャレンジするほど、ビジネスを興すことに熱意がある。国内の業者を主に使い始めたことから、2012年に帰国。零細株式会社経営中。

Adsense

  • このエントリーをはてなブックマークに追加
  • Pocket
  • 67 follow us in feedly

関連記事

no image

■超直感!MT4プログラミング講座 第37回 ブレイクアウトシステムのEA作成(2)

おはようございます。キリンです。 日本、負けてしまいましたね。 でも、すごい感動しました。 すごい夢をもらいました。 優

記事を読む

no image

■超直感!MT4プログラミング講座■ 第26回 発注スプリクトの作成(2)

おはようございます。キリンです。 昨日は招き猫さんに来ていただいて、 引越しを手伝っていただけました。 だけと肝心の準備

記事を読む

no image

■超直感!MT4プログラミング講座■ 第2回 変数を覚えよう!

こんばんは。キリンです。 この講座の第1回で、非常に大きな反響をいただけました。 MT4のプログラミングに興味持っている

記事を読む

no image

■超直感!MT4プログラミング講座■ 第28回 決済スプリクトの作成(1)

こんにちは!キリンです。 引越しも終わり、かなり落ち着いてきました。 時間的制約が皆無になると、セルフコントロール能力が

記事を読む

no image

■超直感!MT4プログラミング講座■ 第33回 発注スプリクトをサブルーチン化する(2)

こんにちは。キリンです。 昨日、同い年の投資を始めている医大生とお会いしてきました。 すでに何度か事業にもチャレンジされ

記事を読む

no image

■超直感!MT4プログラミング講座■ 第38回 ブレイクアウトシステムのEA作成

おはようございます。キリンです。 脱サラしたことがついに親に発覚し、昨日電話かかってくると思ったらきませんでした。 親は

記事を読む

no image

■超直感!MT4プログラミング講座■ 第35回 MAの傾きを使ったEA

こんばんはっ!キリンです。 土曜日なんですが、脱サラすると関係なかったり・・・。 なんか実感が湧かない今日この頃です。

記事を読む

no image

■超直感!MT4プログラミング講座■ 第7回 インディケーター表示のために

没になった回です。 内容が雑なため、第8回へ移動していただければと思います。 興味のある方はご覧いただければと思います。

記事を読む

no image

■超直感!MT4プログラミング講座■ 第6回 インディケータープログラムの解説

こんにちは!キリンです。 GW真っ最中! 私は引っ越し先を探してきました。 納得のいく部屋を見つけて、さらに洗濯機も購入

記事を読む

no image

■超直感!MT4プログラミング講座■ 第29回 決済スプリクトの作成(2)

こんにちは。キリンです。 住民票の変更も行い、年金も国民年金に切り替えました。 免許証の住所変更にもこれから行く予定です

記事を読む

Comment

  1. りある より:

    SECRET: 0
    PASS:
    こんばんは、宿題を考えることで理解度も計れるということで頑張ります。
    2つ考えることができたのですが、
    1つは、Array[3], Array[4]のみ出力させるということなので、for文の中のi=0を
    for(int i=3; i<5; i++){
    Print(Array[i]);

    とすれば、Array[3], Array[4]だけを繰り返すと思います。
    もう一つは、プログラムとして記載するのは自信が無いですが、もし、Array[0]~ Array[4]を繰り返した後に、
    Array[3], Array[4]だけを出力したい場合は、IF文で i=3 と i=4 のときだけ出力させれば良いということでしょうか?
    回答を楽しみにしています。

  2. junky より:

    SECRET: 0
    PASS:
    自分はintは別に宣言した方がわかりやすいですね。。。
    if文を使ったものをやって欲しいという意図がわかるので(笑)、やってみます。
    string Array[5];
    Array[0] = "Array[0]です";
    Array[1] = "Array[1]です";
    Array[2] = "Array[2]です";
    Array[3] = "Array[3]です";
    Array[4] = "Array[4]です";
    for(int i=0; i<5; i++){
    if(i==3){
    Print(Array[i]);
    }
    if(i==4){
    Print(Array[i]);
    }
    }
    i==3or4
    のorの演算子がわかれば一発でしょうか?
    if連発でも大丈夫でしょうか?
    perlだとelseifがあるのですが・・・

  3. SECRET: 0
    PASS:
    >りあるさん
    素晴らしいですね!
    両方ともの考え方で実現できます。
    他の方法を今日ご紹介しますね!
    といっても内容は変わらないですが^^;
    コメントありがとうございます!
    よく理解していただけていると思います。
    嬉しい限りです!

  4. SECRET: 0
    PASS:
    >junkyさん
    素晴らしいですね!大正解です。
    「==」演算子などは説明していないのに、
    ご存知だったとは勉強されている証拠だと思いました。
    perlにもあるんでしょうか?
    phpに走ってしまったので分からないんですよね^^;
    c++の場合のelseifは、
    else if
    という形で、スペースを入れれば実現できますよ^^
    コメントありがとうございます!

  5. pokota より:

    SECRET: 0
    PASS:
    ハイパーリンクの講義11回目をクリックすると12回目が表示され11回目が見れません。

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Adsense

PYPIへの登録を10秒でできるようになる方法

pip 使ってますよね Pythonを使っている人であれば、pip installでライブラリ

The art of debugging with GDB, DDD, and Eclipse の読書メモ

GDBの勉強がしたくて、下の本を原著で読んでみました。10年前の本だけど全然現役でした。

JupyterでボタンからJavascriptを実行して追加のアウトプットをさせない方法

Javascriptを実行するとアウトプットセルの行が増える これがとても面倒だった。上の

まだBokehで消耗してるの?これからはPandas-Bokehを使おうぜ

タイトルはあまり気にしないでください。全然、Bokehで消耗する価値があるとは思っています。ただ

SQLAlchemy のマイグレーションライブラリ Alembic を使ってみる。

SQLAlchemyの作者が作ったデータベースマイグレーションツール。個人的には、SQLAlch

→もっと見る

PAGE TOP ↑