記事"数多くのインジケーターバッファーを使った複数通貨対応インジケーターの作成"についてのディスカッション

 

新しい記事 数多くのインジケーターバッファーを使った複数通貨対応インジケーターの作成 はパブリッシュされました:

FOREX市場のクラスター分析への関心が近年高まりつつあります。MQL5は、通貨ペアの動きの傾向を調査する新しい可能性を開きました。MQL4とは異なる、重要な特徴の一つとしてMQL5が持つのは、インジケーターバッファーを無限に使用することができる点です。この記事にて、複数通貨インジケーターの作成方法を紹介します。

図4インデックスによるRSI

作者: Alexey Klenov

 

このようなインジケーターは、値によってこのインジケーターもソートしてくれると便利なのだが......。

このような指標もその値に応じてソートしてくれると便利なのだが。もしそのような機能があれば、自転車を発明しないためにも、ぜひ教えてほしい。

 
Prival:

このような指標でも並べ替えができると便利なのだが......。

もしそのような機能があれば、自転車を発明しないためにも教えてほしい。もしそのような機能があれば、自転車を発明しないためにも、ぜひ教えてください。

すぐに使える機能はありませんが、スケッチするのは難しくないでしょう。

19.05.2010

これが実現した

ファイル:
 

ありがとう。

ただひとつ指摘したいのは、同期方法がいつもうまくいくとは限らないということだ。ここに写真がある。24時間引用符で囲まれた穴ですが、すべてが同期されています((。

これは非常にまずい。なぜなのか、そして最も重要なことは、どうすればいいのかがわからない。

 
Prival:

ありがとう。

ただひとつ指摘したいのは、同期方法がいつもうまくいくとは限らないということだ。ここに写真がある。24時間引用符で穴が開いていますが、すべてが同期されています((。

これは非常にまずい。なぜなのか、そして最も重要なことは、どうすればいいのかがわからない。


このインディケータは2種類の同期を使用します。

1バーの数によって(チャート上に必要な履歴より多くのバーがなければなりません デフォルトでは500バー)この条件は明らかに満たされています。

2 各通貨ペアのゼロ・バーの開始時間 - この条件も満たされているようです。

2番目の同期と類似して、各ペアの各バーの開始時間をチェックする3番目の同期を追加する価値があると思います。

このタイプも作るつもりである。

 
olyakish:

....

私は、2番目のタイプの同期と類似して、各ペアの各バーの開始時間をチェックする3番目のタイプの同期を追加する価値があると思います。

あなたのイメージと類似して、私は関数bool init_tf(...)を作った。

//+------------------------------------------------------------------+
//| 関係する通貨ペアのチャートを初期化する。
//| およびデータ同期チェック|
//+------------------------------------------------------------------+
|にある。|
//| mas[]は必要な文字の名前の配列である。
//| time_0 - 現在のバー時間[0]。|
//| count_Bars - 必要な小節数。
//+------------------------------------------------------------------+
bool init_tf(string &mas[], datetime time_0, int count_Bars) { 
   bool     rez=false;              // 成功フラグ
   int      copied=0,               // コピーされたデータの数
            counter=0,              // エラーカウンタ
            tmp_bars=0;             // 利用可能なバーの数をチェックする
   datetime tmp_time[1];            // バータイムをチェックする配列
   
   f_comment("シンクロが進行している");
     
   for(int i=0; i<count_symbol; i++)  {
      //Print("i=",i," ",count_symbol," ",mas[i]);
      tmp_bars=Bars(mas[i],PERIOD_CURRENT);
      if(tmp_bars<count_Bars) { // バーの数をチェックする
         Print("i=",i,「バーが少ない(", mas[i],"-",fTimeFrameName(_Period),") MaxBars=",MaxBars," > Bars=",tmp_bars);
         counter++;
      }
      ResetLastError();
      copied = CopyTime(mas[i],PERIOD_CURRENT,0,1,tmp_time);
      if(copied < 1) { // コピーエラー
         Print("i=",i,「コピーエラー(", mas[i],"-",fTimeFrameName(_Period),") №",_LastError," (",ErrorDescription(_LastError),")");
         counter++;
      }
      if(tmp_time[0]!=time_0) { // 時間が合わない
         Print("i=",i,「時刻同期なし(", mas[i],"-",fTimeFrameName(_Period),") delta ="",(long)(time_0-tmp_time[0])/60,);
         counter++;
      }
   }// 終了 for(int i=0; i<k; i++)
   
   if(counter==0) {  // エラーはない。
      rez=true;
      f_comment("すべて。);
   } 
   else f_comment("同期がない"。+(string)counter);

   ChartRedraw( );
   return(rez);
}

チャンピオンシップに参加する12ペアを選択しました。インジケーターRVI_ALL は同期の勉強のためだけに作りました。開始。結果。

2010.05.30 16:55:26 RVI_ALL (EURUSD,M1) i= 10 時間同期 なし ( GBPJPY - M1 ) delta = 1min

2010.05.30 16:55:26 RVI_ALL (EURUSD,M1) i= 5 時刻同期 なし ( AUDUSD - M1 ) delta = 1 min

2010.05.30 16:55:26 RVI_ALL (EURUSD,M1) i= 1 時刻同期 なし ( GBPUSD - M1 ) delta = 1 min

日曜日なので、これらのシンボルにはバー(最後のバー)がありません。次のティックは月曜日だけです。その時、この記事https://www.mql5.com/ja/articles/1407 を思い出した。

そして、穴があるだろう。必ずある。どうにかして穴と戦わなければならない。原理的には、この記事に書かれているのと同じことができる。しかし、一つ疑問がある。

インジケーターは一つのチャートにぶら下がっています。そして、もしこのシンボルに履歴の入れ替えがあれば、それを知ることができ、prev_calculatedはゼロにリセットされます。

しかし、他のシンボルに履歴の入れ替えがあったこと、あるいはデータが長い遅延を伴って送られてきたことは、どうやって知ることができるのでしょうか?

 
Prival:

そして穴があるだろう。穴はあるだろう。どうにかして対処しなければならない。原理的には、記事に書かれているのと同じことができる。しかし、ひとつ疑問がある。

インジケーターは1つのチャートにぶら下がっています。また、このシンボルで履歴の入れ替えがあった場合、prev_calculatedはゼロにリセットされます。

しかし、他のシンボルに履歴の入れ替えがあったこと、あるいはデータが長い遅延を伴って送られてきたことは、どうやって知ることができるのでしょうか?


1 履歴に穴がある場合はインジケータを描画させないようにし、穴が「修復」された時点で定期的に履歴をポーリングする。(現在のチャートの新しいティックまたはタイマー)。

2.または、ヒストリーの穴が十分な距離であれば、その穴までしかインジケータを描画しない。

この関数を少し修正する。

bool init_tf(string &mas[], datetime time_0, int count_Bars, int shift) 
и далее по тексту 
copied = CopyTime(mas[i],PERIOD_CURRENT,shift,1,tmp_time);


次に、この関数をループで呼び出します(0からshiftbarsまで)。

この場合

shift

この場合、現在のインストゥルメントとTFのバー・ポジションになり、他のインストゥルメントとの同期をチェックします。

 

ストーリーに穴があるなんて知る由もない。

https://www.mql5.com/ru/forum/1111/8747#comment_8747

唯一の解決策は、時間をコピーして配列全体をループすることだが、これまた悪循環に陥ってしまう((

穴のないチャートを作るために、開発者がhttps://www.mql5.com/ja/articles/1407 の概念を変えないと、すべてを同期させることは不可能だということが判明するかもしれない。

 
Prival:

ストーリーに穴があるなんて知る由もない。

https://www.mql5.com/ru/forum/1111/8747#comment_8747

唯一の解決策は、時間をコピーして配列全体をループすることだが、これまた悪循環に陥ってしまう((

穴のないチャートを作るために、開発者がhttps://www.mql5.com/ja/articles/1407 の概念を変えないと、すべてを同期させることは不可能だということが判明するかもしれない。

time[]バッファによる同期を使えば混乱はない。

クォート・コールに時間による事前チェックを加えるだけで、すべてが同期される。

しかし、そのやり方は簡単ではないし、エラーも多いだろう。

 

こんにちは!

ドルインデックスの計算式の正しさに疑問がある。

どなたか、この計算式をより詳しく、どのようにして生まれたのか説明していただけませんか?

 


"ドルインデックスは、ニュートロンから親切に提供された計算式を使って計算されたdouble型の 値である。"

なぜ数式を引用し、他人の名前を参照するのか?彼の頭の中には7つの目があるのだろうか?まず記事を読み、次に公式の著者に尋ねる必要があることがわかった。もし彼が著者なら、彼がそれを入手したリンクを教えてほしい。