記事"MQL5 ウィザードの NRTR に基づく NRTR インジケーターとトレーディングモジュール"についてのディスカッション

 

新しい記事 MQL5 ウィザードの NRTR に基づく NRTR インジケーターとトレーディングモジュール はパブリッシュされました:

この記事では、NRTR インジケーターを分析し、このインジケーターに基づいてトレードシステムを作成します。 追加のトレンド確認インジケーターと NRTR の組み合わせに基づいて戦略を作成する際に使用することができるトレードシグナルのモジュールを開発します。

NRTR (Nick Rypock Trailing Reverse) インジケーターの考え方は、Konstantin Kopyrkinによって提案されたものです。 豆知識: 名前Nick Rypock は、後に書かれた Kopyrkin から派生しています。 

さて、インジケーターに戻りましょう。 これは、動的な価格チャネルです。 この著者は、次の図で、その主なアイデアを示しています:

NRTR

作者: Dmitrii Troshin

 

iCustom経由でアクセスする方法がわかりません.説明してください

次のようなものがあるはずです

double iCustom (
stringsymbol//
int timeframe//
stringname// フォルダー/ユーザー・ インジケータ
... // インジケータ 入力パラメータのリスト
int mode, // データ ソース
int shift// シフト
);

特に我々の場合

//+------------------------------------------------------------------+
| NRTRvolatile|
//+------------------------------------------------------------------+
//iBufferNumber
//0
//1 
//シグナルアップ
//3 - シグナルダウン
double indNRTRvolatile(string sSymbol=NULL,
                int tf=PERIOD_M5,
                int period=12,                  // ダイナミック・ピリオド
                double K=1,                       //倍率
                int iBufferNumber=0,
                int iShift=0)
{
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   double handle=iCustom(sSymbol,timeframe,"NRTRvolatile",period,K,iBufferNumber,iShift);
   
   if(handle<0)
     {
      Print("NRTRvolatileオブジェクトが作成されていません:エラー",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,0,iShift));
}  


バッファ2または3を参照した場合、現在の価格など、無意味なものしか表示しません。

 
gedd:

iCustomからアクセスする方法がわかりません.説明してください。

バッファ2,3には、トレンドが変化した瞬間にのみ更新されるシグナルが入っています。

支持線/抵抗線はバッファ0,1にあります。

CopyBuffer()- 3つのオーバーロードがありますが、いずれも3つのパラメータを持ちません。

バッファの値を取得するコードのバリエーション

void OnStart()
{
double arr[];
int handle =iCustom(Symbol(),0,"NRTRvolatile",12,1);
CopyBuffer(handle,0,0,1,arr);
Print("下運河",arr[0]);
CopyBuffer(handle,1,0,1,arr);
Print("上部運河",arr[0]);
CopyBuffer(handle,2,0,1,arr);
Print("シグナルアップ",arr[0]);
CopyBuffer(handle,3,0,1,arr);
Print("シグナルダウン",arr[0]);
}

これはスクリプト

 
Dmitrii Troshin:

バッファ2,3には、トレンドが変化した瞬間にのみ更新されるシグナルが入っています。

支持線/抵抗線はバッファ0,1にある。

CopyBuffer() - 3つのオーバーロードがあるが、いずれも3つのパラメータを持たない。

バッファの値を取得するコードのバリエーション

これはスクリプト


はい、明確になりました。

CopyBufferについて- これはmql4互換ライブラリのもので、正確にはinitmql4__1.mqhのものです。

double CopyBufferMQL4(int handle,int index,int shift)
  {
   double buf[];
   switch(index)
     {
      case 0: if(CopyBuffer(handle,0,shift,1,buf)>0)
         return(buf[0]); break;
      case 1: if(CopyBuffer(handle,1,shift,1,buf)>0)
         return(buf[0]); break;
      case 2: if(CopyBuffer(handle,2,shift,1,buf)>0)
         return(buf[0]); break;
      case 3: if(CopyBuffer(handle,3,shift,1,buf)>0)
         return(buf[0]); break;
      case 4: if(CopyBuffer(handle,4,shift,1,buf)>0)
         return(buf[0]); break;
      default: break;
     }
   return(EMPTY_VALUE);
  }
 

おそらくそうだろう

//+------------------------------------------------------------------+
| NRTRvolatile|
//+------------------------------------------------------------------+
//iBufferNumber
//0
//1 
//シグナルアップ
//3 - シグナルダウン
double indNRTRvolatile(string sSymbol=NULL,
                int tf=PERIOD_M5,
                int period=12,                  // ダイナミック・ピリオド
                double K=1,                       //倍率
                int iBufferNumber=0,
                int iShift=0)
{
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   double handle=iCustom(sSymbol,timeframe,"NRTRvolatile",period,K);
   
   if(handle<0)
     {
      Print("NRTRvolatileオブジェクトが作成されていません:エラー",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,iBufferNumber,iShift));

}

 

NRTRvolatileをアップグレードして、矢印が追加されたときにメッセージボックスがポップアップするようにすることは可能ですか?

 
gedd:

NRTRvolatileをアップグレードして、矢印を追加するときにメッセージボックスがポップアップするようにすることは可能ですか?


おそらく、LongCondition関数とShortCondition関数で。

int SignalNRTR::LongCondition(void)
   {
   int idx   =StartIndex();
   if(UpSignal(idx))
   { 
   Alert"Text";   
   return 100;
   }
   else return 0;
   }

Alert"Text "のようなものを追加する。うまくいくかどうかはわからない。問題は、このコードがもう私のコンピューターにないことです。去年持っていたものはすべて過去にしまってしまった。)だから試すことができない。まだ大晦日が頭の中で鳴っているしね。)

 

インジケーター自体は、このあたりだ

 // トレンドの変化 
  
      if(trend>0) Buff_Up[i]=value;
      if(trend<0) Buff_Dn[i]=value;

      if(trend_prev<0  &&  trend>0) 
      {
      Alert("Text");
      Sign_Up[i]=value;
      Buff_Up[i]=0.0;
      }
      if(trend_prev>0 && trend<0)
      {
      Alert("Text");
      Sign_Dn[i]=value;
      Buff_Dn[i]=0.0;
      }
 

インクルードファイルのパスを次のように修正する必要がある。

#include <Expert\\ExpertSignal.mqh>
 

どちらのバリエーションも可能である。右のバリアント

#include <Expert\ExpertSignal.mqh>

フォルダ内の別のモジュールで見ることができる。