スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
メタバイザー
スポンサー広告  

メタバイザーのメタトレーダー集中講義の受講者募集のお知らせ
こんばんわ。メタバイザーです。

本日はエキスパートアドバイザーの自動売買構築術をまとめた

メタバイザーの集中講義初級編 1限 最も簡単な自動売買ソフトの型

の講義をPDFファイルで行っている。

この講義ではメタトレーダーって何?っていうレベルの知識でも、

1日で簡単な自動売買ソフトを作れるようにするのを目的で作成したものだ。

プログラムについて1から詳しくしかし必要なところだけを解説したので、

最短でメタトレーダーでEAを構築できるようになりたい生徒は、下の方にあるフォームに

名前、メールアドレスを明記して送信してほしい。

私の方から講義資料が自動的に送られるようになっている。もちろん無料だ。

また、講義資料請求に使用したアドレスには時々私の方からメールマガジンや告知を

お送りすることがあることを了承してほしい。

ボブと私、それと新しい生徒アン○○○ーと一緒に授業を行っていく形式をとっている。

受講希望者はボブのメールセミナーに登録してやってくれ。

ボブから折り返し講義資料のURLを送り返してもらう。
ボブのメールセミナー


それでは、講義で会えることを楽しみにしている。

興味をもってくれてどうもありがとう!

感想等があればメタバイザーの放課後まで遊びに来て私にささやいてくれ

人気ブログランキングに参加している。
人気ブログランキングへ

もしよろしければ応援してほしい。

最近応援クリックしてくれる人が増えていて大変嬉しく思っている。

本当にありがとう。

ちなみにブログをやっているメタトレーダー仲間は から見ることができる。

それでは講義でまた会おう。
スポンサーサイト
メタバイザー
メタトレーダー講義   0

:システムトレード - :株式・投資・マネー


メタトレーダー講義 第1回 ウェルカムレッスン
始めに。

FXボーイから管理を受け継いだメタバイザーです。

もともとこのメタトレーダー講義は彼が翻訳したもので、

どのようにこちらのブログで掲載していくのか迷ったのだが、

結局彼が訳してくれたものや文体は基本的にそのままに、よりわかりやすい表現に直して、

なにか補足があれば付け足すという形で掲載するという形をとることにした。

彼は何もプログラミング言語を知らない状況から訳し始めたのにも関わらず、

大変秀逸な訳文になっている。 なのであまり手直しすることもないが、

プログラミングができる身から見るとやはりいろいろ気づくところもあると思う。

その辺をさりげなく修正していき、最後に私からの補足説明を加えるという形で掲載していく。

よろしくお願いする。

以上をもって、私にとってのみなさんに対する始めに に変えさせて頂く。



こんにちはFXボーイです。これからは管理をメタバイザーに受け持ってもらうことになりました。
時々口は悪いですが、非常に誠実な石像なので、よろしくやってください。
プログラミングにも造詣が深いので、僕よりも適切な訳文にすることができると思います。

もしからしたら時々サイトに遊びに来るかもしれませんので、レアキャラになるとは思いますが、その時は宜しくお願い致します。

さて、これより先が僕から皆様に送るはじめに。になります。

メタトレーダーって敷居が高いですよね。特にC言語の知識が無い身でメタトレーダーを使いこなすようになれるのは相当難しいと思います。
特に日本では、現段階でメタトレーダーに関する情報が大変少ないので、習得するのも余計に大変になっています。
そんななか、メタトレーダーまとめwikiで紹介されていたCodersGuruさんのメタトレーダー講義がメタトレーダーの根本から解説していて、C言語の知識がない僕でも素晴らしく解りやすかったので、本人の許可を取って日本語訳を連載することにしました。

メタトレーダーまとめwikiの管理人さん、CodersGuruさん、そしてメタトレーダースレでの情報提供者の方々に謝意をこの場をお借りして申し上げたいと思います。ありがとうございます。


プログラミング言語はほぼ知らず、英語も得意じゃないので英語を韓国語に翻訳するような気分(?)ですが、頑張っていこうと思います。

CodersGuruさんのメタトレーダーレッスンの原書は↓にあります。
http://www.forex-tsd.com/lessons/208-lesson-8-variables-mql4-2.html

いろいろ読みづらいところもあると思いますが質問や誤訳等ございましたらお申し付けください。おそらく石像
メタバイザーが修正してくれると思います。



それでは始めましょう。Coders'Guruさんの登場です。



                   メタトレーダー講義
                       Coders'guru
                        www.forex-tsd.com

                             -1-
                          ようこそ

MQL4講座へようこそ。
このシリーズでは、しっかりとした例をあげながら包括的な個別レッスンをすることでMQL4の秘密や混乱を剥ぎ取っていきます。

もしあなたがC言語(もしくはC++言語)を操れるのなら、あなたはMQL4について、私の講義が始まる以前から、既にたくさんのことを知っていることになります。もしあなたがなんのプログラミング言語を扱った経験がなくても大丈夫。全く問題ありません。プログラミング初心者の方にも理解ができるように、この講義ではプログラミングの一般的な概念についても詳しく取り上げ、一から説明していこうと思っています。

それでは、最初の授業をはじめましょう。

MQL4?何?なぜ?どこ?

MQL4はMetaQuotes Language 4を表しています。要は、メタトレーダー専用のプログラミング言語だと考えてください。
メタクオーターはメタトレーダー、トレーディングプラットフォームをつくった会社です。
そして他のトレーディングプラットフォームよりも一段上の価値を提供するために、その会社はプログラミング言語をいれて、ユーザー(あなた)が自分のトレード戦略を記述できるようにしました。

MQL4言語によってあなたは以下のものを作り出せます。
    
    1エキスパートアドバイザー
    2カスタムインディケーター
    3スクリプト


    ・エキスパートアドバイザーは貴方のために自動でトレードしてくれるプログラムです。例えば
     あなたの取引通貨で、構築したトレーディングシステムに沿ったエントリー注文、手仕舞い注
     文、注文の差し替えやキャンセルを自働で行ってくれ、あなたに利益をもたらします。

    ・カスタムインディケーターは貴方の考えたテクニカル指標を使うことを可能にさせるプログラムで、
     自動売買をするものではありません。

    ・スクリプトは一つの機能を実行するためにデザインされたプログラムです。エキスパートアド
     バイザーとは違って、スクリプトは一回のみの実行で(要求次第ですが)値動きによって行
     われるものではありません。そしてもちろん、インディケーター機能にアクセスできません。

これらがMQL4とは何かなぜMQL4を使うのかでした。
さぁ今度は、MQL4をどこに書くのかです。

MQL4コードを書くにあたって、ここでも例外なく、あなたは二つの道を選ぶことができます。険しい道と、楽な道です。(険しい道は大変なことを示すだけなので斜め読みで構わないと思います)

1-険しい道
険しい道では、あなたの好きなテキストエディターを使ってあなたのプログラムをコンパイルするように命令します。
メモ帳は悪くない選択です。でも以下二つのことを忘れないでください。
    1-あなたが真っ白なテキストで作ったファイルを保存すること。
    2‐ファイルを保存するときに.mp4(メタエディターと一緒に開きやすくするために)とすること。
     ファイルの名前の長さは自分の好きなように保存できます。

プログラムを保存した後に、あなたのコードを適用させるための特別な手順があります。
その手順をコンパイルといいます。
コンパイルとは、あなたが書いた人が読めるような簡易プログラムから、機械が読み込めるように機械語に変換するというものです。

メタトレーダーはMetaLang.exeと呼ばれる自分のコンパイラー(あなたの簡易プログラムを機械語に変換するプログラム)をすでに持っています。

Metalang.exeとは.二つの設定値をもち、ex4file(メタトレーダーが読み込むことができるファイル)を出力する入力装置プログラムです。
一つ目の設定値はオプション設定値で、ただ-qを抜かすだけに使用されます。
二つ目の設定値はあなたの.mpl fileのフルパス(ファイル名を指定するときに、ドライブ名から始めてすべてのディレクトリ名を指定して入力すること。)です。

シンタックスで記述すると次のようになります。
metalang[options...]ファイル名


  1‐あなたのmetalang.exeのパス(ファイルやフォルダの所在を示す文字列。)をみつける。それは
   メタトレーダーのパスと同じところにあるはずです。(D:\Program Files MetaTrader4)
  2‐バッチファイル(起動するプログラムを順に列挙したファイル)をつくりそれにcompile.batと名前
   をつける(他のあなたの好きな名前でも構いません)
  3‐以下の文をそのファイルに書き込み保存する。
   cdD:ProgramFilesMetaTrader4
   metalang-q"D:ProgramFilesMetaTrader4my_first_mql4_script.mq4"
   (メタトレーダーをインストールしたパスの場所に移動させとくことを忘れないでください)
  4‐バッチファイルを起動し、もしあなたが私のようにラッキーな人間ならばこのような画面が出
   てきます。

figur1.png


2‐楽な道
メタトレーダーはメタエディターという良質なIDE(integrated development editor)を備え付けており、以下の特徴があります。

1‐テキストエディターは、MQL4言語の構造とは大きく違う特徴をもっている。

2‐メタエディターなら、ただF5をクリックするだけで、ex4fileをつくるための大変な作業をやってくれ、
  簡単にあなたのプログラムをコンパイルすることができる。
  加えて、エラータブがあなたのプログラムの問題点は何かということを教えてくれる。

3‐便利な辞書が備え付けられており、F1を押すことによって、あなたの知りたい主要なキーワード
  の特徴を知ることができる。

次の講義を受講すると、もっとメタエディターについて貴方は詳しくなるはずです。

今日は初回の授業に相応しく、自己紹介しにきただけだから、軽い授業で流しました。
明日から本格的な授業に入っていきたいと思います。次回の授業では、MQL4のシンタックス言語について取り上げたいと思います。

それでは
Coders'Guru



メタバイザーによる補足説明
これは、私、メタバイザーがプログラミング初心者の方向けに、

講義で分かりづらい、理解するのが難しいと思われる概念について追加説明をするコーナーだ。

さて、今回の講義で実際にEAやインディケーターを作成する上で諸君に覚えておいてほしい重要な点は



       無い!

初っ端からこのコーナーの存在意義が危ぶまれるが、

プログラミングって、こんなイメージなんだと掴んでもらえさえすれば大丈夫だ。

とりあえずEAが作れるようになるために覚えることはそれほど多くないので安心してほしい。

また何か質問や意見があれば、こちらの方まで遊びに来てほしい。 



人気ブログランキングに参加している。
にほんブログ村 為替ブログ FX システムトレード派へ

もしよろしければ応援してほしい。どうもありがとう。

ちなみにブログをやっているメタトレーダー仲間は から見ることができる。


最後まで読んでくれたことに感謝している。
メタバイザー
メタトレーダー講義   0

:システムトレード - :株式・投資・マネー


メタトレーダー講義 第2回 シンタックス言語
こんにちわ。FXボーイです。

さて、今回の講義はシンタックス言語についてです。

いろいろ読みづらいところもあると思いますが質問や誤訳等ございましたらお申し付けください。すぐにメタバイザーが修正します。
時々文章の中にある茶目っけやハイテンションなところはCodersGuruさんによるもので僕によるものではありません

この文章はCodersGuruさんのMQL4Lesson3の訳文です。(翻訳しての転載に本人の許可はとってあります)

それでは、Coders'Guruさんの講義が始まります。





                   メタトレーダー講義
                       Coders'guru
                        www.forex-tsd.com

                             -2-
                         シンタックス



前回の私の最初の授業となるウェルカムレッスンでは、
・MQL4とは何か
なぜMQL4なのか、
・MQL4はどこにあるのか
という非常に基本的な質問を解き明かしたが、楽しんで頂けましたか?

しかし、常にもっとも重要な質問はどのように です。その問いについての答えを、これからのレッスンによって明らかにしていきたいと思います。

さて、今、あなたの頭の中から雑念を取り除いて空っぽの状態にしていただき、次の概念を注意深く読んでください。

今日話していることはMQL4のシンタックス言語のルールにたいするものです。
そして以前あなたに言ったようにもしあなたがC言語(もしくはC++)を操ったことがあるのならば、
私がレッスンを始める前に既にたくさんのMQL4言語について知っていることになるでしょう。
なぜなら、MQL4のシンタックス言語はとてもC言語に似通っているからです。

シンタックスのプログラミング言語における項目を辞書で調べてみましょう。
"出力する際に、使用を許可されている予約語や、変数、正しい論理構造の型をシンタックス言語という"


つまり、私たちがシンタックス言語を学ぶとき、同時にシンタックス言語の文法や記述のルールを学ばなければなりません。シンタックスのルールや、文法には以下の四つが含まれています。
      ・フォーマット
      ・コメント
     ・識別子     
     ・予約語

さぁ始めましょう。


1-フォーマット



あなたがコードを書くとき、あなたは自由にスペースやタブ、改行を使って、自分が見やすいように、コードを分けたり、区切ったりすることができます。

例をあげると、これらの文はMQL4ですべて適用されます。

double MacdCurrend,MacdPrevious,SignalCurrent;

double
MacdCurrend,
MacdPrevious,
SignalCurrent;

double      MacdCurrend,      MacdPrevious,      SignalCurrent;


でも、まぁ見て頂ければ、一番最初の文が最も見やすく理解しやすいのではないでしょうか。


そして、世界万事の共通事項ですが、このルールにも例外があります。

1-"コンパイラ制御"の中で改行してはならない。

  コンパイラ制御については次のレッスンで説明するので、今はただこのことだけを記憶しておいてください。

  たとえば、次のコード分は、適応されません。

#property
  copyright"Copyright C 2004.MetaQuotes Software Corp,"



  こちらは適応されるコンパイラ制御です。

#property copyright"Copyright C 2004.MetaQuotes Software Corp,"



2-定数、予約語、識別子のなかで改行してはならない。

  たとえば、この文は適応されます。
 
 extern int MA_Period=13;


  "extern"と"int"は予約語。"MA_Period"は識別子"13"は定数です。
  次のレッスンであなたはより詳しくなるでしょう。

  次の文は適応されません。
 
 extern int MA_Period=1
  3;

  ex
  tern int MA_Period=13;

  extern int MA_Period=1    3;    (タブが1と3の間に入っている。)



2-コメント


プログラミングの世界を簡単にするために、プログラミング言語の中には、コメントを書くためのスタイルをもっているものがあります。
あなたはコード内に、コンパイラーが読み取らない文を記述することができます。それはあなたのコードを理解しやすく、はっきりさせることができます。
もしあなたが夏にプログラムを書いて、冬にそのプログラムを読み直すことがあったと仮定しましょう。
もしコメントがなかったら、あなたがもし仮にプログラマーだったとしても、パズルのような文をすべて理解することはできないでしょう。


MQL4(&C/C++)は、二種類のコメントスタイルがあります。


1-一行コメント


この一行コメントは、始まりに // をいれて、終りに改行すれば適応されます。


例えば


//これはコメント
extern int MA_Period=13;



extern int MA_Period=13//これはまた別のコメント




2-数行コメント
数行のコメントをする場合には、始まりに /* をいれ、終りに  */ をいれます。
文の一行めの始まりに /* をいれ、最後の行の文の終りに  */ を入れることによって、数行のコメントをすることができるのです。



/*これ

複数
行の
コメントです*/


以下のように、一行コメントを複数行コメントの中に入れ込むこともできます。


/*これ

複数     //別のコメントはここに入り込んでいるよ。
行の
コメントです*/


これは適応されます。


extern int /*こんにちは!ぼくはコメントだよ*/MA_Period=13;



でもこれは適応されません。

extern int //テスト MA_Period=13;



3-識別子 


識別子は、あなたが変数、定数、関数につけるのに選ぶ名前です。


たとえば、ここで使われているMA_Periodは識別子です。


extern int MA_Period=13;


識別子の名前を選ぶにはいくつかのルールや制限があります。


1-識別子の長さは31字以上になってはならない。


2-識別子は文字(小文字でも大文字でも可)もしくはアンダーバー "_" から始めなくてはならない。
 つまり、数字やアンダーバー以外のその他の記号から始めることはできない。


3-あなたは如何なる予約語も識別子として使うことはできない。
  +次の項目で予約語のリストがあります。


4-識別子の名前はとても敏感な問題であるので、
 MA_PERIODも、ma_periodも、MA_Periodも同じじゃありません。


5-アンダーバー以外の記号を使ってはならない。


例をいくつか見てみましょう。

Name1         適応
_Name1        適応
1Name         不適応(先頭が数字)
~name1        不適応(記号で使っていいのはアンダーバーだけ)
N~ame1        不適応(上に同じ)
i_love_my _country_and_my_country_loves_all_the_world  不適応(31字を超えている)
Color          適応
color          不適応(予約語のなかにcolorが入っている)



4-予約語



言葉をつかって特定の行為を引き出す語があります。

それらは言語用法として登録されているために、それを識別子や、その他の目的で使うことができません。

これはそれらの予約語のリストです。


data types memory classes  operators   other
bool        extern         break     false
color        static          case      true
datetime                  continue
double                    default
int                      else
string                    for
void                     if
                        return  
                        switch
                        while

 

例えば次の文のコードは適応されません。


extern int detetime=13;
int extern=20;
double continue=0;

楽しんでいただけたでしょうか。
次の講義は"Data type"についてです!
準備はできていますか?いよいよ難しいところがやってきましたよ!

それではまた。

Coders'Guru




メタバイザーによる補足説明

さて、今回はメタトレーダーでプログラミングを作成していく中での記述法を解説して頂いた。

言うなれば、メタトレーダーが読み取れるようにするコードの文法を取り上げて解説したのが今回の講義ということになる。

今回の講義で実際プログラミングを書く時に特に覚えておいてほしいのが、識別子のルールの4番目。

4-識別子の名前はとても敏感な問題であるので、
 MA_PERIODも、ma_periodも、MA_Periodも同じじゃありません。


これを間違ってコンパイルエラーになるケースが多いので、大文字と小文字の区別をしっかりすることを心がけてほしい。

また何か質問や意見があれば、メタバイザーの放課後まで遊びに来てほしい。 

それではまた会おう。お疲れ様。


人気ブログランキングに参加している。
にほんブログ村 為替ブログ FX システムトレード派へ
もしよろしければ応援してほしい。どうもありがとう。

ちなみにブログをやっているメタトレーダー仲間は から見ることができる。


最後まで読んでくれたことに感謝している。



メタバイザー
メタトレーダー講義   0

:システムトレード - :株式・投資・マネー


メタトレーダー講義 第3回 データタイプ
今回の講義で取り上げている変数です。

プログラミング初心者にとってなかなか理解しづらい概念ですが、きっちりと説明しますので、なんとか頑張りましょう。

僕個人の感想ですが、プログラミングで難しいのは配列変数ループ この3つの概念だけです。

つまり、この3つの概念さえしっかり押さえてしまえばコードの理解ができるようになりますので、頑張って修得しましょう。 その先にはメタトレーダーを使いこなせるようになれるという、大変楽しい未来が待っています!

それでは訳文に参りましょう。




この文章はCodersGuruさんの↓が原文の訳になります。(翻訳しての転載に本人の許可はとってあります)
http://www.forex-tsd.com/lessons/208-lesson-8-variables-mql4-2.html


                       メタトレーダー講義
                       Coders'guru
                        www.forex-tsd.com

                             -3-
                       データタイプ



私、Coders'GuruのMQL4の第三回目の講義へようこそ。

シンタックス講義は楽しんでもらえたでしょうか?前回の講義では以下の疑問に対してお答しました。

   ・MQL4ではどのようなフォーマットがつかえるのか。
   ・プログラミング世界を分かりやすくするためのコメントはどうやって書き込めるか。
   ・識別子とは何か。またそれを選ぶためのルールは何か。
   ・MQL4の予約語は何か。

今回は予約語の中のデータタイプ(情報様式)について取り上げます。楽しみましょう!

データタイプとは?

どんなプログラミング言語でも、データの記憶貯蔵庫(memory)の説明をする名前の型を持っています。
例えば、もし-2147483648から2147483648までの数字を記録している記憶貯蔵庫があったとすれば、ほとんどのプログラミング言語は、そのデータをInteger(整数)データタイプだと名付けるでしょう。

変数?

変数とは、データを保存すべき記憶貯蔵庫の場所はどれかを言及する名称です。

このことが鮮明にわかる助けになるように、記憶貯蔵庫は一連のサイズの違う箱であるとイメージしてください。箱の大きさは記憶容量単位(バイト)が要求する記憶貯蔵庫収容空間の大きさです。

     ・データを貯める箱を使うために、その箱は名前をつけられなくてはなりません。この過程を、
      declaration(宣言)といいます。

     ・宣言の過程において、あなたはコンピューターにどのような種類か、そしてどのようなサイズ
      の箱が使いたいかを知らせる言葉を使わなくてはなりません。そのコンピューターに伝える
      言葉をキーワードといいます。キーワードを使って宣言してるわけですね。

     ・もしあなたが情報の種類と関係がある意義のある名称を箱につけたなら、そのデータをより
      簡単に見つけられるようになります。その箱につけた名称のことを変数名(識別子とほぼ同
      義)といいます。

     ・データは、箱にいれられるときに、振り分けられながら箱にいれられます。
     
     ・あなたが作った箱に価値を付けたとき、同じ行であなたは箱に入れる値を宣言します。この
      過程を(変数生成時に指定された値である初期値を格納することになるので)initialization
      (初期化)といいます

私たちが変数を作るとき、私たちは変数に、特定の記憶貯蔵庫の長さ(大きさ)を割り振ってほしいとコンピューターに告げています。文字列や、簡単な数字、文章、大きな数字は同じ記憶貯蔵庫の場所に入れておくことができないので、コンピューターはどのような種類のデータで、どのくらいの長さのデータなのだと私たちに聞くわけです。これがデータタイプの概要になります。

例えば、もし私たちがこのコード文をコンピューターに伝える時、

int MyVaraible=0;


これは、私たちはコンピューターに4バイトの容量を私たちのつけた変数名称であるMy Variableに与えてくれと頼んでいるわけです。

いま使用した例を使って説明すると
int ←キーワード
int ←Integer data type
int ←Declaration(宣言)
MyVaraible←変数名
=0←初期化

MQL4で扱うデータタイプの種類は以下のようになります。

   ・Integer(int)  整数
   ・Boolean(bool)論理型
   ・Character(char)文字
   ・String(string)文字列
   ・Floating-point number(double) 浮動小数点数(小数点が動くので少数と整数に対応)
   ・Datetime(datetime)



1- Integer(整数)

Integerは+ーどちらかの記号から始まる数字です。この範囲の値は-2147483648から2147483648までとなっています。
MQL4は10進法もしくは16進法が使えます。
例えば、以下の数字はIntegerです。


12,3,2134,0,-230
0x0A,0x12,0X12,0x2f


int というキーワードを使うことで、整数の変数を作り出します。



int intIntger=0;
int intAnotherintger=-100
int intHexinteger=0x12


10進法と16進法について

10進法は10を基本にした数の記述で、アラビア数字(0,1,2,3,4,5,6,7,8,9)を使って数を
表します。これらのアラビア数字は時々端数の最初に小数点をつけて使われたり、+やマイナスの記号とともに数をあらわしたりします。

16進法について。
16進法は16を基本とした数表示で0~9もしくはA~Fまたはa~fの記号を使って表記されます。
例えば、10進法の79を16進法であらわすと4Fと表記することができます。


2-Boolean

Boolean変数はわずか二つの価値しかもつことのできないデータタイプ(情報様式)です。
その二つの価値とはtrue(真)かfalse(偽)で、数字で表記するとしたらば0と1で書かれます。
そしてこれは記憶貯蔵庫の1ビットを占めます。
MQL4ではfalse,FALSE,False,true,TRUE,Trueどれも同じように使えます。

Booleanは偉大な数学者Boole Georgeにちなんで名付けられました。
Boolを使うことによってboolean変数をつくることができます。



bool I=true;
bool bFlag=1
Bool bBool=False:


3-Character(文字定数)

MQL4は、このデータタイプをLiteral(文字の)と名付けています。
Aというアルファベット文字は、ASCII(American Standard Code for Information Interchange)が定められているアルファベット、数字、特殊なキー等計256種類の中の一つの”文字”(整数値)である。
“文字”はASCIIの位置と一致している整数の価値をもちます。
あなたは文字定数を書くときに、その文字の周りにクオーテーションマーク(')をつけなければなりません。(補足です。MQL4では、アルファベットや数値に対してそれぞれ決められた整数値が与えられています。下記のASCIItableをみて頂きたいのですが、たとえば0なら10進法で48の整数値が、Nなら78の整数値が与えられているわけです。character変数では' 'で囲むことにより、ASCIIに対応してない僕らが普段使っているアルファベットとして使えるようになります。)



‘a’, ’$’, ’Z’

chr キーワードを使ってcharacter変数を作り出すことができます。



int chrA=’A’;
int chrB=’$’;


いくつかの文字の中で特別文字と呼ばれている文字があり、それはクオーテーションマークで囲まれても直接あらわすことができません。なぜならば、MQL4言語で、特別な用法として予約されているからです。
ここに私たちが特別な文字を表すためにエスケープシークエンス(拡張表記)とよばれるものを使います。そして、それはバックスラッシュを(╲)その文字の前につけることで表します。
尚、バックスラッシュはキーボード右下の「ろ」のところにおかれていますが、\がでてくるだけでバックスラッシュは通常でてきません。しかし\で代用できます。
 


int chrA=’╲╲ ’:  //スラッシュ
int chrB=’ ╲n’; //改行


これらはMQL4におけるエスケープシークエンスです。


╲r       復帰(現在の行の先頭位置へ移動する)
╲n       改行
╲t       水平タブ(次の水平タブ位置へ移動する)
╲╲       逆斜線
╲’       ‘
╲”       “
╲xhh       hhは任意の桁数の16進法
  

ascii.png
                   ASCIItable

4-String(文字列)

String データタイプは、ダブルクオーテーションマーク(”)で囲まれた一続きの文字列のことです。

一続きの文字列は文字が次々と続いていく配列で、その最初の添字は0からはじまります。
最後の文字データのあとに、NULL文字が次の配列の場所に置かれます。そのあとに使われていない配列の場所があろうが関係ありません。

NULL文字は、特別文字(ASCIIコードの0で表わされる。)で、文字列タイプの終わりの目印として使われます。

下の図をみてください。文字列定数のhelloの、文字配列について説明したものです。(CodersGuruさんのpdfファイルより転送)
 null

MQL4には文字列変数の大きさを255字を限界としており、どのような文字でも255字時を超えると、一般的に次のエラーがでるでしょう(too long string(255 characters maximum))

あなたは上で論じた特別な文字をどれでも前にバックスラッシュ(╲)をいれることによって、文字列定数でも使うことができます。

stringキーワードを使って文字列変数を作り出せます。



string str1=”Hello world。Coders guruです”;
string str2=”CopyrightC2005, ╲”Forex-tsd forum ╲”.”  // (“)に注目して
↑これはCopyrightC2005, ”Forex-tsd forum ”. のように表示されるのだと思います(バックスラッシュをいれなければ”はプログラミング上で表示されません。)
string str3=”1234567890”;


5-浮動小数点(double)

浮動小数点は実数(これは、整数の部分とわけるためにドット.をつけて分数部分も含めることができる。)例をあげれば3, 0, -115, 5, 15, 0.0001等

浮動小数点のとれる値の範囲は-2147483648から2147483648です。

doubleキーワードを使うことによって浮動小数点変数を作り出すことができます。




Double dbnumber1=10000000000000;
Double dbnumber3=1/4;
Double dbnumber3=5.75;


6-Color

Color データタイプはMQL4の特別なデータタイプです。MQL4は自分のExpert AdviserもしくはCustom Indictorを作った時に、メタトレーダーのチャートに表す色をもっています。そしてユーザーはExpert AdviserもしくはCustom Indictorのプロパティーを使って色を変えることができます。

あなたはcolor変数を以下の三つの方法で定めることができます

1- カラーネームによる指定:良く知られているウェブカラーセットのカラー名をcolor変数に指定することが可能です。ウェブカラーセットは下を見てください。

2- 文字描写による指定:この方法は、あなたはキーワード(C)のあとにクオーテーションマーク(‘)を二つ使います。二つのクオーテーションマークの間に、赤、緑、青の明度を指定します。これらの明度は0~255までで指定してください。この明度は、10進法でも16進法でも記述することが可能です。

3-整数値による指定:ウェブカラーのすべてのカラーはそれぞれ整数値をもっています。あなたは10進法でも16進法でも記述することができます。そしてあなたはcolor変数を、その色が割り当てられた整数値で指定することができます。16進法での色指定の記述はこのようになります0xBBGGRR BBは青GGは緑RRは赤の明度を表します。



//1のカラーネームによる指定
Red
Yellow
Black

//2の文字描写
C’128,128,128’ //灰色
C’0x00,0x00,0xFF’//青

//3の整数値での描写
0xFFFFFF  //白
16777215  //白
0x008000  //緑
32768    //緑

colorキーワードを使ってcolor変数を作り出します。



color clrl=Red;
color clrl=C’128,128,128’;
color clrl=32768;

ウェブカラー

7-Date time

Datetime データタイプはMQL4の特別なデータタイプで、それは、データとタイムデータをもちます。あなたはキーワード(D)と、それに続くふたつのクオーテーションマーク(‘)を使用してDatetime変数を設定することができます。
二つのクオーテーションマークの間に、あなたは年、月、日、時間、秒の5つの値の文字列を記述します。
Datetime定数は1970年1月1日から2037年12月31日までの値をとることができます。


D’2004,01,01 00:00’//新年
D’1980.07.19 12:30:27’
D’19.07.1980 12:30:27’
D’19.07.1980 12’ // =D’1980.07.19 12:00:00’
D’01.01.2004’ //=D’01.01.2004 00:00:00’


datatimeキーワードを使うことでdatetime変数をつくりだすことができます。



Datetime dtMyBirthDay=D’1972.10.19 12:00:00’;
Datetime dtl=D’2005.10.22 04:30:00’;

楽しんでいただけましたでしょうか?
次のレッスンは、Operations&Expressionsです。
それでは
Coders’Guru





メタバイザーによる補足説明

お疲れ様。今回の講義は大変だったんじゃないかな? 寝ている生徒もちらほらいたようだが・・・。

今回の講義は寝てたらダメだ!

何事もそうだが、学習の基本は徹底して基礎を固めること

プログラミングの土台がわかっていないと、絶対に応用できないし、自分で新しいインディケーターや、自動売買ソフトを作ることはできないと断言できる。

なんとなく流して今回の講義を受けていた人は、今から言う箇所だけでもしっかりと復習してほしい。

データタイプとは
変数?
1Integer(整数)
5Double(浮動小数点)


この4つのパートは確実に押さえておこう。

最後に今回の講義を実践的な知識へと昇華させるために、実際メタトレーダーを使用していく上でそれぞれのデータタイプはどのような時に使用するかを教えておくぞ。

Integer double
用意したい値が整数のときはInteger、少数の時はdoubleと考えよう。
移動平均線の値を算出したいときは double
移動平均線の期間を使いたいときは int
の変数を用意する。

例えばドル円の20期間移動平均線で、今値が95.35円だったとしよう。
もしも移動平均線の値を入れる変数をintにしてしまったら、整数でしかあつかわれないので、移動平均線の値は95円ということになってしまうので注意が必要だ。

逆に期間の値を入れる変数をdoubleにして、20の値を初期値としていれておいても、そちらは問題ない。20.000というふうに認識されるからな。
しかし見栄えも悪いし処理スピードも少し遅くなるので、整数しか値を指定しない時はintと宣言するほうが、メタトレーダーに対して親切だ。

boolean
これはスイッチのon offの時に使う。例えば音を鳴らすようなインディケーターを作成したとしよう。
それでも音を鳴らしたくない時がある。(実際に作ってみればわかる)
そのような時に活躍するのがbooleanのデータタイプだ。

電気のスイッチみたいにtrue falseでonとoffに切り替えられるようになる。

まぁ初心者には縁のない話なので参考程度に聞いておいてくれればいい。

character
これは何か意味があるのだろうか?私はこのデータタイプを使ったことが無い。

覚えなくても大丈夫だ


string
ここは変数としてではなく、メタトレーダーに文字列を入力たいときは、会話を「」で囲むように""(ダブルクオーテーション)で囲む必要があるということだけ覚えておけばよい。

stringを変数として使うときは、通貨ペアの指定、アラーム音のファイル名の指定をしたいときくらいしか使い道はない気がする。

まぁこれも中級者~上級者向けの話になるので、そうなんだとだけ思ってくれればいい。

datatime
こちらは時間のデータを扱いたいときに使用する。

例えば、指値注文の有効期限を設定したいときや、指定の時間にアラートを鳴らすようにしたいとき等
に使用する。

これも最初のうちはほとんど使うことはないのであまり気にしなくていいぞ。

color
これは必要ない。寝て聞き流しても大丈夫だ。


また何か質問や意見があれば、メタバイザーの放課後まで遊びに来てほしい。 

それではまた会おう。お疲れ様。


人気ブログランキングに参加している。

にほんブログ村 為替ブログ FX システムトレード派へ

もしよろしければ応援してほしい。 どうもありがとう。

ちなみにブログをやっているメタトレーダー仲間は から見ることができる。


メタバイザー
メタトレーダー講義   0

:システムトレード - :株式・投資・マネー


メタトレーダー講義 第4回 演算子と式
こんにちわ。FXボーイです。

さて、今回の講義は演算子と式です。最初に翻訳した時はビッド演算子が全くわからなくて、そこの翻訳部分に2時間くらいかけた記憶があるのですが、ビッド演算子を使うことはありません。
皆さんもビッド演算子の項目を読む際に、

なんだこれ?プログラムって難いな。

みたいな感じの項目になると思うのですが、気になさらなくて結構です

それでは訳文にはりましょう。



この文章はCodersGuruさんのMQL4Lesson4の訳文です。(翻訳しての転載に本人の許可はとってあります)
    


                         メタトレーダー講座  
                         Coders'guru         
                          www.forex-tsd.com    
                               -4-
                          演算子&式

MQL4の第四回目の私の講義へようこそいらっしゃいました。
前回のデータタイプの講義では たくさんの新しい概念が出てきましたね。大変だったと思いますが理解できましたでしょうか。楽しんで頂けてましたらこれ以上の喜びはありません。

さて、今回は演算子と式です。

演算子と式ってなに?

あなたは演算子についてきっとよく知っていらっしゃいます。もし私が、+,-,*,÷が基本的な算術演算子ですと言えば、あなたはすぐに演算の意味を思い出すのではないでしょうか。

「演算はわかりました。式について説明してくれませんか?」という声が聞こえてきました。
識別子(覚えていますか?もし覚えていませんでしたら、講義2のシンタックスをご覧ください。)と演算子が一緒になると式を作り出します。

難しいですか?例を取り上げて説明しましょう。

x=(y*z)/w   (x=(y×z)÷w)
ここではx,y,z,wはすべて識別子です。
=,*,/は演算子
行全体が式です。

式同士が結合するとそれはステートメントを作り出します。
そしてステートメント同士が結合するとそれは関数を作り出し、関数同士が結合するとそれはプログラムをつくりだします。


講義の残りは、MQL4で使われている演算子の種類について話していきたいと思います。

さぁそれでは。基本的な算術演算子から始めましょう。


1‐算術演算子

MQL4には9つの算術演算子があります。
以下はそれぞれの用法についてのリストです。

演算子   名前       例         解説
+    加算演算子      A=B+C:   BにCをたして、その結果をAに当てがいます。
-    減算演算子      A=B-C;   BからCを引いて、その結果をAに当てがいます。    
+-   記号変更演算子    A=-A:    Aについている記号を逆にします。 
*    乗算演算子       A=B*C;   BとCをかけて、その結果をAに当てがいます。
/    除算演算子       A=B/C;   BをCでわってその結果をAに当てがいます。
%    剰余演算子      A=B%C;   AはB割るCの余り。(例10%2は0、10%3は1になる)
++   インクレメント演算   A++;     Aに1を足す(例 もしAが1ならそれは2になる。)
--   デクレメント演算    A--;     Aから1を引く。(例 もしAが2ならそれは1になる)

メモ: 剰余演算子は次のように働きます。
10%5=0
なぜなら10割る5は2で余りがないからです。余り0なので値は0になります。
10%8=2
これは1余り2ですね。8×1+2=10になることからも証明できます。値は2です。
100%15=10
100を15でわれば余りは10ですね。
これはどうでしょうか?6%8
答えは6になります。なぜなら8×0+6だからです。余りは6として考えられます。

メモ:インクレメント演算子とデクレメント演算子は、他の式と一緒にしてはいけません。
以下のような記述は適応されません。


A=(B++)*5

次のように書く事ならできます。

A++:
B=A*5

メモ:上の例はどうやって記述するのか。ちょっとやってみましょう。
int A=1; //Aは整数値をとり、1だと指定します。
int B; //Bは整数値をとると宣言しました
A++;  //Aに1を加えます。 現在A=2です。
B=A*5 //この意味はB=2*5です。


2‐代入演算子

いくつかの式の目的が結果を生み出している時、代入演算子はその結果を左の演算数に設定しています。


A=B*C;

ここではBとCを乗じ、その結果の割り当てがAになります。
ここでは(=)が代入演算子になります。
他の役割も開設すると以下のようになります。
A,B,C←演算数
* ←乗算演算子(先ほどの算術演算子の一つ)
=  ←代入演算子

MQL4では11の代入演算子があります。
これがその用法のリストになります。


演算子   名前        例       解説
=   代入演算子     A=B     BをAに割り当てる
+=  加算代入演算   A+=B;    A=A+Bと同じ。BをAに加算し、その結果をAに割り当てる
-=  減算代入演算   A-=B;    A=A-Bと同じ。BからAを減算し、その結果をAに割り当てる。
*=   乗算代入演算    A*=B;    A=A*Bと同じ。 AとBを乗じ、その結果をAに割り当てる。
/=   除算代入演算    A/=B;    A=A/Bと同じ。AをBで割り、その結果をAに割りあてる。
%=   剰余代入演算    A%=B;    A=A%Bと同じ。AをBで割った余りをAに割り当てる。
>>=  左シフト代入演算  A>>=B;   Aのビットを右に、Bで指定したビット分動かします。
<<=  右シフト代入演算  A<<=B;   Aのビットを左に、Bで指定したビット分動かします。
&=   AND代入演算    A&=B;    詳しくはビット演算子の説明項目をみてください。
|=   OR代入演算     A|=B;     詳しくはビット演算子の説明項目をみてください。
^=   XOR代入演算    A^=B;    詳しくはビット演算子の説明項目をみてください。




3-関係演算子


関係演算子は二つの値(演算数)を比べ、真か偽かの値をだす働きをします。
「ジョンはアルフレッドよりも高い?YesかNoか」といった質問ににています。
もしその結果が偽ならば0、真だったら0以外の数が生み出されます。



4==4;    //真
4<4;     //偽
4<=4;    //真


MQL4では、六つの関係演算子があります。
それぞれの使用法リストをみてみましょう。


演算子   名前     例       解説
==    等値演算子  A==B;    もしA=Bなら真で、そうでないなら偽
!=    非等値演算子 A!=B;    もしA=Bでないのなら真で、そうでないなら偽
>     右不等演算子 A>B;    もしAの値がBより大きければ真、そうでなければ偽
<     左不等演算子 A<B;    もしAの値がBより小さければ真、そうでなければ偽
<=  等価右不等演算子 A<=B;   もしAの値がBより小さいか、等しければ真、そうでなければ偽
>=  等価左不等演算子 A>=B;  もしAの値がBと大きいか、等しければ真、そうでなければ偽


4-論理演算子

論理演算子は一般的にブール代数から派生したものです。それは実際の概念の意味を考慮せずに、抽象的な概念で、真の値を機械的な方法で動かします。
実際の概念の意味というのは、ブール値での真の値は真か偽かのまさに二つしかもたないのです。
AQL4では、論理演算子をブール演算子と名付けています

MQL4は最も重要な三つの論理演算子が使われている。
これがそれぞれの用法のリストです


演算子   名前     例       解説
&&   条件AND演算子  A&&B;    両辺の値が1(真)の時のみ1(真)の値になり、それ以外
                         は全て0(偽)の値を返す。もし左の値が0(偽)ならその時
                         点で式の値は偽が決定するので右の値は考慮されない。

||    条件OR演算子   A||B:      少なくとも一方が1(真)の値なら式の値は真になる。それ
                          以外はすべて0(偽)の値がくる。左の値が0でないなら
                          その時点で右の値は考慮されない。       

!    論理否定演算子   !A;       真なら偽を、偽なら真の値を返す。


5-ビット演算子

ビット演算子は論理演算子と似ています。違うのは小さな尺度(2進法のデータ)でやっていることです。 
以下の演算子がMQL4では使えます。
(よほどの特殊なコードでなければMQL4で使う機会はなさそうです。)

演算子   名前      例    解説
&     AND演算子   A&B;   二つのビットをくらべて、もしその両方のビットが1なら1をそうで
                      ないなら0の値を返します。

|      OR演算子   A|B;    二つのビットを比べて、もしその二つのびっとが相補的なら1を
                      生み出し、そうでないなら0を返します。

^    排他的OR演算子  A^B:   二つのビットをくらべて、もしどちらか、もしくは片方が1なら1を
                       返します。そうでないなら0を返します。

~      補数演算子    ~A;    演算数のすべてのビットを反転させるために使います。

>>    右シフト演算子  A>>B;  右側の遠いビットを削除し、ビットを右に動かす。そして一番左
                       のビットの値に0を割り振る。それぞれの有効な右の動きひと
                       つにつき対象の整数を2で割っていく。

<<    左シフト      A<<B;  左側の遠いビットを削除し、ビットを左に動かす。そして一番右
                       のビットの値に0を割り振る。それぞれの有効な左の動きひと
                       つにつき対象の整数1に2を掛けていく。

メモ:ビット演算子で結びついた演算数はどちらも(AもBも)整数でなければならない。


6‐その他の演算子

MQL4では、今紹介してきたどのカテゴリーにも入らないオペレーターがいくつかある.

   1-配列添字演算子( [] )
   2-関数呼び出し演算子( () )
   3-関数引数分離演算子( , )

   配列と関数については次の講義でとりあげますね。ですので、この3つの演算子はただ"その他   の演算子"とここでは記憶しておいてください。


演算子の優先順位

もしあなたが合成した式の中の演算子が自分の思ったように機能するような命令を明確に指示していないなら、その命令はその式の用途の中で優先順位が高く割り当てた演算子によって決定されます。つまり、優先順位の高い演算子は最初に処理されます。たとえば、除算演算子は加算演算子よりも高い優先順位にありますので、下の二つの例は同じように働きます。


x+y/100
x+(y/100) //上の式をより明確にしたもの。


結合した式を書くとき、かっこ()を使ってどの演算子を最初に処理するか明確に指示さなければなりません。その試みはあなたのコードを読むのを、また保持するのを簡単にしてくれるでしょう。

以下の表は、MQL4で優先順位が割り当てられている演算子を示したものです。その表の中に入っている演算子は、先行命令リストです。演算子の優先順位が高いものを上から順にならべてあります。
優先順位の高い演算子はそれと比べて優先順位の低い演算子よりも先に処理されます。同じグループの演算子は同じ優先順位です。同じ優先順位の演算子が同じ式で表れたら、どちらが先に処理されるかは、ルールにのっとって処理されます。代入演算子以外のすべての2進法演算子は左から右に処理されます。代入演算子は右から左に処理されます。


() 関数呼び出し    左から右
[] 配列要素区間

! 否定           左から右
~  2進法の排他
+- 記号変換演算子

* 乗算         左から右
/ 除算
% 剰余

+ 加算          左から右
- 減算

<< 左シフト       左から右    
>> 右シフト

<  左不当       左から右
<= 等価左不等
>  右不等
>= 等価右不等

==  等価        左から右
!=  非等価

& 2進法AND演算子    左から右
  
^ 2進法排他的OR演算子 左から右

&& 論理AND演算子    左から右

||  論理OR演算子     左から右

=  代入           右から左
+= 代入加算
-= 代入減算
*= 代入乗算
/= 代入除算
%= 代入余剰
>>= 代入右シフト
<<= 代入左シフト 
&= 代入ビットAND
|= 代入ビットOR
^= 代入排他的OR

,  コンマ              左から右

楽しんでいただけましたでしょうか。

それでは。
Coders'Guru





FXボーイです。難しいですね!早くインディケーターの解説にいかないかなとか思いながら訳してます。今回ビットのことがよくわからずにopとかあまりわからないまま訳している形になってしまいました。Coders'Guruさんの講義でそのうち取り上げられるのでしょうか。。
opわかる方いらっしゃいましたら教えていただけると幸いです。

追記
opはおそらくオペランドであるということを指摘してくださった読者の方がいらっしゃいました。
以下引用します。

、「op1」という単語はよくわからないのですが、おそらくここでは「ビット列を1つ右にずらすと、左オペランドを2で割った数になる」という意味のことが書かれていると思います。(op1=左オペランドのこと?)
そして、ビット列を右にずらすと、左端のビットに補完が必要になるので、「一番右のビットに0を割り振る」は「一番左」だと思うのですがいかがでしょうか。
参考URL
http://www.hellohiro.com/basic/shift.htmです。

なるほど!おそらくそのとうりだとおもいます。
ご指摘ありがとうございました。参考URLも大変わかりやすいですね。

ビッド演算子はプログラミング経験のある方でないと理解しづらいと思うのですが、メタトレーダーではビッド演算子を使うことはほとんどありません。ですのでもしよくわからないという方がいらっしゃいましたら心配なさらないでください。






ともかくお疲れ様でした。最後までお読み頂きありがとうございました。



メタバイザーによる補足説明
今回は基本的なところだったので、特に解説する必要はないようだ。

ちなみにEAやインディケーターを作る時に、演算子の優先順位を全く気にしないで作っているが、問題になったことが無い。
演算子の優先順位に関しても、聞き流す程度で大丈夫だぞ。

どうせ使わない知識なんて記憶できないからな。


また何か質問や意見があれば、メタバイザーの放課後まで遊びに来てほしい。 

それではまた会おう。お疲れ様。

人気ブログランキングに参加している。
にほんブログ村 為替ブログ FX システムトレード派へ

もしよろしければ応援してほしい。 どうもありがとう。

ちなみにブログをやっているメタトレーダー仲間は から見ることができる。


最後まで読んでくれたことに感謝している。
メタバイザー
メタトレーダー講義   0

:システムトレード - :株式・投資・マネー


メタトレーダー講義 第5回 ループと分岐 第1部
こんにちわ。FXボーイです。今回の講義はループと分岐です。
プログラミング独特の思考法を身につけないといけないので最初は大変ですが、インディケーターを作成する上で大変重要な知識になりますので、しっかりと理解してください。
それではCodersGuruさんの講義が始まります。



この文章はCodersGuruさんのMQL4Lesson4の訳文です。(翻訳しての転載に本人の許可はとってあります)                
                   メタトレーダー講義             
                   Coders'guru
                    www.forex-tsd.com                       
                         -5-
                    ループと分岐第一部

MQL4講座の第五回目の講義へようこそいらっしゃいました。

貴方が書いたプログラムの普通の流れのはステートメントからステートメントへと上から下へ実行していきます。(ステートメントとは、特定のアクションを実行または指定する言語エレメントです。while,if,for,else等)

ステートメントはコンピューターにある行動をしろと伝えるためのコード文です。

Print("hello world")
return 0;

最後についているセミコロンはシンタックスの重大な部分です。しかし、簡単に忘れてしまいまして、エラーの90%の原因がだいたいこのセミコロンのつけわすれになります。

しかし、上から下へと実行していくというケースには二つの例外がありまして、その例外にあたるのがループと分岐です。

貴方が書いた -人間が -決定する というこのようなプログラムは、環境が変わっている時にどのような反応をすればよいのでしょうか?このような場合、流れのコントローラーが、あるプログラムの部分から、他のプログラムへと飛び越します。そのような、飛び越しを起こすステートメントのことを、コントロールステートメントと呼ばれます。
そのようなコントロールにループと分岐があります。


               ループ
              --------


ループはあなたのプログラム区間をある決まった回数繰り返すことを命令します。
そしてこの繰り返しは、ある条件内に当てはまっている時は続き、ある条件に満たなくなった時に終わります。
ループが終わったとき、ループのコントロールを飛ばして、ループ区間の次のステートメントに移行します。

そしてMQL4では、二種類のループがあります。


forループ
-------


forループは最も簡単なループだと考えられています。なぜなら、すべてのコントロールエレメント(調整要素)が同じ場所に集まるからです。
forループはコード区間を決まった回数実行します。



int j;
for(j=0;j<15;j++)←コントロールエレメント(ループの動きを指定する要素)が同じ場所にきてますね。
print(j);


これはどのように働くのでしょうか?
forステートメントにはforキーワードが存在します。forの後のカッコ内の、セミコロンで分けられている三つの式がそのキーワードにあたります。

for(j=0;j<15;j++)

これらの三つの式は、前から順に初期値式、テスト式、インクレメント式になります。

j=0←初期値式    
j<15←テスト式
j++←インクレメント式 
ループ本体とは、ループの回数実行されるコードのことを言います。

Print(j);
↑が例における、15回実行されるコードなので、これがループ本体にあたります。

メモ:forステートメントは後にセミコロンがつきません。これは、forステートメントと、ループ本体はプログラムステートメントとして一緒の存在になるからです。

for(J=0;J<15;J++)
 ↑;がたしかについてないですね。

初期値式

初期値式は一回目の繰り返しの時しか実行されません。そしてループ変数に整数値(今回の例では0)を与えます。

ループ変数は、先ほどの例のように、前もってループ本体の外で宣言することもできます。

int j;

もしくは、下の例のように、ループのカッコ内で宣言することもできます。

for(int j=0;j<15;j++)

最初の例と上の例のコードはそれぞれの変数の範囲を除けば同じです。(変数の宣言と範囲については、変数講義のほうで詳しく説明します。)
外で宣言する方法は、コード全体の全ての文に変数を適応します。一方、括弧内での宣言は、forループだけに変数を適応させることになります。

下の例のようにコンマでforループを区切ることによって初期値式を増やして利用できるようになります。


int i;
int j;
for(i=0,j=0;i<15;i++)
print(i)


テスト式

テスト式は常に関係演算子をつかった関係式になります。(メタトレーダー講義第4回を参照なさってください。)

繰り返が行われている時はいつでも、繰り返しは続けるべきなのか止めるべきなのかの決定をするために評価している。もしも式の結果がtrue(真)ならば繰り返しは続けられるだろうし、false(偽)ならば繰り返しは止まるでしょう。

例では、ループの本体はj<15がtrueの間は i (Print(i))を出力し続けるでしょう。
i<15というのは、j=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14の時です。
そしてi15に到達したとき、ループはとまり、コントロールがループ区間を通過して、ループ区間の後のステートメントにいくでしょう。

インクレメント式
インクレメント式はループ変数(例ではjがループ変数)を1ずつ増やしていきます。
それはループの式の中で最後の段階として扱われます。初期値式でループ変数への処理がおわったら。テスト変数で条件が満ているかテストされ、ループ本体が実行されます。

このフローチャートがforループのフローチャートになります。
loop.png



初期値式のように、forループ本体の中に、一つ以上のインクレメント式もコンマで区切って挿入することができます。


int i;
int j;
for(i=0,j=0;i<15;i++,j++)
print(i);


でも、テスト式は一つだけしか使えません。(テスト式はfor(a;b;c)のうちのbです。一つ目の;から初まり、二つ目の;の前がおわりになります。コンマではなく、セミコロンで初期値式、テスト式、インクレメント式をわけているのを注目してください。上の例ではi<15がテスト式です。)

他にインクレメント式で注目しておくべきことは、ループ変数をふやすだけではなく、ループ変数をデクレメント(一つずつ減らす)する操作を行うこともできることです。例をみてください。


int i;
for(i=15;i>0;i--);
Print(i);


上の例では、iの初期値が15に設定されてループが始まります。そしてループする時に1ずつ減っていき、テスト式によってi>0であるかどうかチェックされます。
上の例では、15.14,13,12,11,10,9,8,7,6,5,4,3,2,1.が結果として生み出されるでしょう。

ループ本体の複数ステートメント

今までの例では、一つのステートメント(Print)しか使っていませんでしたが、例外もあります。
ループ本体を大括弧で区切ることによって複数のステートメントを使うことができるのです。例をみてください。

for(int i=1;I<=15;i++)
{
Print(i);
PlaySound("alert.wav");
}


上のループ本体のコードには二つのステートメントが含まれます。プログラムは最初のステートメント(Print)を実行し、そのあと二つ目のステートメント(Play Sound)を、ループが実行されるたびに実行するでしょう。
すべてのステートメントの後に、セミコロンを入れるのを忘れないでください。

Breakステートメント


forループ(whileループでもswitchiループでも)の中にキーワードがあると、ループの実行は終了し、ループ区間の後のステートメントにスキップします。



for(int i=0;i<15;I++)
{
if(i==10)
break;
Print(i);
}

上の例では、i10に届くまでループが実行され、10になるとbreakキーワードがループを終わらせるでしょう。ですので、上のコードが生み出す値は0,1,2,3,4,5,6,7,8,9になります。

continueステートメント

breakステートメントは実行の流れをループの外に持っていきましたが、continueステートメントはループの一番上に戻させます。
例えば


for(int i=0;i<15;I++)
{
if(i==10)continue;
Print(i);
}


上の例ですと、i10になるまでループを実行し、10になったら、continueキーワードがiの10回目を出力せずに、ループの先頭にループを戻します。つまり、上のコードが生み出す値は:0,1,2,3,4,5,6,7,8,9,11,12,13,14.になります。

最後に
もし貴方が望むなら、いくつかあるいはすべての式をforループから外すことができます。例えば
for(;;)
このループはテスト式がつねにtrue(真)であるというwhileループと似ています。
いまからwhileループについて説明しますね。


whileループ
---------


forループは普通、何回ループを実行するか分かっている時に使います。
もしあなたが何回ループを実行したいのか分からない時はどうしたら良いのでしょうか?
そのような時はwhileループを使用すればいいのです。

whileループはforループのようにテスト式があります。それでも、初期値式や、インクレメント式がありません。

これが例です。


int i=0
while(i<15)
{
Print(i);
i++;
}

この例で、あなたは次のことに注目してください。
    ・このループ変数は宣言と初期化がループ前に行われています。whileループでは、forループ
     のように宣言もしくは初期化を括弧内で行うことはできません。
    ・ここのi++ステートメントは誤解されがちなのですが、インクレメント式ではありません。しかし、
     whileループ本体には必ず何かのループ変数を変えるステートメントが存在します。そうでなければ、
     ループが終わることは永遠にないのですから。

上の例はどのように実行されるのか?

whileステートメントはテスト式しか含まれません。そして、それはすべてのループでチェックするでしょう。もしそれtrue(真)ならループは続くでしょうし、それがfalse(偽)ならループは終わり、コントロールはループセクションの次のステートメントへと移動するでしょう。

例では、ループはi16に届くまで実効するでしょう。i<15=falseになった時にループは終了します。

whileループのフローチャートがこちらになります。
whileflow.png


先ほど私は、whileループとforループは似ているといいましたね。これらは似た特徴があります。

1.breakステートメントやcontinueステートメントを使うことができます。
2.ループ本体に、ステートメントを1つで使うことも、2つ以上で使うこともできます。2つ以上で使う場合
 は、大括弧でくぎってください。
3.for(;;)while(true)は同じです。

楽しんで頂きましたでしょうか。これで今回の講義は終了になります。

それでは。
Coders'guru


メタバイザーによる補足説明
さて、このループと分岐はプログラミング未経験者には結構戸惑う箇所だと思う。
私も最初ここを理解するのに3日くらいかかった。

このループはインディケーターを作成する上で必須の知識になるのだが、それでは具体的にどのように使うのか?
それが大事なところだ。今からそのことについて具体的に説明していこう。
mama.png
この図を見て欲しい。これは2日の移動平均線と、ローソク足の番号を振った画像だ。
メタトレーダーでは、ローソク足に番号を割り振っており、一番右端(現在のローソク足)のローソク足は0という決まりがある。それから順に左に一つずれると1,2,3,4,5......のように続いており、画面一番左のローソク足は22番のローソク足ということになる。

移動平均線の算出方法について確認しておこう。
22番目の移動平均線の値=(23番目のローソク足の終値+22番目のローソク足の終値)÷2
になるし、
21番目の移動平均線の値=(22番目のローソク足の終値+21番目のローソク足の終値)÷2
になる。
20番目の移動平均線の値=(21番目のローソク足の終値+20番目のローソク足の終値)÷2

とこのようにローソク足に対応する数だけ移動平均線を算出することで、全ての移動平均線の値が算出され、上の図の白い移動平均線の値が描画されるようになる。

上のような式をプログラムで書くと次のようなコードになる。
for(int i=22;i<0;i--)
Buf1[i]=(Close[i+1]+Close[i])/2

まず、for(int i=22;i<1;i--)の説明だが、これは、ローソク足の番号を22からスタートして(int i=22)、ステートメント(Buf1[i]=(Close[i+1]+Close[i])/2)を実行したら、ローソク足の番号を一つ減らし(i--)、(現在ローソク足の番号は21)また一つ減らしたローソク足の値でステートメントを実行したら、ローソク足の番号を一つ減らし(現在ローソク足の番号は20)、そのローソク足の値でステートメントを実行・・・・・・・を繰り返していき、ローソク足の値が1未満(つまり0)になれば計算を終了する(i<1)という計算をしている。

さて、続いてステートメントを詳しく見ると、
Buf1[i]=(Close[i+1]+Close[i])/2
これは、例えば現在ローソク足の値が22の時は
Buf1[22]=(Close[23]+Close[22])/2
となり、22番目の移動平均線の値=(23番目のローソク足の終値+22番目のローソク足の終値)÷2
と全く同じだ。

この計算式が終わると、先ほど説明したループによって、つぎのローソク足の値は一つ減らされた21になるので、
Buf1[21]=(Close[22]+Close[21])/2
21番目の移動平均線の値=(22番目のローソク足の終値+21番目のローソク足の終値)÷2
ということになる。
これをローソク足の数が0になるまで繰り返していくのが、ループ文だ。

このように、値を変えて同じ計算を繰り返していくことで、チャート上に、直線としてインディケーターが描画されるというわけ。

もしかりに、for文をつかわないで
Buf[0]=(Close[0]+[Close1])
と既述したらどうなるか。答はこちらだ。
ma1.png
つまり、最新のローソク足しかインディケーターを既述しないという結果になってしまう。
まぁ、それでも良いならいいのだが。

とりあえず今回の補足説明は以上だ。while文には触れなかったが、for文さえしっかりつかえれば
こまることはない。

大分長くなってしまったが、寝てないだろうな?ボブ。


何か質問や意見があれば、メタバイザーの放課後まで遊びに来てほしい。 

それではまた会おう。お疲れ様。

人気ブログランキングに参加している。
にほんブログ村 為替ブログ FX システムトレード派へ
もしよろしければ応援してほしい。 どうもありがとう。

ちなみにブログをやっているメタトレーダー仲間は から見ることができる。


最後まで読んでくれたことに感謝している。
メタバイザー
メタトレーダー講義   0

:システムトレード - :株式・投資・マネー


メタトレーダー講義 第6回 ループと分岐 第2部
深夜の雨のなかこんばんわ。FXボーイです。

ここまでお疲れさまでした。いつになったらインディケーター作れるの?って感じですよね。
僕はそうでした(笑)

あとは関数、変数、プリプロセッサの講義と続き、その次に待望のインディケーターの作り方に入ります! 基礎を固めておくことでインディケーター作りの意味が理解できるようになると思いますのでもう少々頑張っていきましょう。



この文章はCodersGuruさんのMQL4Lesson4の訳文です。(翻訳しての転載に本人の許可はとってあります)              
                     メタトレーダー講座                          
                     Coders'guru               
                      www.forex-tsd.com                                  
                           -6-
                     ループと分岐
                          第二部
                      -------------------

第六回目のMQL4講義にお越し頂きありがとうございます。
前回の授業は楽しんでいただけましたでしょうか?

前回の授業では、ループについてお話しいたしました。
そして、一般的な一番上から下へとプログラムを実行していく流れを変える方法は二つあり、ループはそのうちの一つだとお話しいたしました。二つはめは、分岐です。

分岐がプログラムの中にあると、一回だけ、式の値によって別のプログラム部分へと飛び越します。
今からMQL4で使用可能な分岐ステートメントを紹介していきます。


ifステートメント

ifステートメントは 最も単純なステートメントです。例えば

if(x<100)
print("hi");


ifキーワードの後には括弧が続きます。括弧の中身はテスト式x<100)が入ります。テスト式の値がtrue(真)だった時はif本体が(Print("hi"))を実行します。値がFalseだった時はコントロール(何を実行するかを決めるもの)はif区間を通り抜け、後に続くステートメントに移行します。

これがifステートメントを示すフローチャートです。
ifflow.png


if本体の中の複数ステートメント

ループのように、大括弧で区切ることによって、2つ以上のステートメントをif本体の中にいれることができます。(本体とは実際に実行されるコードの部分のことを指します。例では{}で囲まれた部分が本体です。)


if(current_price==stop_loss)
{
     Print("you have to close the order");
     PlaySounde("awrning.wav");
}


==の記号に注目してください。 これは第四回講義、演算子と式で学んだ関係演算子です。
これを代入演算子である=と間違えてエラーをすることが頻繁におこるので気をつけてください。

ネスティング(複数の命令群をひとまとまりの単位にくくり(まとまりをネストといいます。)、ネストを何段階にも組み合わせていくことでプログラムを構成すること。)

ループと分岐構造は、お互いを本体の中に縫い付けることができます。あなたはifステートメントの中にループステートメントをいれることもできますし、その逆もできますし、ifステートメントの中にifステートメントをいれたりすること等もできます。

これは例です。


for(int i=2 ; i<10 ; i++)
     if(i%2==0)
      {
       Print("It's not a prime nomber");
       PlaySound("warning.wav");
      }

この例では、forループの中に、if構造が入り込んでます。
あなたはループ本体の周りに大括弧が無いのに気がつくでしょう。これは、ifステートメントと、ステートメント本体(ここではループ本文)の中にあるステートメントは、一つのステートメントとして考えられているからです。

if...elseステートメント
ifステートメントはもし条件がtrue(真)だった時のみ、何か実行させるようにしますが、もしfalse(偽)が出た時に違うことを実行させたいとおもったならば、if...elseステートメントの出番になります。
記述の仕方は、ifステートメント後に続くステートメントやステートメントのまとまりを書き終えた後に、elseキーワードとそれに続く他のステートメントもしくはステートメントのまとまりを書き込むのです。
例を見るほうが早いのでこちらをご覧ください。

if(current_price>stop_lose)
     Print("It's too late to stop,please stop!");
else
     Print("you playing well today!");

もしifステートメントのテスト式がtrue(真)なら、プログラムは最初のメッセージを表示し、もしもtrueでないなら、後の方のメッセージを表示します。

これは、if...elseステートメントのフローチャートです。
ifif.png


if...elseのネスティング

if...elseステートメントの中にifステートメントをいれたり、if...elseステートメントの中にif...elseステートメントを入れることができます。

このような感じです。


if(current_price>stop_lose)
     Print("It's too late to stop,please stop!");
if(current_price==stop_lose)
     Print("It's time to stop");
else
     Print("you playing well today!");

if..elseステートメントをネスティングするとちょっとした問題があります。うっかりelseを、意図していなかったif文とくつけてしまうのです。

この問題を解決するためには、二つの方法がありすのでどちらかをお使い下さい。

1-if...elseを括弧でくくって自分の対応させたいifとペアにして分けてください。このように


if(current_price>stop_lose)
{
     Print("It's too late to stop,please stop!");
if(current_price==stop_lose)
     Print("It's time to stop");
else
     Print("you playing well today!");
}


2-もしあなたが上の解決策ができない(たくさんのif...elseステートメントがあるもしくは、めんどくさくてわけたくない等)場合は、以下のルールを守ってください。
elseは一番近くにあるifとくっつきます(上の例では、if(current_price==stop_lose)が一番近いif文ですね。)


switchステートメント

もし大きな分岐構文があって、すべての分岐が同じ変数値を使っているときは、switchステートメントを使うのはいかがでしょうか。

以下例文です。


switch(x)
{
case'A':
 print("CASE A");
 break;
case'B':
case'C':
  Print("CASEB or C");
     break;
default:
Print("NOT A,B or C");
 break;
}

caseのあとにはついているのはセミコロン( ; )ではなくコロン( : )であることに注意してください。
上の例で、switchキーワードのあとに括弧が続きます。括弧の中にはswitch定数がはいります。この定数はinteger(整数),character定数、定数式のいずれかが入ります。定数式は、例のように変数がはいることはできません。

caseX+Y: これはswitch定数には適応されません。

どのように働くのか。

switchステートメントは定数case定数のうちの一つとを結びつけます。
x=='A'のプログラムでは"CASE A"と出力し、breakステートメントがコントロールをswitch区間外へと移動させるでしょう。

x=='B'もしくはx=='C'のプログラムでは"CASE B or C"と出力します。なぜならbreakステートメントがcase 'B'の後ろにないからです。

x==どのcase定数にも当てはまらない時は、swtchステートメントは、default本体である
"NOT A, B or C"を出力します。

switchステートメントのフローチャートを載せますのでご覧ください。
switchflow.png


楽しんでいただけましたでしょうか。

それでは。
Coders'Guru



メタバイザーによる補足説明
今回は基本的なところだったので、特に解説する必要はないようだ。

とりあえずif文だけは理解しておくように。


何かあったらコメントを頂けると大変嬉しい。よりよいアカデミーを目指してるので批判や質問も大歓迎だ。メタバイザーの放課後まで遊びに来てほしい。 放課後の訪問者が少ないのだが、私は近寄りがたい存在なのだろうか。。

少し凹みつつもそれではまた会おう。お疲れ様。

人気ブログランキングに参加している。
にほんブログ村 為替ブログ FX システムトレード派へ

もしよろしければ応援してほしい。 どうもありがとう。

ちなみにブログをやっているメタトレーダー仲間は から見ることができる。


最後まで読んでくれたことに感謝している。

メタバイザー
メタトレーダー講義   1

:システムトレード - :株式・投資・マネー


メタトレーダー講義 第7回 関数
皆さんこんにちわ。今回は関数についての講義ですね。これが終わればあと二つの講義でインディケーター作成の説明にはいりますので頑張りましょう!
関数はプログラミング未経験者からすると理解するのが難しいと思います。
使っているうちに理解が深まってくるとは思いますが、今回のCodersGuruさんの説明はそのような中でも相当に分りやすい説明であると思いますので、頑張って付いてきて下さい。
それでは始めましょう。Codersguruさんによる、関数講義です。




この文章はCodersGuruさんのMQL4Lesson4の訳文です。(翻訳しての転載に本人の許可はとってあります)   
                            メタトレーダー講座
                            Coders'guru   
                             www.forex-tsd.com                      
                                  -7-
                                関数


MQL4の関数の世界へようこそ。
関数には、どの言語の関数でも二つの段階があります。
つまらないものとして学んでいる段階
常に救命ボートとして使っている段階 です。

いつものことですが、今回も言わせて下さい。
前のレッスンは楽しめて頂けたでしょうか?楽しめて頂けると嬉しいのですが。

さぁ、それでは講義にまいりましょう。

関数ってなに?
関数はソーセージ製造器に大変よく似ています。とスパイスを入れると、ソーセージがでてきますよね。
お肉とスパイスが引数で、ソーセージが返却値(return値)になります。製造器それ自体が関数本体になります。
ソーセージ製造器と関数にはただ一つだけの違いがあります。その違いとは、関数の中にはなにも出さないことがあることです。(MQL4で何もreturn値に返さないことをvoid(空洞)といいます)

いくつかの例をみてみましょう。

double //ソーセージの種類-返却値
my_func(double a, double b,double c)//関数名と仮引数リスト(肉とスパイス)
{
return(a*b+c)    //出てくるソーセージ-返却値
}

上の例のように、関数は返却値の種類である"double"から始まります。そして、括弧が後に続く関数名が続きます。
括弧の中にはお肉とスパイス...失礼しました。引数を入れこんでください。
ここでは三つの具材・・もとい、引数としてdouble a, double b, double cを入れこみました。
それから、関数本体には始まりと終わりに大括弧をいれます。今回の例では関数本体には演算子が使われています(a*b+c).
returnキーワードには最終結果を返す役割があります。


Returnキーワード

returnキーワードは関数を終わらせます(breakキーワードがループを終わらせたのと似ています)
そして、それは関数呼び出し式にコントロールを引き渡します。
returnキーワードは、上の式のように、その括弧の中に式を入れることができます。
例 return(a*b+c);この意味は関数を終わらせ、式の結果を返すというものです。
そして、これには、式がない場合や、今回のケースのように、式を終わらせるだけに使用することがあります。

注目:全ての関数がreturnキーワードを使うわけではありません。特に返却値がない場合は使わないことが多いです。例をご覧ください。

void //voidはソーセージが-return値がないことを示します。
my_func(string s) //関数名と関数パラメーター(肉とスパイス)
{
  Print(s);
}

上の関数はreturn値がありません。でもそれは貴方が調達したパラメーターsを出力します。
関数に返却値がない時はvoidを関数返却タイプとして使います。
これらの関数の種類は、いくつかのプログラミング言語で"Methods(方法)"と呼ばれていますが、MQL4では、関数と呼びます。

関数呼び出し

私たちは関数が何かについて大変よく理解しましたね(私の希望的観測でしょうか?)。MQL4ではどのように関数を使うのでしょうか?

関数を書いて、あなたのプログラムで関数を使った後に、特別な処置が存在します。
この処置を、呼び出しといいます。

あなたが二つの整数(integer)の総和を集める(collect)関数を使ったとしましょう。
下の関数になります。

int collect(int first_number,int second_number)
{
   return(first_number+second_number);
}
あなたは上の関数がどのように働くかわかるでしょう。しかし使ってはなりません。

このように使ってください。

int a=10;
int b=15;
int sum=collect(a,b);
print(sum);

上の例では魔法ように25が出力されます。でもどのようにしてわかるのでしょうか?
この魔法の行はint sum=collect(a,b)です。ここで貴方は変数(sum)に関数の返却値をもつように宣言し、関数に二つの引数(a,b)を与えたのです。
これを一般的に関数呼び出しといいます。
MQL4があなたの作った関数名を見た時、引数を持って、関数に行き、すぐに結果を持って戻ってきて、同じ行に結果を置きます。
これは、あなたが呼び出した関数の中の場所の代わりにすべての関数の文をコピーするようなものです。わかりましたか?

関数の中に関数をいれこむ。

あなたは関数本体のなかに、他の関数をまとめることができます。なぜなら、呼び出し文は普通のステートメントとして扱われるからです(実際ステートメントです)

例えば

今から上記のcollect関数の中に、collectionの結果を出力する新しい関数が入ったものを使います。

void print_collection(int first_number,int second_number)
{
   int sum=collect(first_number,second_mumber) 
   Print(sum);
}

ここで私たちはprint_colllection関数本体の中にcollect関数を呼び出し結果を出力しました。voidの意味は返却値を返さないという意味でしたね。


MQL4の特別な関数 init(),deinit() start():

MQL4では、すべてのプログラムの始りに関数"init()"(初期化)があります。それはあなたのプログラム(エキスパートアドバイザー、カスタムインディケーター)とメタトレーダーチャートをくっつける時、もしくはあなたがチャート周期や通貨ペアをかえたりした時に発生します。
そしてその仕事はあなたのプログラムのメイン変数を初期化することです(初期化変数については次回の講義で触れることにします)

あなたのプログラムがその仕事を終えた時もしくは、チャートウィンドウをしまった時や、チャート周期
や通貨ペアをかえた時、メタトレーダーターミナルを終了した時に関数"deinit()"(de-initialize)が発生します。

第三の関数(最も重要な関数)は"start"()で、これは、新しい値段が記録されるたびに発生します。あなたのプログラムの90%はここの関数のなかで行われています。

これらの関数は、実際にエキスパートアドバイザーや、カスタムインディケーターのコードを打ち込んでいる時に、必須の知識としてより詳しくしることになるでしょう。

楽しんでいただけましたでしょうか。

それでは。
Coders'Guru



メタバイザーによる補足説明
関数についての説明はなかなか難しかったとおもう。

私が関数についてしっかり理解できるようになるまでには結構時間がかかった。

CodersGuruさんの説明は大変にわかりやすいが、ここでは更に具体的な解説をしていこう。


int collect(int first_number,int second_number)
{
   return(first_number+second_number);
}

これは、intタイプの具材(引数)を二つ必要とするcollect製造機(関数)で、この製造機に具材(引数)を放りこむと、放り込まれた2つの具材(引数)の総和をソーセージ(返却値)として、製造する関数だ。


int a=10;
int b=15;
int sum=collect(a,b);
print(sum);

そしてこの例を見て欲しい。
上のcollect製造機(関数)の具材(引数)としてint(整数)である10と15を入れている。
そうすると、collect製造機は10と15の総和をソーセージ(返却値)として製造してくれる。
そのソーセージをsumという箱に入れるので、sum=25になる。

・・これはただCodersGuruさんの説明を言い換えただけだが、理解して頂けただろうか・・?

関数は実際にはエキスパートアドバイザーで必須の知識になる。

この関数を理解していないと、自分が思ったような自動売買ソフトをつくることはできないので、もし君がEAを作ろうと考えているならば関数は良く抑えておいて欲しい。

今回は以上だ。最後までよんでくれてどうもありがとう。


何か質問や意見があれば、メタバイザーの放課後まで遊びに来てほしい。 

人気ブログランキングに参加している。
にほんブログ村 為替ブログ FX システムトレード派へ
もしよろしければ応援してほしい。どうもありがとう。

ちなみにブログをやっているメタトレーダー仲間は から見ることができる。

それではまた会おう。
メタバイザー
メタトレーダー講義   0

:システムトレード - :株式・投資・マネー


メタトレーダー講義 第8回 変数
こんにちわ。FXボーイです。
今回の講義が終われば、残す基礎知識はプロパリティー一つとなりました!
あと少しなので気合いをいれて頑張りましょう!





この文章はCodersGuruさんのMQL4Lesson4の訳文です。(翻訳しての転載に本人の許可はとってあります)         
                  メタトレーダー講座      
                      Coders'guru             
                       www.forex-tsd.com
                           
                            -8-
                          変数 

MQL4変数の講義へようこそ。

前回の講義は楽しんでいただけましたでしょうか。そしてあなたが変数の難関に立ち向かう準備ができていることを祈ります。
変数は大変難関な講義内容になりますので、データタイプの記事を復習しておくことをお勧めします。

それでは変数を楽しみましょう

変数って何?

以前にこの秘密をあなたにお話したように、変数とは、データを保存すべき記憶貯蔵庫の場所はどれかを指定する行為の名称です。

このことが鮮明にわかる助けになるように、記憶貯蔵庫は一連のサイズの違う箱であるとイメージしてください。箱の大きさは記憶容量単位(バイト)が要求する記憶貯蔵庫収容空間の大きさです。

     ・データを貯める箱を使うために、その箱は名前をつけられなくてはなりません。この過程を、
      declaration(宣言)といいます。

     ・宣言の過程において、あなたはコンピューターにどのような種類か、そしてどのようなサイズ
      の箱が使いたいかを知らせる言葉を使わなくてはなりません。そのコンピューターに伝える
      言葉をキーワードといいます。キーワードを使って宣言してるわけですね。

     ・もしあなたが情報の種類と関係がある意義のある名称を箱につけたなら、そのデータをより
      簡単に見つけられるようになります。その箱につけた名称のことを変数名(識別子とほぼ同
      義)といいます。

     ・データは、箱にいれられるときに、振り分けられながら箱にいれられます。
     
     ・あなたが作った箱に価値を付けたとき、同じ行であなたは計量値を宣言しています。この過
      程を(変数生成時に指定された値である初期値を格納することになるので)initialization(初
      期化)
といいます

私たちが変数を作るとき、私たちの変数に、特定の記憶貯蔵庫の長さ(大きさ)を割り振ってほしいとコンピューターに告げています。文字列や、簡単な数字、文章、大きな数字は同じ記憶貯蔵庫の場所に入れておくことができないので、コンピューターはどのような種類のデータで、どのくらいの長さのデータなのだと私たちに聞くわけです。これがデータタイプの意味です。

例えば、もし私たちがこのコード文をコンピューターに言う時、

int MyVaraible=0;

これは、私たちはコンピューターに4バイトの長さの単位を私たちのつけた変数名称であるMy Variableに与えてくれと頼んでいるわけです。

いま使用した例を使って説明すると
int ←キーワード
int ←Integer data type
int ←Declaration(宣言)
MyVaraible←変数名
=0←初期化

MQL4で、これらはデータタイプの種類です。

   ・Integer(int)  整数
   ・Boolean(bool)論理型
   ・Character(char)文字
   ・String(string)文字列
   ・Floating-point number(double) 浮動小数点数(小数点が動くので少数と整数に対応)
   ・Datetime(datetime)


以前のデータタイプ講義の中から数行コピーしておきました。復習になりましたでしょうか。
さて、今から変数をどのように宣言するかについてから始めましょう。

宣言

変数の宣言の意味は、その世界への紹介と、変数タイプの指定です。宣言は、あなたがデータタイプで学んだキーワード(int,double,char,bool,string,color and datetime)と、あなたがその変数のために選んだ名前を使うことによって行います。


int MyVaraible;

今あなたはMyVaraibleと名付けた整数タイプの変数を宣言しました。そして宣言する前に、MyVaraibleをあなたのコードに使うことはできません。もしも宣言なしで使用すれば、MQL4コンパイラは不平を漏らし、あなたに'MyVaraible'-varaible not defind.1 error(s),0 warning(s)とこのようなことを言うでしょう。

初期化

変数の初期化の役割は、ある一つの値を代入することです。例:MyVaraible=0;
宣言と同じ行で変数の初期化をすることもできます。     例:int MyVaraible=0;

そして、変数の宣言をある場所でして、初期化を他の場所で宣言することもできます。このように。

int MyVaraible
...
...
MyVaraible=5;

それでも、宣言は初期化の前に行わなければならないということは忘れないでください。

宣言の有効範囲

変数の有効範囲には二つの種類があります。 ローカル(局部)とグローバル(全体)です。

有効範囲の意味は、どの部分のコードが、変数を感知し、使用することができることというものです。

ローカル変数は、変数が宣言された外の世界は見られないものになっています。たとえば、関数の中で宣言された変数は、その関数ブロックのコードの一部になります。そして、コードのループや分岐ブロックのコードの中で宣言された変数はそれらのブロックの一部になり、外からはその変数を使うことはできません。

例えば、

double my_func(double a,double b,double c)
{
int d;
return(a*b+c);
}
d=10  ←こういうことはできません。

上記の例では、変数a,b,c,dはローカル変数になります。そしてそれは、関数ブロック(大括弧 { } の中に入っているものをブロックと呼びます)のコードの中でのみ使うことができます。そして、外のコードによって使われることはできません。ですので、上述のように、私たちは関数の後にd=10;等のような文を書くことはできません。なぜなら、関数の次の行からは、関数の外の存在になるので、dの変数を見ることができないからです。

第二の有効範囲はグローバル変数です。グローバル変数は、どのブロックコードにも属さず、ブロックコードの外側で宣言されたもので、あなたのコードのすべての場所から見られることができます。


int Global_Variable;
double my_func(double a,double b, double c)
{
return(a*b+c+Global_variable);
}

ここでは、Gloval_Variable変数が関数の外側で宣言されていますので、プログラムの中のすべての関数によって使われることができます。
グローバル変数は、もしあなたが初期値を設定しなければ、自動的にゼロにセットされます。

Extern変数(外部変数)

externキーワードは特別な種類の関数の宣言のために使われます。このような関数は、プログラムデータを入力するのを決める時に使われます。そして外部変数はエキスパートアドバイザーやカスタムインディケーターのプロパティから値を指定することができます。


extern color Indicater_color=C'0x00,0x00,0xff'; //青
int init()
{
...


ここにIndicator_color変数がextern変数として定義されました。これはあなたが最初に見るときは自分のインディケーター(もしくはEA)をメタトレーダーチャートに貼り付ける時になります。貴方はプロパティシートウィンドウで変えることができます。 これをみてください。

propertys.png


これらの
%K_period,%D
period,Slowing,
price_field,
移動平均の種別,
下限設定,
上限設定
変数が、externキーワードを使って定められた変数になります。ですのでプロパティーシートに現われました。
貴方の作るプログラムで変更可能な変数をつくりたいと思いましたら、extern変数を使えばどれでも可能です。

楽しんでいただけましたでしょうか。

それでは。

Coders'Guru





メタバイザーによる補足説明

今回の講義は大変分りやすかったので特に解説するところは無さそうだ。

何か質問があれば、メタバイザーの放課後まで遊びに来てほしい。 


人気ブログランキングに参加している。
にほんブログ村 為替ブログ FX システムトレード派へ

もしよろしければ応援してほしい。どうもありがとう。

ちなみにブログをやっているメタトレーダー仲間は から見ることができる。

最後までお読み頂いたことに感謝する。
メタバイザー
メタトレーダー講義   0

:FX(外国為替証拠金取引) - :株式・投資・マネー


メタトレーダー講義 第9回 プリプロセッサ
ついにここまできましたね!お疲れ様です。この講義が終わればいよいよインディケーターの作成法にはいります。長かったですね。 

それにしても長かった9回にわたる基礎講義がようやく終了しましたね!

次はいよいよインディケーター作成法に入りますので楽しみにしていてください。

本当にお疲れ様でした。

拙い訳のため解りづらいところも多かったと思いますがここまで読み進めて下さりありがとうございました。 それでは、最後の基礎講座に参りましょう。



この文章はCodersGuruさんのMQL4Lesson4の訳文です。(翻訳しての転載に本人の許可はとってあります)       
                        MQL4講座              
                        Coders'guru   
                         www.forex-tsd.com
                              -9-
                        プリプロセッサ


このシリーズでの、私の論理的な最後の講義へようこそ。
次のレッスンから、最初のカスタムインディケーターの作り方が始まります。
ですので、実践に入る前に、今までの9つの講義をしっかりと読み直しておくことをお勧めいたします。

それでは、プリプロセッサを楽しみましょう。


プリプロセッサって何?

プリプロセッサは、あなたのコードを始める前に、それらを実行するためにコンパイラに渡す取扱い説明書みたいなものです。

例えば、もし貴方がプリプロセッサを使って#includeと指令を出したとすると、それは、コードを始める前にコンパイラに、includeキーワードの位置に"win32.h"のファイルの中身を含めるようにと伝えていることになるのです。

MQL4では、4つのプリプロセッサーコマンドがあります。

1-defineコマンド

defineコマンドは一般的に定数が使われます。
定数はある一つのことを除いて非常に変数とにています。その違いとは、定数は値を一回しか設定できず、変数のように、コード内で値を変えることができないところです。



#define my_constant     100

上の例で注目して頂きたいことは、代入記号(=)がなく、定数名(my_constant)と値(100)の間にスペースがあるだけだというところです。

それと、文の終わりにセミコロンがなく、改行が入っているということにも注目してください。

定数名は前に習った識別子の名前のつけ方と同じルールに従います。(講義第2回シンタックス参照)例えば、定数名をつけるのに、始まりが数字ではいけませんし、31文字以上の定数名をつけることも認められません。

定数値は、あなたが望むどのデータタイプでもとることができます。

コンパイラーはソースコード(*1)の定数名の出来事に対応した値を置き換えるでしょう。
従いまして、上記の定数をあなたのコードで以下のように使うことができます。

sum=my_constant*10;   (合計値=100×10になります)


(*1)ソースコード:人間がプログラミング言語を用いて記述したソフトウェアの設計図


2-propertyコマンド

MQL4では、コンパイラ制御と呼ばれる予め定義されている定数があり、それはあなたのプログラムの中に設置することができます。
コンパイラ制御はコンパイラに指令を出すpropertyコマンドを使うことによって設置できるプログラムの特性です。そして、コンパイラーはその特性をex4 file(メタトレーダーにもともと備え付けられていた実行可能なプログラム)に書きこみます。

例えば以下のように記述します。

#property link "http://www.forex-tsd.com"
#property copyright "anyone want to use"


これがMQL4の予め定義されている定数のリストです。


定数               データタイプ 解説
link                 string   会社ウェブサイトへのリンク              
copyright              string   会社名                             
stacksize              int     スタックサイズ                   
indicator_chart_window     void    チャートウィンドウにインディケーターを表示させる    
indicator_separate_window    void    別ウィンドウにインディケーターを表示させる。       
indicator_buffers         int     バッファーの数を決める。上限は8(*1)          
indicator_minimum        int     別ウィンドウのチャートの底の値をきめる。  
indicator_maximum       int     別ウィンドウのチャートの天井の値をきめる。      
indicator_colorN         color    N番目の線の表示色の設定。線は最大8つまで。
indicator_levelN         double   別ウィンドウのインディケーターレベルNの設定、Nは最 
                        大8つまで設定可能。(*2)              
show_confirm           void     スクリプトが実行される前に確認メッセージボックスを表示
show_input            void     スクリプトが実行される前にプロパティシートが現れる:show
                         _confirmプロパティの無効化

(*1)バッファーとは 複数の機器やソフトウェアの間でデータをやり取りするときに、処理速度や転送速度の差を補うためにデータを一時的に保存しておく記憶装置や記憶領域のことです。インディケーターでラインを表示する時に使うみたいです。
(*2)レベルとは例えばストキャスティクスを使うとき30と70のところに線が引かれてますよね?それがここでいうレベルです。

3-includeコマンド


ファイル名に"include"コマンドをつけて、そのファイルを取り込んで欲しいとコンパイラにお願いすると、あなたがファイル全文をコピーして貼り付けるのと同じ役割を、あなたがincludeと書いた場所にします。


#include<win32.h>

上の例は、"win32.h"のファイルを開けて、全ての中身を読み、includeステートメントが書かれた場所にコピーしなさいとコンパイラに告げていることになります。

メモ:上の例はファイル名を山形括弧(<>)で囲んでいます。そしてこれはコンパイラーに初期設定の保存場所(普通はterminal_direcroey/experts/includeにあります。)を使ってwin32.hファイルを探しなさいということになります。現在書いているコードの保存場所は探しません。
もし、取り込みたいファイルがあなたと同じコードのパス(保存場所)もあったら、山形括弧のかわりにdダブルクオーテーションマークをつかってください。↓のようになります。

#include"mylib.h"

どちらのケースにしても、もしそのファイルが見つからなければエラーメッセージがでるでしょう。

どこにでも取り込むことができますが、普通でしたらソースコードの一番上に使用します。

ヒント:貴方の良く使う違う場所にあるファイルのコードを、includeコマンドを使って、必要に応じて自分のコードに書き込むことはプログラミングの良い訓練方法になります(ただのアドバイスです)

4-importコマンド:

これはincludeコマンドと似ていて、あなたのプログラムの外のファイルを使う時に使用します。
しかし、この二つには違いがあります。
inportはMQL4実行可能ファイル(.ex4ファイル)もしくはライブラリーファイル(.dll)のみ使用可能で、その関数を貴方のプログラムに取り込むという働きをします。

例えば

#import"user32.dll"
 int MessageBoxA(int hWnd,string lp Text,string lpCaption,
         int u Type);
 intMessageBoxExA(int hWnd,string lp Text,string lpCaption,
          int u Type,int wLanguageId);
#import "melib.ex4"
#import "gdi32.dll"
int    GetDC(int h Wnd);
int    ReleaseDC(int h Wnd,int h DC);
#import

"ex4"ファイルから関数を取り込んだ場合、それらの関数を使う準備のために宣言する必要はありません。
一方".dll"ファイルから関数を取り込んだ場合、貴方が使用したいように関数の宣言をしなくてはなりません。以下のようにやります。

int MessageBoxA(int hWnd,stringlp Text,stringlp Caption,
          int u Type);


そして宣言した関数のみ、コードで使えるようになります。

importコマンドを終えるために、空のimport行を書いて終わらせて下さい。#import(括弧は必要ありません。)


講義はいかがだったでしょうか。あなたが最初のインディケーターを作成できる準備ができていることを願っています。

それでは。

Coders'Guru





メタバイザーによる補足説明
CodersGuruさんには久しぶりに登場して頂いた。 これからは皆がメタトレーダーをいじれるようになるためのコンテンツも充実させていくつもりなので楽しみにしていてほしい。

プリプロセッサとは、イメージ的にはワープゾーンを作るみたいな感じだ。

1-defineコマンド   ではソースコード内で、どこにでも使用可能な定数を作るためにワープゾーンの
             中に保存しておく。

2-propertyコマンド  ではもともとワープゾーンの中に登録されていた機能を呼び出す。

3-includeコマンド  ではワープゾーンを使って指定したファイルを指定したコードの場所に呼び出す。

4-importコマンド   ではワープゾーンを使って指定した関数を指定したコードの場所に呼び出す

次はいよいよ、実際にインディケーターを作る講義に入る。長かったな。お疲れ様。

しっかりと復習して、次の講義に備えておくように。

ちなみにメタトレーダー集中講義も無料で行っている。気になる人は受講していってくれ。

何か質問や意見があれば、メタバイザーの放課後まで遊びに来てほしい。 

人気ブログランキングに参加している。
にほんブログ村 為替ブログ FX システムトレード派へ
応援してくれるとすごい嬉しい。どうもありがとう。

ちなみにブログをやっているメタトレーダー仲間は から見ることができる。

それではまた会おう。
メタバイザー
メタトレーダー講義   0

:システムトレード - :株式・投資・マネー


メタトレーダー講義 第10回 初めてのインディケーター
皆さんこんにちわ!ついに今回からインディケーター作成の実践ということになります。長かったですね!それでは張り切ってCodersさんの講義を見ていきましょう!



この文章はCodersGuruさんのMQL4Lesson4の訳文です。(翻訳しての転載に本人の許可はとってあります)       
                         メタトレーダー講座  
                         Coders'guru   
                          www.forex-tsd.com
                               -10-
                         初めてのインディケーター
                           第一部


MQL4の実践講座へようこそ。今回はMQL4での初めてのインディケーターの講義になります。

これから続く実践講座の前に、今までの9回にわたって説明してきた講義をじっくりと読み返すことをお勧めいたします。なぜなら、これからの講義で取り上げて、作成していくカスタムインディケーターと、エキスパートアドバイザーの講義では、今までの知識をたくさん使うことになるからです。

本日は、とても簡単なインディケーターを作ろうと思います。それは、トレードにおいてそれほど意義のあるものではありませんが、MQL4のプログラミングの理解には大変大きな助けになるものです。

それは高値から安値を引いた値を出すというものです。急がないでください。すぐにあなたはすべてのことを理解できるようになります。

さぁいきましょう!

メタエディター

これはMT4(MetaTrader4)に備えられているプログラムで、それはプログラムを作成すること、MQL4を読み込む助けをし、プログラムをコンパイルしたり等することを可能にさせます。

私は簡単にメタトレーダーのプログラミングができるようにするために、メタエディターのショートカットをデスクトップに作りました。もしあなたがメタエディターを起動させたいなら、3つの選択肢があります。

 1-MT4を起動し、F4をクリック、,ツールメニューからメタトレーダーを選ぶか、
   スタンダードツールバーのアイコンをクリック

 2-スタートメニューから、プログラムのなかからMetaTrader4のフォルダをさがして、
   MetaEditorをクリック
 
 3-MT4の備え付けられたパス(普通はC:/ProgramFiles/MetaTrader4)をみつけ、
   MetaEditor.exeを探し出し、それをクリックする。
  (私としてはこのショートカットをデスクトップに作ることをお勧めします。)


上にあげた方法を使うことによって、下の図のようなメタエディターが起動します。

図1をみればわかるように、メタエディターには三つのウィンドウがあります。

   1-エディターウィンドウ プログラムを書き込むところです。
   
   2-ツールボックスウィンドウ 中には3つのタブが含まれています。
     a. Errorsタブ もしエラーがコードの中にあればそこで見れます。
     b. Find in filesタブ Editに含まれているFind in fileを使うか、ホットキーとして登録されてい
       るCTRL+SHIFT+Fを押すことで、検索条件のキーワードが含まれているファイルをここで見
       ることができます。
     c. Helpタブ 貴方がより知りたいと思っているキーワードを強調(範囲を選択して青くすること)
       しF1をクリックすると、このタブで指定したキーワードに対する解説をみることができます。
   
   3-ナビゲーターウィンドウ その中には三つのタブがふくまれています。
     a.Filesタブ MT4フォルダ内に保存したファイルを簡単にアクセスするようになります。
     b.Dictionaryタブ MQL4のヘルプシステムに簡単にアクセスできるようにします。
     c.Searchタブ MQL4辞書を簡単に検索できるようにします。

エディター
                           図1-メタエディターウィンドウ

メタエディターメニューにツールバー、ウィンドウどれもをうまく使いこなせるようになることをお勧めします。

それでは、初めてのインディケーター作成を楽しみましょう!

カスタムインディケーターはテクニカル指標を使うことができるようにするプログラムで、自動売買ができるようにするものではありません。


最初の三ステップ

さぁメタエディターを起動して、メニュー、ツールバー、ウィンドウをうまく使いこなしながらやってみましょう!

カスタムインディケーターを作るために、まず3ステップ踏む必要があります(後にこのめんどくさい作業を飛ばす方法を教えます。私の個人的な方法ですが)

ステップ1:Fileメニューをクリックします。→New(CTRL+Nのホットキーを使うか、スタンダードツールバーにあるNewアイコンをクリックすることでも可能です。)
そうすると、操作ガイド(図2参照)が次のステップへと案内してくれます。
Custom Indicator programをクリックして、次へを押してください。

figure3.png
                             図2-新規立ち上げ操作ガイド

ステップ2:次へをクリックすると、次の操作ガイドが現れます。(図3参照)そこではあなたのプログラムの特性を編集することができます。このステップで、今からあげていく特性を設定することができます。

   1-プログラム名。これは世界があなたをプログラムと一緒に呼び出す名前でもあります。そして、
     これはanatano_eranda_namae.mp4として保存されます。
   2-作者名。プログラムを作った人の名前。
   3-あなたのウェブサイトへのリンク
   4-外部変数リスト:少しここで外部変数について思い出してもらいたいのでとまります。
    外部変数は貴方のインディケーターのユーザーが、貴方のインディケーターのプロパティータブ
    から設定を変えることができる変数です。例えば、移動平均線のインディケーターにある移動平
    均線期間等
がそれにあたります。これらの変数はあなたのコードの中では"extern"キーワード
    で宣言されます。(変数の講義を読み返してみてください。)
    ここの操作ガイドでは、これらの種類の変数を追加することが可能です。

    私たちの初めてのインディケーターでは、外部変数について記述する必要はありません。図4
    に書かれていることだけ書いて、ステップ3に進みますので終わりましたら次へをクリック
    してください。
figure4.png
                             図3プログラム特性操作ガイド 


ステップ3:三つ目にでてくる操作ガイドはDrawing propaty操作ガイドです(図5参照)
ここでは、インディケーターのラインの描写プロパティーを設定することができます。例えばラインは何本か、色は何色か。どこにあなたのインディケーターを描くか(メインチャートか、それともセパレートウィンドウか。)

この設定ガイドは以上の設定をします。
   
   1-Indicator in separate windowオプション:これをクリックすると、そのインディケーターはメインチ
    ャートではなく、セパレートウィンドウに描かれます。もしクリックしなければ、そのインディケータ
    ーはメインチャートウィンドウに描かれることになります。
   2-Minimumオプション:これは貴方がセパレートウィンドウオプションをチェックした時にのみ利用
    可能なもので、チャートの底辺の値を設定する役割を持ちます。
   3-Maximumオプション:これは貴方がセパレードウィンドウオプションをチェックした時にのみ利用
     可能で、チャートの天井の値を設定する役割を持ちます。
   4-Indexesリスト:インディケーターのラインを増やしたり、初期設定の色をきめることができます。

これらのオプションについての詳しい解説は次の講義まで待って頂きたく存じます。どうか急がないでください。
私たちの最初のインディケーターでは、Indicator in separate windowオプションを選びAddボタンをクリックしてください。Addボタンをクリックすると、設定ガイドはindexesリストに、図5のようにラインを追加します。

Fifure5.png
                           図4描写特性設定ガイド

完了をクリックすると魔法が始まります。設定画面は立ち消えて、焦点はメタエディターへと戻りますが、、何だと思いますか?

貴方の最初のインディケーターで使うコードのしたが気の準備ができているのです。

これが貴方が得られるであろうコードです。

//+------------------------------------------------------------------+
//| my_first_indicator.mq4 |
//| Codersguru |
//| http://www.forex-tsd.com |
//+------------------------------------------------------------------+
#property copyright "Codersguru"
#property link "http://www.forex-tsd.com"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red

//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{

//---- indicators
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{

//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int
counted_bars=IndicatorCounted();
//----

//----
return(0);
}
//+------------------------------------------------------------------+

上のコードを見ればわかるように、設定ガイドはたくさんのコードを貴方のために書いてくれていたのです。ここで私は設定ガイドとあなた方に感謝の念をささげたいと思います。

次の講義では、上記の全てのコード文と、はじめてのインディケーターを作るために追加したコードを発見することがでるでしょう。準備が整ったことを願います!

それでは。
Coders'Guru





メタバイザーによる補足説明
いよいよはじまったな。

これからあと3回の講義があるので、今までの講義をしっかりと思いだして授業に取り組み、
インディケーターを作れるようになってほしい。

自分で検証ができるトレーダーになることは物凄く重要なことだと思う。

例えばもし私に検証の知識が無ければサヤの日記等をつけることもできないので、

取引をする際に自分が何をよりどころにしているかが分らなくなってしまう。

そうすると感情でトレードするしかなくなる。その結果積み上げるものは殆どの人は損失だろう。

また、売買検証を行えなければ結局他人の話を鵜呑みにするしかなくなるので、

自分の人生を他人の判断に委ねてしまう結果になる。

しかし、一般的に、赤の他人はあなたのこと等正直どうでもよいわけで、

そうすると、セールスレターだけは上手な適当な情報商材に流されて、

損失を計上し泣き寝入りと言ったことにもなりかねない。

私は安易に他人を信じてすごく悔しい思いをしたことがある。

但し、悪いのは結局自分の思考を停止した自分なのだ。

基本的に社会に出てから頼れるのは自分しかいない。世間はあなたのお母さんではない。

自分でしっかりと知識を身につけ、世の中を生き抜いていこう。

頭を使えばこの世は遊び場になる可能性だって秘めている。

私は、訪問していつも暖かい言葉をかけてくれている人たちのことを絶対に裏切りたくないので、

皆の力になれれば良いなと考えているが、信じるか信じないかはあなた次第だ。

何事も常に自分で判断してほしい。

良い人で騙されてひもじい暮らしに甘んじるのはもう終わりにしよう。


ちなみにメタトレーダー集中講義も無料で行っている。気になる人は受講していってくれ。

何か質問や意見があれば、メタバイザーの放課後まで遊びに来てほしい。 

人気ブログランキングに参加している。
にほんブログ村 為替ブログ FX システムトレード派へ


ちなみにブログをやっているメタトレーダー仲間は から見ることができる。

いつも訪問してくれてほんとうにありがとう。
メタバイザー
メタトレーダー講義   0

:システムトレード - :株式・投資・マネー


| HOME |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。