無料でロボットをダウンロードする方法を見る
Facebook上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
インディケータ

RJTX_Matches_Smoothed_Alert - MetaTrader 5のためのインディケータ

ビュー:
908
評価:
(14)
パブリッシュ済み:
2019.01.22 08:30
アップデート済み:
2023.03.30 13:44
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

実際の作者:

Rafael Jimenez Tocino

RJTX_Matches_Smoothed指標はアラート、電子メール、プッシュ通知を備えています。

アラート、電子メールメッセージ、プッシュ通知を実装するために、指標コードに次の変更が加えられました。

  1. 新しい入力パラメータを導入しました
    input uint NumberofBar=1;                 // シグナル配信のためのバーの数
    input bool SoundON=true;                  // アラートを許可する
    input uint NumberofAlerts=2;              // アラート数
    input bool EMailON=false;                 // メールでのシグナル送信を許可する
    input bool PushON=false;                  // モバイルデバイスへのシグナル送信を許可する


  2. 指標コードの最後に3つの新しい関数(BuySignal()、SellSignal()、GetStringTimeframe())を追加しました。
    //+------------------------------------------------------------------+
    //| 買いシグナルの関数                                                 |
    //+------------------------------------------------------------------+
    void BuySignal(string SignalSirname,      // メール/プッシュするためのシグナル名
                   double &BuyArrow[],        // 買いシグナル指標バッファ
                   const int Rates_total,     // バーの現在数
                   const int Prev_calculated, // 前のティックでのバーの数
                   const double &Close[],     // 終値
                   const int &Spread[])       // スプレッド
      {
    //---
       static uint counter=0;
       if(Rates_total!=Prev_calculated) counter=0;
    
       bool BuySignal=false;
       bool SeriesTest=ArrayGetAsSeries(BuyArrow);
       int index,index1;
       if(SeriesTest)
        {
         index=int(NumberofBar);
         index1=index+1;
        }
       else
         {
          index=Rates_total-int(NumberofBar)-1;
          index1=index-1;
         }
       if(!BuyArrow[index1] && BuyArrow[index]) BuySignal=true;
       if(BuySignal && counter<=NumberofAlerts)
         {
          counter++;
          MqlDateTime tm;
          TimeToStruct(TimeCurrent(),tm);
          string text=TimeToString(TimeCurrent(),TIME_DATE)+" "+string(tm.hour)+":"+string(tm.min);
          SeriesTest=ArrayGetAsSeries(Close);
          if(SeriesTest) index=int(NumberofBar);
          else index=Rates_total-int(NumberofBar)-1;
          double Ask=Close[index];
          double Bid=Close[index];
          SeriesTest=ArrayGetAsSeries(Spread);
          if(SeriesTest) index=int(NumberofBar);
          else index=Rates_total-int(NumberofBar)-1;
          Bid+=Spread[index]*_Point;
          string sAsk=DoubleToString(Ask,_Digits);
          string sBid=DoubleToString(Bid,_Digits);
          string sPeriod=GetStringTimeframe(ChartPeriod());
          if(SoundON) Alert("BUY signal \n Ask=",Ask,"\n Bid=",Bid,"\n currtime=",text,"\n Symbol=",Symbol()," Period=",sPeriod);
          if(EMailON) SendMail(SignalSirname+": BUY signal alert","BUY signal at Ask="+sAsk+", Bid="+sBid+", Date="+text+" Symbol="+Symbol()+" Period="+sPeriod);
          if(PushON) SendNotification(SignalSirname+": BUY signal at Ask="+sAsk+", Bid="+sBid+", Date="+text+" Symbol="+Symbol()+" Period="+sPeriod);
         }
    
    //---
      }
    //+------------------------------------------------------------------+
    //| 売りシグナルの関数                                                 |
    //+------------------------------------------------------------------+
    void SellSignal(string SignalSirname,      // メール/プッシュするためのシグナル名
                    double &SellArrow[],       // 売りシグナル指標バッファ
                    const int Rates_total,     // バーの現在数
                    const int Prev_calculated, // 前のティックのバー数
                    const double &Close[],     // 終値
                    const int &Spread[])       // スプレッド
      {
    //---
       static uint counter=0;
       if(Rates_total!=Prev_calculated) counter=0;
    
       bool SellSignal=false;
       bool SeriesTest=ArrayGetAsSeries(SellArrow);
       int index,index1;
       if(SeriesTest)
        {
         index=int(NumberofBar);
         index1=index+1;
        }
       else
         {
          index=Rates_total-int(NumberofBar)-1;
          index1=index-1;
         }
       if(!SellArrow[index1] && SellArrow[index]) SellSignal=true;
       if(SellSignal && counter<=NumberofAlerts)
         {
          counter++;
          MqlDateTime tm;
          TimeToStruct(TimeCurrent(),tm);
          string text=TimeToString(TimeCurrent(),TIME_DATE)+" "+string(tm.hour)+":"+string(tm.min);
          SeriesTest=ArrayGetAsSeries(Close);
          if(SeriesTest) index=int(NumberofBar);
          else index=Rates_total-int(NumberofBar)-1;
          double Ask=Close[index];
          double Bid=Close[index];
          SeriesTest=ArrayGetAsSeries(Spread);
          if(SeriesTest) index=int(NumberofBar);
          else index=Rates_total-int(NumberofBar)-1;
          Bid+=Spread[index]*_Point;
          string sAsk=DoubleToString(Ask,_Digits);
          string sBid=DoubleToString(Bid,_Digits);
          string sPeriod=GetStringTimeframe(ChartPeriod());
          if(SoundON) Alert("SELL signal \n Ask=",Ask,"\n Bid=",Bid,"\n currtime=",text,"\n Symbol=",Symbol()," Period=",sPeriod);
          if(EMailON) SendMail(SignalSirname+": SELL signal alert","SELL signal at Ask="+sAsk+", Bid="+sBid+", Date="+text+" Symbol="+Symbol()+" Period="+sPeriod);
          if(PushON) SendNotification(SignalSirname+": SELL signal at Ask="+sAsk+", Bid="+sBid+", Date="+text+" Symbol="+Symbol()+" Period="+sPeriod);
         }
    //---
      }
    //+------------------------------------------------------------------+
    //|  時間枠を文字列として取得する                                       |
    //+------------------------------------------------------------------+
    string GetStringTimeframe(ENUM_TIMEFRAMES timeframe)
      {
    //----
       return(StringSubstr(EnumToString(timeframe),7,-1));
    //----
      }


  3. OnCalculate()ブロックの指標計算ループの後でのBuySignal()およびSellSignal()への呼び出しを追加しました。
    //---     
       BuySignal("RJTX_Matches_Smoothed_Alert",BuyBuffer,rates_total,prev_calculated,close,spread);
       SellSignal("RJTX_Matches_Smoothed_Alert",SellBuffer,rates_total,prev_calculated,close,spread);
    //---


ここでBuyBufferとSellBufferは売買シグナルを格納する指標バッファの名前です。 指標バッファの空値としては、ゼロかEMPTY_VALUEを設定します。

BuySignal()およびSellSignal()関数は指標コードのOnCalculate()ブロックで1回だけ呼び出されると想定されています。

指標ではSmoothAlgorithms.mqhライブラリクラスが使用されます。このライブラリクラスを<terminal_data_folder>\MQL5\Includeにコピーしてください。 クラスの使用についての詳細は「追加バッファなしの中間計算用物価系列の平均化」稿で参照できます。

この指標は元々MQL4で書かれ、2015年12月23日にコードベースで発表されました。


図1  チャートでのRJTX_Matches_Smoothed_Alert指標

図1  チャートでのRJTX_Matches_Smoothed_Alert指標


図2  RJTX_Matches_Smoothed_Alert指標 アラート生成

図2  RJTX_Matches_Smoothed_Alert指標 アラート生成

MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/22712

HLCrossSigForWPR_HTF HLCrossSigForWPR_HTF

入力パラメータに時間枠選択オプションを備えたHLCrossSigForWPR指標です。

BestInterval BestInterval

最良の取引間隔を計算するためのライブラリです。

RJTX_Matches_Smoothed_Alert_xx RJTX_Matches_Smoothed_Alert_xx

RJTX_Matches_Smoothed_Alert指標はアラート、電子メール、プッシュ通知を備えています。 表示されている指標銘柄は入力変数で置き換えることができます。

VZO VZO

VZO指標