記事"プライスヒストグラム(マーケット特性)とMQL5への導入"についてのディスカッション - ページ 10

 
どなたか「ClassExpert」のコードを修正して、週次または月次の市場プロファイルを 作成する方法をご存じですか?助力をお願いします。
 
添付ファイルが見つかりません!価格ヒストグラムだけです。
 
Thiago Duarte:

Delete()」コマンドを削除 すればうまくいく。

実際、delete関数は型なしで宣言されている。これを "void "にすることで、再び正しく動作するようになる。
 

このインジケーターは本当に気に入ったよ。しばらくマーケット・プロファイルについて勉強してきたけど、これは最高のインジケーターだ。


ただ、プロファイルの計算方法を変更したんだ。価格がポイント 内を通過したかどうかを検証する代わりに、出来高ティックを使ったんだ。このようにしたのは、取引と異なる時間が異なるポンドを持っていることを見れば、ボリュームのヒストグラムでそれを見ることができるからです。だから、我々は価格がそこに1つを追加した場合juntカウントすることはできません。


あなたは同意しますか?


私が行った変更は、2つのメソッドの違いを示した

 
ClassPriceHistogramファイルのすべての変数をテストしているのですが、値がすべてゼロなのです。
 
こんにちは、Luiz Vinicius Pereira Rocha です。私はプログラミングの初心者で、POCとハイバリューとローバリューだけを追跡するEAに取り組んでいました。POC_valueのような作者の変数のいくつかにprint関数を使用すると、ゼロ値が表示されます。
 

こんにちは、ドミトリー、

まず最初に:素晴らしい記事と仕事をありがとう!

あなたが公開したのはずいぶん前のことですが、問題なく動作しています。

なぜなら、出来高がほぼゼロの時間領域でプライス・アクションのみを使用しても、あまり役に立たないからです。

ClassPriceHistogram.mqhの対応するコードを置き換えてください。


bool CPriceHistogram::calculationPOCs()
  {
   int rates_total,rates_high,rates_time,rates_tv,index;
   double iHigh[],iLow[];
   long iTV[];
   datetime iTime[];
// time_startからtime_endまでのデータを取得する。
   int err=0;
   do
     {
      rates_time=CopyTime(NULL,PERIOD_M1,time_start,time_end,iTime);
      rates_high=CopyHigh(NULL,PERIOD_M1,time_start,time_end,iHigh);
      rates_total=CopyLow(NULL,PERIOD_M1,time_start,time_end,iLow);
      
      rates_tv=CopyTickVolume(NULL,PERIOD_M1,time_start,time_end,iTV);
      
      err++;
     }
   while((rates_time<=0 || (rates_total!=rates_high || rates_total!=rates_time || rates_tv!=rates_time)) && err<AMOUNT_OF_ATTEMPTS);
   if(err>=AMOUNT_OF_ATTEMPTS)
     {
      return(false);
     }
   poc_start_time=iTime[0];
   high_day=iHigh[ArrayMaximum(iHigh,0,rates_total)];
   low_day=iLow[ArrayMinimum(iLow,0,rates_total)];
   int count=int((high_day-low_day)/_Point)+1;
// 各レベルの価格の発見期間のカウント。
   int ThicknessOfLevel[];    // チック数用の配列を作成する。
   ArrayResize(ThicknessOfLevel,count);
   ArrayInitialize(ThicknessOfLevel,0);
   for(int i=0;i<rates_total;i++)
     {
      double C=iLow[i];
      long CTV=iTV[i];
      // 分バーのティックボリュームをバー内のすべての可能なポイントに分配する。
      // つまり、1ポイントあたりの増分はこのようになる...
      int CInc=int(((iHigh[i]-iLow[i])/_Point));  
      while(C<iHigh[i])
        {
         int Index=int((C-low_day)/_Point);
         ThicknessOfLevel[Index]+=CInc;
         C+=_Point;
        }
     }


簡単なハックであり、すべてのコードをテストしたわけではありませんが、今のところうまく機能しています。

SP500指数を使ったサンプルです:


左側はオリジナルのコード。右側はtickvolume

 

親愛なるドミトリー

お元気ですか。

ライン用のバッファを実装することは可能でしょうか?

POCごとに、VwapとMedianとか?


よろしくお願いします。

 
一応お知らせしておきますが...。すべてのファイルを適切なディレクトリにダウンロードし、コンパイルしたところ、ClassPriceHistogram.mqhに関してエラーが発生しました。375行目の
CPriceHistogram::Delete()

void CPriceHistogram::Delete()

AMP FuturesのMT5バージョン5.00ビルド3661で正常に動作するようになりました。

Oleksandr、この「インジケータ」は技術的にはエキスパートです。インジケーターのバッファは エキスパートでは使用できません。バッファはエキスパートで配列を使って効果的に再現できますが、iCustomで呼び出せるのは本物のインジケータ・バッファだけなので、そのためには新しいカスタム・インジケータをゼロからコーディングする必要があります。残念ながら、どちらの方法も私のコーディング能力を超えています。より良いヘルプが見つかることを祈っています。

 
ありがとう。