バイタル・バーン EA の作成 その6 | メタトレーダー4でプログラムを作ってみよう

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

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

それでは、決済の条件について説明していきます。

買いポジションについての決済の条件は以下の通りです。

<買いポジション>
・エントリーした足の安値を終値ベースで下抜ける時は【成行で決済】
・終値ベースで、為替レートとMACDラインが前日の値よりも小さくなる時は【成行で決済】


それをプログラムしたものが以下です。

//手仕舞い判断
   if(entrybar!=Bars && buypos!=0
      && (entrylow>Close[1] || (Close[1]<Close[2] && macd1<macd2)))
   {
      for(i=0;i<OrdersTotal();i++)
      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
         if(OrderMagicNumber()!=magic01 || OrderSymbol()!=Symbol()) continue;
         if(OrderType()==OP_BUY)
         {
            OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
         }
      }
   }



エントリーした足の安値を終値ベースで下抜ける時

ということなので、エントリーした足の安値を覚えておく必要があります。

これは、決済処理の手前の

if(entrybar==Bars) entrylow=Low[0];

で行っています。

仕掛を行った際に、entrybar に Bars でローソク足の数を覚えました。

足が新しく出来て Bars の数が変わるまでは、エントリーした足ということです。

entrybar と Bars の数が同じであれば、

entrylow に Low[0] (安値)の値を覚えさせます。

次の足に変わった時には、この処理は行われないので、

エントリーした足の安値は entrylow に覚えられたままです。

そして、決済処理の entrylow>Close[1] の部分で、

エントリーした足の安値を終値で割り込んだかどうか判断します。


終値ベースで、為替レートとMACDラインが前日の値よりも小さくなる時

というのは、前回の買いの仕掛の条件で大きくなる時を説明しましたが、

その反対に小さくなる時です。

使う指標は同じで、不等号が反対になりますので、

(Close[1]<Close[2] && macd1<macd2)

このように書き表わせます。

為替レートとMACDのラインの条件が同時に起こった時なので、

この二つは( )をつけてひとくくりにしておきます。

・エントリーした足の安値を終値ベースで下抜ける時
・終値ベースで、為替レートとMACDラインが前日の値よりも小さくなる時

の二つの条件は、どちらか片方が条件を満たせば決済するので、

|| を使ってどちらかが満たす時、とします。


他の条件として、

entrybar!=Bars

は、エントリーしたローソク足かどうかを確認し、

ローソク足の数が entrybar 以外の時、

つまりエントリーしたローソク足以外で判断するという設定です。


また、

buypos!=0

は、買いのポジションの数をチェックして、

0以外の時、つまりポジションがある時だけ処理するという設定です。


このようにして、条件を組み合わせて判断していきます。

そして、全ての条件を満たしていれば決済を行います。


って感じで今回はここまでです。