FX自動売買EAを実装してみよう7(MACD ver1)
概要
この記事では,FX自動売買初心者向けに実装の解説します。
EAの実装をしたことない方から基本を振り返りたい方へ向けた記事となります。
※FXでの取引は自己責任となります。ご了承ください。
FX自動売買の振り返り
FX自動売買の始め方について数本の記事で解説をしてきました。
FX自動売買EAの始め方(初心者用) - Sasahiko’s diary
最低限のコード実装について(FX自動売買EAを実装してみよう2(最短コード実装) - Sasahiko’s diary)の解説やバックテストの見方について解説をしました。
今回の記事ではMACDを使ったEAの実装をします!
MACDって何?
MACDとはMoving Average Convergence Divergenceの略称であり,重みづけ移動平均のようなものです。移動平均(MA)では指定した期間で単純に平均をとりますが,MACDでは直近の数値を重視して平均をとります。
MACDを使用する際には,敏感に動くMACDラインと緩やかに動くシグナルラインを合わせて使いことが多いです。MACDラインがシグナルラインを超えたとき(ゴールデンクロスのとき)買い注文で入ることが多いようですね!
今回実装したいコード
注文条件:MACDラインがシグナルラインを超えた&保持ポジション0
決済条件:MACDラインがシグナルラインを下回った&保持ポジション1
実装!
変数定義:double S1,M1; (シグナルとMACDのことです。)
ティックごとに移動平均の更新:
S1 = iMACD(NULL,PERIOD_M15,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
M1 = iMACD(NULL,PERIOD_M15,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
注文条件:S1<M1 && OrdersTotal()==0→Ask
決済条件:M1<S1 && OrdersTotal()==1
実装したEAは以下です。
#property copyright "Copyright 2021, Sasahiko 2021.07.30"
#define MAGIC 0001
int Ticket = 0;
double lots = 0.1;
double S1,M1;
void OnTick(){
S1 = iMACD(NULL,PERIOD_M15,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
M1 = iMACD(NULL,PERIOD_M15,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
if(S1<M1 && OrdersTotal()==0){Ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,0,0,0,NULL,MAGIC);}
if(M1<S1 && OrdersTotal()==1){int _ = OrderClose(Ticket,lots,Bid,20);}}
取引結果
取引結果を以下に示します。普通に大負けですが,EAを改善することで利益を上げられるよう,次回記事で解説をします!
以上,MACDの実装でした!!
お疲れ様でした!
まとめ
今回はMACDの実装を解説しました!
次回はMACD利用EAの改善について解説します!
twitter : 笹彦 fx自動売買EA開発者 (@trader_brothers) | Twitter
Instagram : https://www.instagram.com/fxtrader_sasahiko/