トップ  >  自作してみる >  MQL4未経験者向け(インジケータ作成の基本)  >  メインウインドウ  >  M1-1.トレンド系インジケータ作成(終値ライン)準備編
M1-1.トレンド系インジケータ作成(終値ライン)準備編


プログラミング未経験者向けのページを読み終わったら、
実際にソースコードを作成してプログラミングしてみましょう。
メタエディターを起動する

まずはMT4を起動して、メタエディターを起動します。
MT4のツールバーにメタエディター起動ボタンがあるのでこれをクリックします。
メタエディタ起動


ツールバーにこのボタンが見つからない場合、ツールバーが非表示になっている可能性があります。
MT4のメニュー ⇒ 表示 ⇒ ツールバー ⇒ 標準
にチェックが入っているか確認して下さい。
メタエディタ起動

インジケータファイル作成


メタエディターを起動したら、新規作成ボタンをクリックします。
.mq4ファイル作成

MQLウィザードウインドウが開かれたら、カスタムインジケータを選択して、次へをクリックします。
.mq4ファイル作成

・名前の欄にはインジケータ名を入力します。
TestCloseLineという名称のインジケータを作成するので、「TestCloseLine」と入力します。

・著作者の欄には自分の名前やニックネームを入力します。
空白でも可能です。後でソースコード上で変更・追加する事も可能です。

・リンクの欄には自分のブログやサイトのURLを入力します。
空白でも可能です。後でソースコード上で変更・追加する事も可能です。

・パラメータ欄はインジケータのパラメータを追加する事が出来ますが、
これも後でソースコード上で変更・追加が可能です。
今回は使用しないので追加しません。

.mq4ファイル作成

イベントハンドラはOnCalculateが選択された状態で次へを押します。
OnTimerやOnChartEventも後でソースコード上で変更・追加が可能です。

.mq4ファイル作成

インジケータの描画プロパティも何も変更せずに完了を押します。
このプロパティも後でソースコード上で変更・追加が可能です。

.mq4ファイル作成

メタエディターのナビゲーターを確認すると、Indicatorsフォルダの下にTestCloseLine.mq4というファイルが追加されました。
このmq4ファイルがソースコードファイルになります。
このソースコードファイルにプログラムコードを書く事になります。
.mq4ファイル作成

メタエディターでTsetCloseLine.mq4ファイルを開いた状態でコンパイルボタンをクリックします。
まだ何も手を付けていないソースコードファイルなので、問題無くコンパイル完了する筈です。
.mq4ファイル作成

MT4のナビゲーターのインジケータフォルダの下にTestCloseLine.ex4という実行ファイルが追加され、エラー検出されずコンパイル完了している場合使用可能になります。
.mq4ファイル作成

実行ファイルは適用したいチャートにドラッグ&ドロップします。
.mq4ファイル作成

中身の無いプログラムなのでチャート上に何も表示されないので、インジケータが適用されたか分かりませんね。
チャート上で右クリックして"表示中のインジケータ"をクリックします。
.mq4ファイル作成

現在適用中のインジケータ一覧が表示されます。
.mq4ファイル作成

mq4ファイルとex4ファイル

上記説明で突如出てきたmq4ファイルとex4ファイルですが、簡単に説明すると、

◆mq4ファイルはソースコードファイル
◆ex4ファイルは実行ファイル

です。

プログラミング経験のある人なら直ぐに理解出来たと思いますが、プログラミング経験の無い人には理解不能だと思います。
プログラミング経験の無い人に説明しても「よく理解できません」とよく言われてしまいます。

ソースコードとはプログラムコードを書くファイルで、人間が読める内容のファイルです。
人間が読める内容のファイルなので、mq4ファイルはテキストエディタで閲覧する事が可能です。
.mq4ファイル作成

このようにメタエディターでは無く、外部のテキストエディタで開いて編集する事も可能です。


しかしmq4ファイルのように人間が読めるようなデータはコンピュータでは処理する事が出来ません。
人間には読めるけど、コンピュータには人間の言葉を読む事が出来ません。
何故ならコンピュータは0と1しか使わない機械語しか読めないからです、その為人間が読めるソースコードをコンピュータが読める機械語に翻訳する必要があります。
コンピュータが読めるように機械語翻訳されたデータがex4ファイルです。
.mq4ファイル作成

.ex4ファイルはバイナリエディター等のバイナリ形式のファイルが閲覧出来るソフトが無いと中身を確認する事が出来ません。
16進数で表示していますが、人間が読める内容では無いですよね?

.mq4ファイル作成

図でまとめると、こんな感じです。
実際にMT4で動作しているのは、mq4ファイルでは無くex4ファイルが実行されて動作しています。

mq4ファイルとex4ファイルは連動しているわけで無い為、
mq4ファイルをコンパイルするまでex4ファイルは更新されません。
正確にはコンパイル開始時にex4ファイルは削除され、コンパイル完了時に新しいex4ファイルが作成されます。
つまりコンパイルエラーになった場合、ex4ファイルは消えたままになります。

なお、MT4でex4ファイルを実行中にコンパイルエラーになった場合、MT4上のex4ファイルはDRAMメモリにコピーされたものが動作しているので動作継続しますが、 ストレージ上のex4ファイルは削除されているので、一度アンロードしてメモリ上からex4ファイルが消えるとコンパイルエラーを解消するまで動作させる事は出来ません。

基本的にコンピュータはストレージからDRAMメモリにデータをコピー(ロード)して、DRAMメモリ上にあるデータを使います(正確にはDRAMメモリから更にCPUキャッシュメモリへコピーして、そのキャッシュのデータを処理します)。
ストレージのデータにダイレクトアクセスして処理している訳では無いので注意して下さい。このコンピューターの基本的な仕組みを理解していない人が結構います。
.mq4ファイル作成

ゲーム(任天堂が大好きなカートリッジタイプを除く)をやった事がある人なら分かると思いますが、
ゲームが始まる前や場面が切り替わる時に「ロード中」という画面で待たされた経験があると思います。
最近のオープンワールドのゲームではレベルストリーミング(外部リンク) が使われてゲーム中にバックグラウンドでロードされているので気が付きにくいかもしれませんが、それでも最初にゲームを始める時はロードで待たされると思います。
そしてストレージをHDDからSSDに変えるとこのロード時間がとても短くなりますよね?
このロードも同様にメモリへのロードを意味しています。

そしてこれを知っている人はもう少ないかもしれませんが初代PlayStationではゲーム中にディスクを抜いてもゲームを続ける事が出来ます。 ゲーム中のデータはメモリにロードされたデータを処理しているので、ディスクを抜き取っても次の場面に切り替わるまではゲームを続ける事が出来ます。
ただしムービー再生中はディスクから動画データを再生しているので無理ですけどね。


ちなみにソースコードファイルを一括翻訳して、翻訳されたファイルを実行するのをコンパイラ言語といいます。
ソースコードを1行づつ逐次翻訳して実行するのをインタプリタ言語といいます。

だいたいネット等で配布されているインジケータやEAは実行ファイルのex4ファイルだけしか配布していないと思います。
多分、有料販売しているのはex4ファイルだけしか配布していないと思います。
ソースコードは飯の種ですから、有料販売している場合はソースコードを晒すような事はしない筈です。
ex4ファイルしか公開されていない場合、当然ソースコードを見る事が出来ないのでアルゴリズムを調べる事は出来ません。
致命的な不具合があっても自分で修正する事も出来ません。

ex4ファイルからmq4ファイルを生成するデコンパイルツールもありますが、今はセキュリティ対策されてデコンパイルし難くなった筈です。
それでもデコンパイルする人はいますから、どうしてもアルゴリズムを知られたくないけど実行ファイルを公開配布したい人は、
重要なプログラム部分だけをdllにする等の対策が必要になります。
dllのデコンパイルの方がex4のデコンパイルより遥かに難しくなるので、初心者クラッカーにデコンパイルされる確率が減ると思います。
dllはベテラン向けなので、ネット公開しない人は意識しないで大丈夫です。


スポンサーリンク
検索

↑の検索エンジンが表示されない人は、
↓の古い検索エンジンを使用して下さい。
カスタム検索
MQL4リファレンスツリー
スポンサーリンク


Copyright ©2015 MT4でEA自作しちゃお~ All Rights Reserved.


Top

inserted by FC2 system