インジケーターを作ってみる
50種類以上の通貨ペア、各種CFD(金、株など)対応
今回は、インジケータを作ってみようと思います。 3本の移動平均を表示したいと思います。
簡単なプログラムを作ってみるを参考にMetaEditorのメニューでFile-Newで「Expert Advisor Wizard」を開きます。 「Custom Indicator」にチェックを入れて、次へを押します。
Nameに3EA(名前なので何でもいいです)、Addボタンを押してパラメータを3つ追加します。
Nameをそれぞれ、Peried1、Peried2、Peried3とします。 Typeはintにしてください。
次へを押します。
Addボタンを押して、表示するグラフのラインを追加します。
3つ追加して、Red、Yellow、Greenを選んでください。
別に違う色でもかまいません。
今回は、線で表示するのでTypeはLineのままにしてください。
完了を押すと、スケルトンが作成されます。
先頭の方に以下の行があると思います。
コメントを付けて、説明します。
//メインウィンドウに表示する。
#property indicator_chart_window
//グラフに利用する入れ物が3つ(最大8個)
#property indicator_buffers 3
//1本目は、太さ1の赤
#property indicator_color1 Red
//2本目は、太さ1の黄色
#property indicator_color2 Yellow
//3本目は、太さ1の緑
#property indicator_color3 Green
//入力するパラメータは、以下の3つ
extern int Peried1;
extern int Peried2;
extern int Peried3;
//表示するグラフに対応する入れ物3つ
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
さて、以上でプログラムは終了です。
コンパイル(F5)してみましょう。
メタトレーダーへ戻って、3EAを表示させたい通貨のウィンドウへドロップしてみてください。
iMaが移動平均を取得する関数です。
パラメータで、いろいろな移動平均を取得できます。
今回は、単純移動平均(MODE_SMA)、終値(PRICE_CLOSE)を利用しました。
他にも、指数平均、平滑平均、加重平均なども選べます。
終値の他にも始値、高値、安値、平均をとったものなどを選ぶことができます。
今回のプログラムは、以下からダウンロードできます。
インジケータは、
インストールパス\MetaTrader\experts\indicators
に入れてください。
タグ
2009年05月01日 コメント&トラックバック(9) | トラックバックURL |
50種類以上の通貨ペア、各種CFD(金、株など)対応
トラックバック&コメント
トラックバック
-
[...] めたぷろで紹介した「インジケータを作ってみる」で作成したインジケーター。 [...]
ピングバック投稿者: 3EA 3種類の単純移動平均を表示 | MT4 めたぷろ ダウンロードセンター — 2009年05月16日
コメント
コメントを投稿する






![[image]投資で失敗しない7つの法則:無料CDプレゼント](http://www.affiliatecenter.jp/invest/img/FX_freeCD/banner165x100seven_rule5e.gif)
![[image]無料レポートプレゼント:ドルが紙くずになった時に資産を守る方法](http://www.affiliatecenter.jp/invest/img/dollar/MNL4_165x100.jpg)



MyBlog

はじめまして、大阪の尖(とがり と読みます)
最近MT4の存在を知り、そのインディケーターの書き方を勉強してみたいなーと思い始めた、54歳の、プログラムを何にも知らないおっさんです。
サイト調べていたらあなたの教え方が一番分かりやすそうで、内容をザクッと読んで、即コメントしてしまいました。
ゆっくり読んで、作りたいインディケーターがあるんでチャレンジしてみます。Excelでは簡単にできるMAとそれを元にしたモメンタムなんですが、
作れるか・・・・・・。
分からない所がありましたら、ご指導お願いします!
とりあえずはご挨拶まで。
尖 信一
尖さん、はじめまして
プログラムの書き方は、なるべく簡単に説明していくつもりですが、わからないことは質問してくださいね。
MT4では、MAは簡単に求めることができます。
iMaという関数で、好きな時間軸の好きな時間の値を求められます。
それも、単純移動平均や指数移動平均などいろいろな種類を求めることができます。
MAもそうですが、標準でたくさんの指標を求める関数が用意されています。
たぶん、Exelだと多少計算式を駆使したと思いますが、用意されている関数なら簡単に取得できます。
もちろん、足が抜けたなど条件を組み合わせられますので、きっと作ることができると思います。
これから、自動売買のプログラミング方法もアップしていきますので、インジケーターだけではなくEA(自動売買)もチャレンジしてみてください。
[...] めたぷろで紹介した「インジケータを作ってみる」で作成したインジケーター。 [...]
初めまして。
MQL4プログラミングについて調べていたら、このサイトに辿り着きました。
EXCELのマクロが少し組める程度で、Cは全くやった事ないので、MQL4もコードにちょっと変更を加えるくらいしか出来ません。
めたぷろさん(運営者さんをそう呼んでもよいのでしょうか?)の記事を読んでいけば、プログラムを組めるようになりそうですね。
ただ、トレードに役立つインジケーターを作成するのには時間が掛かりそうです。
1つ、題材として取り上げて頂きたいものがあります。インジケーターのシグナル表示、BoxでのAlert表示、音でのAlert、メール送信は、コードをどう書くのか知りたいです。中々、画面に貼り付いてはいられないので、役立ち度合いは高いと思います。
RSIOMA V3というフリーのインジケーターがあり、シグナル表示はあるのですが、Box、音、メールを追加したいです。Heiken Ashi Alertからコピーしようとしたのですがうまく行きませんでした。
もし、RSIOMA V3へのAlert追加を題材として取り上げて頂ければ、非常に嬉しいです。是非ともよろしくお願い致します。
コメントありがとうございます。
メッセージのポップアップと音を鳴らすことですね。
順次取り上げていきたいと思うので、しばらくお待ちください。
RSIOMA V3については、利用していないので分かりませんが、調べてみます。
情報ありがとうございます。
ちなみに、
MessageBox
SendMail
という関数を使います。
MessageBoxはインジケーターでは、利用できません。
で、ダメなはずのインジケーターからはどういうことをやっているかというとWindowsのAPIを呼んでいるんです。
メタトレーダーは、外部のDLLなどを呼び出すことができるんです。
細かくは、ここではかけませんのでそのうちやってみますね。
ちょっと設定がややこしくなるので。。
ご返信ありがとうございます。
MT4は外部DLLの呼び出しが出来てWindowsのAPIからMessageBoxが使うんですね。本当に勉強になります。
RSIOMA(正式にはRSIOMA V3)はRSI of Moving Averageの略で平均化したRSIとの事です。2本のラインのクロスでエントリーを考えます。外為男さんのブログで紹介されており、ダウンロードが出来ます。
http://gaitameotoko.seesaa.net/article/54576203.html
プログラムが組める自分を想像しながら、少しずつ勉強して行きます。よろしくお願い致します。
Alert(…)
と
PlaySound(ファイル名)
で対応できそうです。
Alert(”High:”,High[0]);
PlaySound(”alert.wav”);
これで、うまくいくと思います。
この関数を知らなかったので、前回のコメントではAPIを使うようなことを言ってしまいました。
コメントを入力してください。
メタプロ担当者 様
MQL4で検索をしていて辿り着きました。
実は作成したいインジケータがあるのですが、必要なデータ定義と使用する関数や指定方法が分からないのです。
もし、コメント欄の趣旨にそぐわないようでしたら、ネグレクトしてくださって結構です。
もし、ご教示いただけるようでしたら、よろしくお願いいたします。
作成しようとしているインジケータですが、チャートウィンドウをUSDJPYで開いて、サブウィンドウにEURJPYとEURUSDを表示させるといった内容です。
そもそも各通貨ペアの価格の取り方が分からないのですが、とりあえず移動平均のピリオドを1にすれば代用できるのでは(?)と思いトライしてみました。
実際に、USDJPで開いたチャートウィンドウに、imaのsynbolパラメタに”EURJPY”と記述してコンパイル&実行したところ、移動平均線は水平方向に一本の線となって表示されてしまいました。
正しく表示されていたUSDJPYの移動平均線に対して変更した個所は、imaのsymbolパラメタだけです。
これは、チャートウィンドウの通貨ペアと異なる通貨ペアのデータを取得・加工するためには、何らかの宣言や定義が必要になるということでしょうか?
また、もし教えていただけるようでしたら、通貨ペアの価格を取得する関数につきましてもお教えいただければ助かります。
上記の疑問につきましては、書籍等を見ても、チャートウィンドウに表示されている通貨ペアについては、Synbol()やNULLで良いとあるのですが、他の通貨ペアのケースについては記述されておらず、どこかに載っていないかと探しまわっていたところ、貴サイトに辿り着いた次第です。
コメントというより、完全に質問ですが、許容範囲でしたら、回答よろしくお願いいたします。