スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


復習:ローソク足を用いたEAサンプル

今回はこれまでの復習としてローソク足の価格を用いた取引条件を使ったEAを作ってみましょう。

エントリー条件:2本前の足の高値を1本前の足の終値が超える時、成行買いでエントリー
決済条件:2本連続で前の足の高値を更新できない場合決済

この条件で作ってみましょう。
まずはMetaEditorから新規作成をし、下の画面のようにEAの部分を選んで「次へ」を数回押しましょう。
newfile.png

EAのファイルが新規で作成できたら、まずはマジックナンバーとパラメータを設定します。
マジックナンバーはEAごとにつける固定の数字で、EAによる注文を識別するために使います。
パラメータはEAのユーザが指定できるように設定をします。今回はポジションのサイズを指定できるようにしましょう。
これらはファイル全体に関わるものなので関数の外に書きます。
#propertyが書かれている下の行に定義を書きましょう。
int magic = 5; //マジックナンバーを設定。以降マジックナンバーを呼び出すときはmagicを呼びます。
extern double Orderlot=0.1; //externを用いることでユーザが設定可能になります。
これで最初に設定する項目が完了です。

今回の取引条件では、EAが動いている間ずっと監視をするような条件なのでstart()内にコードを書いていきます。
初めに、EAによるポジションがあるかどうかを確かめる必要があります。
これを確かめないとエントリー済みかどうかが分かりません。
例えば以下のように書くことができます。
bool haspos=false;

if(OrdersTotal()>0){
for(int i=0;i OrderSelect(i,SELECT_BY_POS);
if(OrderMagicNumber() == magic){
haspos=true;
}
}
}


このコードでは、まずif文でオーダーがあるかを確かめます。
次に、オーダーがあった場合には、for文を用いて全オーダーのマジックナンバーを調べ、このEAのマジックナンバーと一致した時にhasposをtrueにして記録をしておきます。
これによってhasposがtrueであればポジションあり、falseの場合はポジションなしということが分かります。

次にエントリーと決済を書いていきます。hasposによって処理がわかれます。
まずエントリーの方は以下のように書くことができます。
if(haspos == false){
if(Close[1] > High[2]){
OrderSend(NULL,OP_BUY,Orderlot,Ask,0,0,0,magic);
}
}


まずif文でhasposを調べます。
次のif文では1本前の終値と2本前の高値を比較し、1本前の終値の方が高ければ、成行の買い注文を送信するというコードになっています。
本来は注文がちゃんと通っているかを調べる必要がありますがサンプルなので省略します。

次に決済のコードを見てみましょう。
else{
if(High[3]>High[2] && High[2]>High[1]){
for(i=0;i OrderSelect(i,SELECT_BY_POS);
if(OrderMagicNumber() == magic){
OrderClose(OrderTicket(),OrderLots(),Bid,0);
}
}
}
}


hasposはtrueかfalseなのでelseだけでtrueであることが分かります。
次に今回の決済条件である2本連続で高値を超えないということを調べます。
これは言い換えると、3本前の高値より2本前の高値が安くてかつ2本前の高値より1本前の高値が安いということです。
これをif文で書くとコードのようになります。
そしてこの条件が満たされたら、マジックナンバーが合っているオーダーを成行で決済します。

ここまででサンプルが完成です。
サンプルファイルをアップしておきます。
fc2ブログではtxtしか張れないのでtxtになってますが、拡張子をmq4に変えて使うか、中身をコピペしてお使い下さい。
サンプルファイルはこちら

為替レート
↓MT4が使えます



テーマ : MT4自動売買
ジャンル : 株式・投資・マネー

コメントの投稿

非公開コメント

ご挨拶

こんにちは、
ワイズマンと申します。

EA作成の手順参考になります。
イグジット部分のロジックも作り込めるのでしょうか。

今後の更新楽しみです。
また来ますね。

ワイズマンより

Re: ご挨拶

ワイズマン様

アクセスありがとうございます。
イクジット部分のロジックですが、if文などでロジックを作り、条件を満たしたら成行でクローズする形とすれば、どこまでも作りこむことが可能です。
またのアクセスをお待ちしております。
最新記事
カテゴリ
スポンサーリンク
SBIFXトレード
為替情報
FX 外貨預金FX投資ツール
FX初心者fx
twitter
月別アーカイブ
最新コメント
検索フォーム
RSSリンクの表示
ブロとも申請フォーム

この人とブロともになる

プロフィール

タンヤオドラ

Author:タンヤオドラ
FXにおける基礎知識やテクニカル指標、トレード戦略や業者について解説していきます。
適当に気になったニュースにコメントもつけます
本業は情報系の大学院生だったりします。

https://twitter.com/#!/tanyaoFX

相互リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。