【MQL4/MT4】EMAゴールデンクロスサインインジケーター ソースコード無料公開
今日は、EMAの12本と26本を使ったクロスポイントにサイン矢印を付与したインジケーターを公開します。
■EMA01 インジケーター
▶動作サンプル画像
はじめは「大循環MACD」のインジケーターを作っていたんですが、大循環MACDを構成する部品の5つのうちの2つ、「EMA2本」だけでも結構エントリーに最適なポイントを図示してくれるなと思って、まずは今回それだけを公開することにします。
別記事で、さらに3つのインジケーターを同梱したサインツールを作って、合せ技で「大循環MADC」を成立させるものを公開する予定です。
ただ、今回のツールだけで結構面白いトレード手法を確立できるんじゃないかと思っているので、ぜひ活用してみてください。
実際は矢印がある場所でエントリーできるわけではなく、その矢印が示すローソク足でエントリーになるので、レンジ相場の勝率はトントンか、スプレッド分損してしまいますが、トレンド相場ではかなり価値がでてくるかと思います。
▶エントリーポイント
上矢印を付けたゴールデンクロスで買いエントリー
下矢印を付けたデッドクロスで売りエントリー
▶決済ポイント
逆にクロスした場合に手仕舞い
▶設定内容
短期は12本、長期は26本を標準にしています。
▶ダウンロード
以下から実行ファイル(ex4)とソースコード(mq4)をダウンロード頂けます。
▶ソースコード
ソースコードの中身はこちらです。
#property copyright "2024-2025, Hiromax."
#property link "https://note.com/hiro_max"
#property description "Hiromx Indicator EMA 01"
#property strict
#property indicator_chart_window
#property indicator_buffers 4
input int Term1 = 12; //EMA:短期 期間設定値
input int Term2 = 26; //EMA:長期 期間設定値
input int Shift = 0; //EMA:シフト
double Buf1[];
double Buf2[];
double DrawDot1[];
double DrawDot2[];
int OnInit(void)
{
SetIndexBuffer(0, Buf1);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1,LightSeaGreen);
SetIndexBuffer(1, Buf2);
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1,Red);
SetIndexBuffer(2,DrawDot1);
SetIndexStyle(2,DRAW_ARROW,STYLE_SOLID,3,Cyan);
SetIndexArrow(2,233);
SetIndexBuffer(3,DrawDot2);
SetIndexStyle(3,DRAW_ARROW,STYLE_SOLID,3,Pink);
SetIndexArrow(3,234);
return(INIT_SUCCEEDED);
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
int counted_bars=IndicatorCounted();
int limit = Bars - counted_bars - 1;
double ma1x = 0;
double ma2x = 0;
for(int i=0; i<limit; i++)
{
double ma1 = iMA(Symbol(), Period(), Term1, Shift, MODE_EMA, PRICE_CLOSE, i);
double ma2 = iMA(Symbol(), Period(), Term2, Shift, MODE_EMA, PRICE_CLOSE, i);
Buf1[i] = ma1;
Buf2[i] = ma2;
if(ma1x != 0){
if((ma1x >= ma2x) && (ma1 < ma2)){
DrawDot1[i] = ma1;
}
if((ma1x < ma2x) && (ma1 >= ma2)){
DrawDot2[i] = ma2;
}
}
ma1x = ma1;
ma2x = ma2;
}
return(rates_total);
}
一つ前のEMAのそれぞれの値「ma1x」「ma2x」の位置関係と、今のEMAのそれぞれの値「ma1」「ma2」が逆になった時にサイン(矢印)を表示するというロジックになっています。
if(ma1x != 0){
if((ma1x >= ma2x) && (ma1 < ma2)){
DrawDot1[i] = ma1;
}
if((ma1x < ma2x) && (ma1 >= ma2)){
DrawDot2[i] = ma2;
}
}
このままEAもすぐ作れそうなので、次回かその次ぐらいに作りますね!お楽しみに!
■編集後記
全然話は変わるんですが、
別で有料で販売しているMT4画像通知のソースコードを買ってくれた方から連絡があって、私が作ったDiscordの画像通知ロジックが動かなくなっていることが判明しました。
確認したところ、画像を登録するための外部のAPIが使えなくなっていたことが分かったため、所有サーバーの一つでAPIを稼働させることで事なきを得ました。ソースコードは正常可動版に差し替え完了できました。焦りましたが、すぐ対応できて良かったです。
ということで、そういったサポートもさせて頂きつつ、引き続き、毎日1記事!・・ができてないのですが・・・その意気込みでw、コード書いて意欲的に記事アップしていきます。さらに加速して収益化に繋がるコードを日々探求していくので、有益記事を見逃さないようフォローとスキボタン押しといてください!
ということで、最後までお読み頂いてありがとうございました。
それではまた!