自作してみる



MT4の醍醐味はインジケータやEAをプログラミング出来る事です。
プログラミング経験の無い方にとって敷居の高いように見えて敬遠しがちですが、 プログラミングは実は非常に簡単だったりします。
プログラミングには資格も知識も必要ありません、勿論年齢も関係ありません、

「自分でプログラムを組みたい」

と思った瞬間が勉強を始めるべきタイミングです。その熱意が冷める前にとりあえず開発ツールを立ち上げて適当に触り始める事が大切です。
幸いにもMT4は無料で取得出来るので、今すぐにでもプログラムを組むことが出来ます。

MT4でインジケータやEAを自作するにはMQL4という言語を用いますが、MQL4言語はC++言語の概念に基づいて作成されています。
C++言語を知らない人は先ずC++言語から学びましょう・・・と言っているわけではありません、
プログラム言語を全く知らないのであれば余計な言語の勉強せずに、MQL4言語を勉強しましょう
(IT業界に就職する為の勉強をしたいのであれば話は別です)。

なぜならMQL4言語には、C++言語やC言語には無い特徴がある為、C++言語やC言語の知識があると弊害が生じる事があります。
ベテランのプログラマーであれば臨機応変に頭を切り替えて対応出来ると思いますが、 初心者にとって言語による違いの差異を吸収する事は非常に酷な事です。



プログラミングは難しくない


プログラムと聞くと非常に難しいもので、複雑怪奇なものと思われがちですが・・・
基本的に 「処理する」「条件分岐」「繰り返し」 の3つの事しかやっていません。
プログラムの流れは、以下のようなフローチャートで表現されます。



フローチャートは上から下へ逐次処理され、基本的に下から上に向かう事はありません。
下から上へ向かわせる事は可能ですが、そのようなプログラムの多くはスパゲティプログラムと呼ばれるものが多く、 不具合を招き易い駄目なプログラムの見本になる事が多いです。

プログラムを設計する時は、上記のフローチャートをイメージして考えると、そのイメージをそのままプログラムコードに落とし易くなります。
プログラムの基本はこの3つの事しかやっていない為、プログラムを作成する事自体は非常に簡単なのです。

プログラミングで難しいのは不具合(意図しない動作)を見つける事と、不具合を潰しこむ事です。
不具合対策はある程度経験と勘を培ってからでも遅くはありません、 なので初心者の方は不具合なんて気にせずどんどんプログラムコードを書いて沢山経験を積みましょう。
綿密に設計したプログラムでも不具合は発生するので、気にしていたらやってられませんw
そして不具合が発生し易いのは「条件分岐」「繰り返し」でのつまらないミスが多かったりします。

コンピュータは実は賢くありません


コンピュータは人間と比べると、お世辞にも賢いとは言えません・・・。
人間は自分で考える能力を持っている為、指示した以上の成果をあげてくれます(中には例外がいますが・・・)。
その代わり、うっかりミスや偽装やサボったりしますし教えた事を忘れます、そして人間の手で行う作業は時間がかかります。

コンピュータは指示された事しか出来ません、何も指示されていなければ一切何もしません。
その代わり指示された事は間違える事無く確実にやってくれます、それも超高速でやってくれます。

コンピュータへの指示というのはプログラムの事です。
コンピュータへの指示は、1〜10まで全て指示する必要があります。
相手が人間だったら
「えっ!?こんな事まで教えなければならないの?」
というレベルの内容まで全て指示しなければなりません。

そして人間と違い曖昧な指示で理解してくれる事はありません、
指示する際には
具体的な数値で指示する必要があります。
その為、実際にプログラミングする際には数値で考える必要があります。


例として、ユーロドルのチャートにボリンジャーバンドのインジケータを表示させて、ストラテジーを考えてみます。
ボリンジャーバンドの設定は期間:25、標準偏差:2σ、終値で算出。
ボリンジャーバンドの詳細については外為オンラインの"FX 実戦チャート術"ページ参照でお願いします。



人間相手に指示するのであれば、
「ボリンジャーバンドの2σにタッチ(@の白線)したら逆張りエントリーして、 センターの25移動平均線にタッチ(Aの橙線)したら決済してください。」
で済みますが、コンピュータに指示する場合は具体的な数値で指示しなければなりません。




コンピュータに指示する場合は、
まずボリンジャーバンドの2σ下限のレート算出します。
今回のパターンでは2σの下限レートは1.08232です。
この下限レートの1.08232を、現在の買値レートが下回ったら(買値レートが1.08232未満になったら)、ロングエントリーをします。
そして25移動平均のレートを算出します。
今回のパターンでは25移動平均のレート1.08813を、現在の売値レートが上回ったら(売値レートが1.08813より高くなったら)決済します。

という具合に、具体的な数値で指示します。
ちなみにこれだけでは指示が足らず不具合が生じます。
またボリンジャーバンド等の有名なテクニカル指標であれば、標準でボリンジャーバンドを算出する関数(iBands)が用意されています。



とりあえず覚えるワード

前置きが長くなってしまうと眠くなってしまうと思いますので、早速ですが簡単なプログラムを組んでみます。
プログラムを組むにはプログラム言語のワードを知る必要がありますで、最低限覚えておきたいワードを紹介します。
(ここで無理に覚える必要はありません、後のサンプルソースのワードにリファレンスへのリンクしておきますので、忘れてたらその都度リンクを辿って確認すれば大丈夫です。)

種類 ワード 詳細
演算子 ; (セミコロン) 式の終了
== 等しい
!= 等しくない
|| (OR演算子) 又は
&& (AND演算子) 且つ
[] 配列
制御処理 if - else 条件分岐
for 繰り返し
{ } 重文処理
データ型 int 整数型
double 浮動小数点型
datetime 日付時刻定数
bool ブーリアン型
string 文字列型
void void型
変数型 static 静的変数
input input変数
プリプロセッサ #define マクロ置換
#property プログラムプロパティ
インジケータ作成時に必要になります。
共通関数 Print ログにメッセージを表示します。
デバッグ時に役立ちます。
Comment チャートの左上隅にコメントを表示します。
デバッグ時に役立ちます。

他にも細かいワードがありますが、初めはとりあえずこれだけ覚えておけば基本的なプログラムは組めます。
データ型の整数型や浮動小数点型には複数の種類がありますが、外部DLLライブラリを使わずにMQL4内で完結するプログラムを作成する分には、
整数型はint、浮動小数点型はdoubleで十分です。

他にMQL4独自の関数が非常に沢山ありますが、それについては必要な時にリファレンスで調べる必要があります。
とても全部覚えきれるものでは無いので、無理に覚える必要はありません。


次のページ

初心者向け 稼働テスト トレード解析 こんな時は?
  1. 作成中
  1. 作成中
  1. 作成中
  1. 作成中
スポンサーリンク

スポンサーリンク
検索
カスタム検索
リファレンスツリー
オススメ


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


Top

inserted by FC2 system