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

 

MT4とMT5のデモサーバーで、週末の相場が動くものがあるかどうか教えてください。

 
Kirill Belousov:

MT4やMT5のデモサーバーで、週末に相場が動いているところはありますか?

デモサーバーは、実際のお金ではなく「デモ」で取引を行うからデモサーバーなのであって、それ以外のことは(気配値の時間なども)ほとんど現実と同じです。

 
Kirill Belousov:

MT4とMT5のデモサーバーで、週末の相場が動くものがあるかどうか教えてください。

週末はお見積もりがありません。
名言の到着を模倣できるか。
 

MT5をオフライン(左プロキシなど)にして、EAを次のように実行します。

void OnInit()
{
  Print("Hello World!");
}

ログへの印刷は、アドバイザー-BAGの開始後5秒のみとなります。


このインジケータをオフラインで実行する

#property indicator_chart_window

#property indicator_buffers 0
#property indicator_plots 0

int OnCalculate( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[] )
{
  return(rates_total);
}

void OnInit()
{
  const datetime LastBar = (datetime)SeriesInfoInteger(_Symbol, PERIOD_CURRENT, SERIES_LASTBAR_DATE);

  Print(LastBar);
  Print(Bars(_Symbol, PERIOD_CURRENT, LastBar - 24 * 3600, LastBar)); // 0
  Print(GetLastError());                                              // ERR_HISTORY_NOT_FOUND
}

バーズでバツになるんです。OnTimerなどで、繰り返し呼び出すと、同じようにバツが悪くなります。しかし、Expert AdvisorでBarsを呼び出すと、すべてが機能します。インジケーターの場合、これは明らかにバグです。

2017.10.22 23:35:40.678 Terminal        Alpari Limited MT5 x64 build 1653 started (Alpari Limited)
2017.10.22 23:35:40.678 Terminal        Windows 7 Ultimate (x64 based PC), IE 09.00, Intel Core i7-2700 K  @ 3.50 GHz, RAM: 11310 / 16301 Mb, HDD: 827 / 30000 Mb, GMT+02:00
ドキュメントの説明では、何も説明されていない

Если данные для таймсерии с указанными параметрами при вызове функции Bars() еще не сформированы в терминале, или данные таймсерии в момент вызова функции не синхронизированы с торговым сервером, то функция вернет нулевое значение.

リフレッシュを呼び出したインジケータと同じ周期で、タイムシリーズのリフレッシュ要求を送信することは、非常に好ましくありません。インジケータと同じシンボル期間の要求が好ましくないのは、ヒストリカルデータの更新がインジケータを実行するのと同じスレッドで実行されるためです。そのため、衝突する可能性が高い。

 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

mql5言語の特徴、微妙なニュアンスとコツ

fxsaber さん 2017.10.17 15:07

子孫配列は祖先配列に変換することができません。一方、エレメント・バイ・エレメントは、そうですね。これにはArrayCopyの制限があり、これを取り除くとよいでしょう。

この状況での言葉は何かが間違っている

struct RATES : public MqlRates {};

void f1( RATES& ) {}

void f2( MqlRates& ) {}
void f2( MqlRates &[] ) {}

void OnStart()

{
  MqlRates a = {0};  
  
  f1(a); // 'a' - parameter conversion not allowed
  
  RATES b[1] = {0};
  
  b[0] = a; // no problem
  a = b[0]; // no problem
  
  f2(b[0]); // no problem
  f2(b);    // 'f2' - no one of the overloads can be applied to the function call
}


黄色と赤の文字列は互いに矛盾している。構造体からの継承が進行中で、コンストラクタ、代入演算子、フィールドが変更されていない場合、子孫から親への変換、その逆は問題なく行われる必要があります。そして、黄色い線がそれを証明している。しかし、状況によってはバマーが発生します。赤いバマーです。
 
fxsaber:

この状況での言葉遣いは何かおかしい

私のコンパイラは


 
Kirill Belousov:

私のコンパイラは

はい、メッセージを修正しました。
 
   int tim=(int)FileGetInteger(aFileName,FILE_CREATE_DATE);
   int cur_tim=(int)TimeCurrent();

   RefreshRates();
   if(FileGetInteger(aFileName,FILE_EXISTS)==1)
      if(tim>0)
         if((cur_tim-tim)>120) 
           {
            Print(" ttt   "+TimeToString(cur_tim)+"  "+TimeToString(tim));
            FileDelete(aFileName);
            Print("Обновление файла ");
            return false;
           }

int tim=(int)FileGetInteger(aFileName,FILE_CREATE_DATE); は時刻を更新しない。

ファイルを作成し、60秒後に削除したい場合、ファイルは削除され、int tim=(int)FileGetInteger(aFileName,FILE_CREATE_DATE); はコンパイル後の最初の ファイルの時刻を返します。 Windowsウィンドウでは、ファイルが削除され新しい時刻で作成されていることが確認 できます。

RefreshRatesは役に立ちません・・・。

 

int tim=(int)FileGetInteger(aFileName,FILE_MODIFY_DATE);

正しく動作する

 
Vladimir Pastushak:

int tim=(int)FileGetInteger(aFileName,FILE_CREATE_DATE); は時刻を更新しない。

ファイルを作成し、60秒後に削除したいのですが、ファイルは削除され、int tim=(int)FileGetInteger(aFileName,FILE_CREATE_DATE); はコンパイル後の最初の ファイルの時間を返します。 Windowsウィンドウで見ると、ファイルが削除されて新しい時間で作成 されていますね。

RefreshRatesは役に立ちません・・・。

ファイル作成コードはどこにありますか?

削除する前にファイルを閉じていますか?

RefreshRatesとどう関係があるのですか?

5なのか4なのか?