エラー、バグ、質問 - ページ 2148

 
Andrey Khatimlianskii:

確定ですか?

いいえ、もちろんそんなことはありません。ここに書かれていることはすべて、独自の結論です。

レナットかスラバが、手動で実行してもインジケータは複製さ れないと言っていたのを覚えています。パラメータのハッシュが一致 - 同じ計算部が使用される。

これは事実ではありません。そして何より、それが事実であるはずもないのだ。

このインジケータを2つの同じチャートで手動で実行する

int OnCalculate( const int, const int, const int, const double &[] )
{
  Print(ChartID());
  
  return(0);
}

計算部分が同じなら、違う再放送はないでしょう。声高に主張する結論の9割は正しいと思う。

 
Nexxtor:

ヘルプの作者か、MQL5言語か、誰の手が**から出てるのかによるが、めんどくさいぞ!!!!

IndicatorCreate()にはこう書かれています。

パラメータ_cnt

[in] parameters_array[] 配列で渡されたパラメータの数。配列の要素は、特殊なタイプの構造体MqlParamを 持つ。デフォルト値は0であり、パラメータは渡されない。パラメータ数が 0 でない場合、parameters_array パラメータは必須 である。パラメータは最大256個まで渡すことができます。


教えてください、個人的に確認したのですか?256個のパラメータを持つインジケータが呼び出されること?


直せ!!!!

走らないの?実行されないコードを見せてください。

そして、感情を抑えて、ビジネスを進めてください。

 
fxsaber:

そんなことはありません。ましてや、それが事実であるはずもない。

このインジケータを2つの同じチャートで手動で実行する

計算された部分が同じであれば、プリントアウトが異なることはない。

私にとっては非常に難しい結論です。

なぜ、指標は同じチャートを見る必要があるのか?ChartIDを 元に指標アルゴリズムが構築できるから?

 
fxsaber:

OBJ_CHART上のEAは確かに動きません(というか、動きません)。だからタイマーで、OKのようです。おそらく、すべてのイベントがそこで動作していないのでしょう。

OBJ_CHARTの Expert Advisorは問題なく起動し、動作します。OnChartEvent (カスタム) を処理するだけで、他のチャートのためにカスタムイベントを生成することができます。

 
Andrey Khatimlianskii:

なぜ、指標は同じチャートを見る必要があるのか?

iCustomインジケータは独自のチャートを持ちません。一部のチャートに追加した場合でも

ChartIDを元に指標アルゴリズムが構築できるから?

はい、チャート関数とそのチャートに適用されるイベント(手動/テンプレート指標)は、任意のアクションに使用することができます。

 

ドキュメントの 誤り

ChartNavigate

指定されたチャートを、指定されたチャート位置から指定されたバー数だけ移動させる。

bool  ChartNavigate(
   long  chart_id,     // идентификатор графика
   int   position,     // позиция
   int   shift=0       // значение сдвига
   );

パラメータ

チャートID

[in] Chart ID.0は現在のチャートを意味します。

位置

[in] チャートの位置を相対的に移動させる。enumENUM_CHART_POSITION の値のいずれかを指定することができる。

 
Andrey Barinov:

OBJ_CHARTの Expert Advisorは問題なく実行、動作します。OnChartEvent (カスタム) を処理するだけで、他のチャートに対して独自のカスタムイベントを生成することができます。

確認しました。ExpertTest.mq5

class CUSTOM
{
public:  
  CUSTOM()
  {
    Print(__FUNCSIG__);
    
    Print(EventSetTimer(1) && EventChartCustom(0, 0, 0, 0, NULL) &&
          MarketBookAdd(_Symbol) && 
          ChartSetInteger(0, CHART_EVENT_MOUSE_WHEEL, true) &&
          ChartSetInteger(0, CHART_EVENT_MOUSE_MOVE, true) &&
          ChartSetInteger(0, CHART_EVENT_OBJECT_CREATE, true) &&
          ChartSetInteger(0, CHART_EVENT_OBJECT_DELETE, true) &&
          ChartNavigate(0, CHART_BEGIN, 100) &&
          ObjectCreate(0, __FILE__, OBJ_VLINE, 0, 0, 0) &&
          ObjectDelete(0, __FILE__));
    
  }
  ~CUSTOM() { Print(__FUNCSIG__); }
};

const CUSTOM InitDeinit;

void OnTick() { Print(__FUNCSIG__); }
void OnInit() { Print(__FUNCSIG__); }
void OnDeinit( const int ) { Print(__FUNCSIG__); }
void OnChartEvent( const int id, const long&, const double&, const string& ) { Print(__FUNCSIG__ + " " + (string)id) ; }
void OnTimer() { Print(__FUNCSIG__); }
void OnBookEvent( const string& ) { Print(__FUNCSIG__); }


スクリプト

#include <fxsaber\Expert.mqh>  // https://www.mql5.com/ru/code/19003

void OnStart()
{
  if (ObjectCreate(0, __FILE__, OBJ_CHART, 0, 0, 0))
  {
    MqlParam Params[1];
    Params[0].string_value = "Experts\\Test.ex5";

    Print(EXPERT::Run(ObjectGetInteger(0, __FILE__, OBJPROP_CHART_ID), Params));
  }
}


結果

Test3 (EURUSD,M1)       true
Test (EURUSD,M1)        void CUSTOM::CUSTOM()
Test (EURUSD,M1)        true
Test (EURUSD,M1)        void OnInit()
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 9
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 1000
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 9
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 9
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 9
Test (EURUSD,M1)        void OnDeinit(const int)
Test (EURUSD,M1)        void CUSTOM::~CUSTOM()


OBJ_CHARTのExpert Advisorに関する結論

  • OnInit, OnDeinit, グローバルコンストラクタ/デストラクタ, OnChartEventで動作するようになりました。
  • OnTimer、OnTick、OnBookEventが動作しない。
  • CHARTEVENT_CHART_CHANGEとカスタムイベントのみ捕捉されます。
  • OnChartEvent+EventChartCustomを通して、EAはOnTimerとOnTickのための「イベント」を作成できますが、OnBookEventはできません。
 
glucotrader 5 では、FILE_COMMON が指定された場合、#property tester_file が正しく動作せず、エージェント上でファイルを開くことができません。
 
Anton Ohmat:
glucotrader 5 では、FILE_COMMON が指定された場合、#property tester_file が正しく動作せず、エージェント上でファイルが開かれない。

さて、ファイルはCommonフォルダ(TerminalとlocalのAgentで共通)ではなく、Sandboxから取得されています。

 
fxsaber:

まあ、Commonフォルダ(TerminalとローカルAgentで共通)ではなく、Sandboxからですが。

リモートサーバーでテストしてみたが、うまくいかない。実行は、ディレクトリMTの嘘のファイルのローカルマシンは、最適化のCOMMONが行っていない場合にのみ行われます


テスターファイル

テスターのファイル名。拡張子を指定し、二重引用符で囲む(定数文字列として)。指定されたファイルはテスターに渡され、作業されます。テスト用の入力ファイルが必要な場合は、常に指定する必要があります。