FX自動売買EAを実装してみよう8(MACD ver2)
概要
この記事では,FX自動売買初心者向けに実装の解説します。
EAの実装をしたことない方から基本を振り返りたい方へ向けた記事となります。
※FXでの取引は自己責任となります。ご了承ください。
FX自動売買の振り返り
FX自動売買の始め方について数本の記事で解説をしてきました。
FX自動売買EAの始め方(初心者用) - Sasahiko’s diary
最低限のコード実装について(FX自動売買EAを実装してみよう2(最短コード実装) - Sasahiko’s diary)の解説やバックテストの見方について解説をしました。
今回の記事ではMACDを使ったEAを改善していきます!
前回に実装したコード
注文条件:MACDラインがシグナルラインを超えた&保持ポジション0
決済条件:MACDラインがシグナルラインを下回った&保持ポジション1
前回のコードの取引結果(USD/JPY)
取引結果を以下に示します。普通に負けてますね。
今回で実装したいコード
買い注文条件:MACD<0&&MACDとシグナルがゴールデンクロス&保持ポジション0
決済条件:MACDがシグナルを下回った&保持ポジション1
(売り注文も同様に行う)
#property copyright "Copyright 2021, Sasahiko 2021.07.21"
#define MAGIC 0001
int _,f=0, Ticket = 0;
double lots = 0.1;
double S1,S2,M1,M2;
void OnTick(){
S1 = iMACD(NULL,PERIOD_M15,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
S2 = iMACD(NULL,PERIOD_M15,12,26,9,PRICE_CLOSE,MODE_SIGNAL,2);
M1 = iMACD(NULL,PERIOD_M15,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
M2 = iMACD(NULL,PERIOD_M15,12,26,9,PRICE_CLOSE,MODE_MAIN,2);
if(f==0){if(S1<M1 &&M1<0 &&M2<S2){f=1;
Ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,0,0,0,NULL,MAGIC);}
if(0<M1 &&M1<S1 &&S2<M2){f=-1;
Ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,0,0,0,NULL,MAGIC);}}
if*1{f=0;Close_all();}}
void Close_all(){for(int i=OrdersTotal()-1;i>=0;i--){if(OrderSelect(i,0) == True){
_ = OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),20);}}}
今回のコードの取引結果(USD/JPY)
取引結果を以下に示します。前回よりも取引回数が増えた分,負け分が大きくなってしまいました。負けた理由の考察と改善の検討は次回記事で行います!
以上,MACDの実装でした!!
お疲れ様でした!
まとめ
今回はMACDの実装改善に挑戦しました!
まだまだ損失ばかりですが,次回記事ではもう少し改善できるよう頑張ります!
twitter : 笹彦 fx自動売買EA開発者 (@trader_brothers) | Twitter
Instagram : https://www.instagram.com/fxtrader_sasahiko/
YouTube : 笹彦(FX Trader Sasahiko) - YouTube
tiktok : https://www.tiktok.com/@fx_eatradersasahiko
*1:f==1&&M1<S1&&S2<M2)||(f==-1&&S1<M1&&M2<S2