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

メタトレーダー講義 第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

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


http://metavicer.blog61.fc2.com/tb.php/82-da93ec4a
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。