メタトレーダー4でプログラムを作ってみよう -42ページ目

メタトレーダー4でプログラムを作ってみよう

無料のトレードソフトであるメタトレーダー4のプログラムを作るコツをアップします。初心者がインジケーターとEAのプログラムを作成できるのを目指します。

前回までチャートに矢印を表示するインジケーターを作成していましたが、

どうせなら矢印だけでなく使用するライン等も一緒に描写するほうが楽なので、

そんな感じで作ってみましょう。

ボリンジャーバンドとローソク足で矢印を表示するものにします。

いつも通りメタエディターの新規作成から Custom Indicator を選択します。



名前を band_touch01 と入力し、「Add」をクリックしてパラメーターを2つ追加します。

パラメーターの名前と、初期値を、

Band_Period 20
Deviation 2

と設定します。



次に、「Add」を5回クリックして、Indexes を5つ追加します。

Type Color Symbol を

Line Yellow
Line Red
Line Yellow
Arrow Magenta 233
Arrow Aqua 234

に変更します。



「完了」をクリックして終了です。

次回からプログラムしていきます。 (o^-')b




 
以前、パラメータの入力で大小が逆になっていた場合、

エラー表示を出したことがありました。(→こちら

今回は自動的に修正するようにしてみます。

修正する箇所は init です。

以下を追加してください。

int ma_Buffer;
if (ma1_Period>ma2_Period)
{
   ma_Buffer=ma1_Period;
   ma1_Period=ma2_Period;
   ma2_Period=ma_Buffer;
}





やっていることは、

まずパラメータの大小を比較して、もし ma1_Period の方が大きければ、

ma1_Period の値を一旦 ma_Buffer に保存し、

ma2_Period の値を ma1_Period に入れてから、

ma_Buffer に保存した値を、ma2_Period に入れて入れ替えます。

ma1_Period の方が小さければこの処理は無視されます。

少々面倒ですが、このように処理します。

入れ替えの作業は最初の一度しかしなくていいので、init で処理します。


コンピュータってやつは、言われたことはきっちりやりますが、

融通が利かない
と覚えておきましょう。:*:・( ̄∀ ̄)・:*:




   
クロスに関して色々説明しましたので、実際に修正してみます。

以前作ったma_cross01タイミングを遅らせるようにしてみます。

修正箇所は start です。

以下のように修正してください。

double fast_ma1=iMA(NULL,0,ma1_Period,0,MODE_SMA,PRICE_CLOSE,i+1);
double fast_ma2=iMA(NULL,0,ma1_Period,0,MODE_SMA,PRICE_CLOSE,i+2);
double slow_ma1=iMA(NULL,0,ma2_Period,0,MODE_SMA,PRICE_CLOSE,i+1);
double slow_ma2=iMA(NULL,0,ma2_Period,0,MODE_SMA,PRICE_CLOSE,i+2);

if(fast_ma1>slow_ma1 && fast_ma2<slow_ma2)
{
   ExtMapBuffer1[i]=Close[i];
   ExtMapBuffer2[i]=0;
}
else if(fast_ma1<slow_ma1 && fast_ma2>slow_ma2)




fast_ma0 と slow_ma0 を削除し、

fast_ma2 と slow_ma2 を追加して、

0 と 1 の比較だったものを 1 と 2 の比較に変更しています。


修正が終わったらコンパイルしてみてください。


Before




After





矢印の表示のタイミングが1本遅れているのがわかると思います。

色々試してどちらが好みか確かめるのもいいかもしれません。