FX自動売買EAを実装してみよう5(移動平均)
概要
この記事では,FX自動売買初心者向けに実装の解説します。
EAの実装をしたことない方から基本を振り返りたい方へ向けた記事となります。
※FXでの取引は自己責任となります。ご了承ください。
FX自動売買の振り返り
FX自動売買の始め方について数本の記事で解説をしてきました。
FX自動売買EAの始め方(初心者用) - Sasahiko’s diary
最低限のコード実装について(FX自動売買EAを実装してみよう2(最短コード実装) - Sasahiko’s diary)の解説やバックテストの見方について解説をしました。
今回の記事では移動平均を使ったEAの実装をします!
最低限コードの振り返り
#property copyright "Copyright 2021, Sasahiko 2021.07.21"
#define MAGIC_NUMBER 0001
double lots = 0.1;int Ticket = 0;
void OnTick(){if(Hour()%2==0 && OrdersTotal()==0){
Ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,0,0,0,NULL,MAGIC_NUMBER);}
if(Hour()%2==1 && OrdersTotal()==1){int _ = OrderClose(Ticket,lots,Bid,20);}}
注文条件:偶数時&保持ポジション0
決済条件:奇数時&保持ポジション1
今回実装したいコード
注文条件:現在価格が移動平均とクロス&保持ポジション0
決済条件:注文時と逆クロス&保持ポジション1
実装!
変数定義:double ma;
ティックごとに移動平均の更新:ma=iMA(NULL,0,12,6,MODE_SMA,PRICE_CLOSE,0);
注文条件:Open[1]<ma && ma<Close[1] && OrdersTotal()==0→Ask
決済条件:Close[1]<ma && ma<Open[1] && OrdersTotal()==1
逆の条件でBidの注文を行います。実装したEAは以下です。
#property copyright "Copyright 2021, Sasahiko 2021.07.21"
#define MAGIC_NUMBER 0001
double lots = 0.1;
int Ticket = 0, flag=0, _;
double ma;
void OnTick(){
ma=iMA(NULL,0,12,6,MODE_SMA,PRICE_CLOSE,0);
if(Open[1]<ma && ma<Close[1] && OrdersTotal()==0){
Ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,0,0,0,NULL,MAGIC_NUMBER);
flag = 1;
}
if(Close[1]<ma && ma<Open[1] && OrdersTotal()==0){
Ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,0,0,0,NULL,MAGIC_NUMBER);
flag = -1;
}
if(Close[1]<ma && ma<Open[1] && flag == 1){
_ = OrderClose(Ticket,lots,Bid,20);
}
if(Open[1]<ma && ma<Close[1] && flag == -1){
_ = OrderClose(Ticket,lots,Ask,20);
}
}
買いのときはflag=1, 売りのときはflag=-1として決済判断に使用しています。
取引結果
取引結果を以下に示します。普通に大負けですが,EAを改善することで利益を上げられるよう,次回記事で解説をします!
以上,移動平均利用EAの実装でした!!
お疲れ様でした!
まとめ
今回は移動平均の実装を解説しました!
次回は移動平均EAの改善について解説します!
twitter : 笹彦 fx自動売買EA開発者 (@trader_brothers) | Twitter
Instagram : https://www.instagram.com/fxtrader_sasahiko/