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

 
Slawa:
または、ちょうどここで言われているように、バーの数、また、いくつかのサイクルをお願いします。
長いアイドル時間の後にBars()関数の呼び出しがあった場合、インジケータの起動 - SymbolIsSynchronized()をチェックするようなものでしょうか。
 
Slawa:
これは、指標にも当てはまります。1分タイマーを作成し、対象となるすべてのタイムスケールのバーの本数を 問い合わせる。

タイミングの事実を確認することで、タイミングが保持されていないことを確認します。
ドキュメントに追加すると良いのでは...。
 
Metaquotes-DemoのMarket WatchにMOEXシンボルだけを残しておくと、TimeCurrentは 15分遅れます。FOREXシンボルが1つ追加されると同時に、TimeCurrentは一気に15分先にジャンプします。
 

開発者の皆様へもう一度言いますが、できるだけ早くセンチメント値(SYMBOL_SESSION_...)とタンブラー(OnBookEvent())の時間をms単位で追加するようお願いします。すべてのデータを同期させることができます。

 

Metaquotes-Demo、シンボルDIG-20170330

SymbolInfoDouble(Symb,::SYMBOL_ASK) = 29006.0
SymbolInfoDouble(Symb,SYMBOL_SESSION_PRICE_LIMIT_MIN) = 29528.0
(ENUM_SYMBOL_TRADE_MODE)SymbolInfoInteger(Symb,SYMBOL_TRADE_MODE) = SYMBOL_TRADE_MODE_FULL (4)

SYMBOL_SESSION_PRICE_LIMIT_MIN: above Asc でエラー - BuyLimit が設定できない。

 
fxsaber:

あなたのバイクをシェアしてください:シンボルが取引可能かどうかを示すbool関数です。

ENUM_DAY_OF_WEEK GetDayOfWeek( const datetime time )
{
  MqlDateTime sTime = {0};

  TimeToStruct(time, sTime);
  
  return((ENUM_DAY_OF_WEEK)sTime.day_of_week);
}

// true - находимся в торговой сессии
bool SessionTrade( string Symb = NULL )
{  
  datetime TimeNow = TimeTradeServer();
  
  const ENUM_DAY_OF_WEEK DayOfWeek = GetDayOfWeek(TimeNow);
  
  TimeNow %= 24 * 60 * 60;
  
  if ((Symb == NULL) || (Symb == ""))
    Symb = Symbol();  
  
  bool Res = false;
  datetime From, To;    

  for (int i = 0; SymbolInfoSessionTrade(Symb, DayOfWeek, i, From, To) && (!Res); i++)
    Res = ((From <= TimeNow) && (TimeNow < To));
    
  return(Res);
}

// Возвращает true, если символ торгуемый. Иначе - false.
bool SymbolTrade( string Symb = NULL, const int Pause = -1 )
{
  MqlTick Tick;
  
  if ((Symb == NULL) || (Symb == ""))
    Symb = Symbol();
    
  if (Pause >= 0)
    Sleep(Pause); // Если только что произошло добавление символа в Обзор рынка, нужно дождаться поступления данных в Marketwatch.
  
  return(SymbolInfoTick(Symb, Tick) ? ((Tick.bid != 0) && (Tick.ask != 0) && SessionTrade(Symb) &&
         ((ENUM_SYMBOL_TRADE_MODE)SymbolInfoInteger(Symb, SYMBOL_TRADE_MODE) == SYMBOL_TRADE_MODE_FULL)) : false);
}
 
fxsaber:
   
  if (Pause >= 0)
    Sleep(Pause); // Если только что произошло добавление символа в Обзор рынка, нужно дождаться поступления данных в Marketwatch.
   
インジケーターの中に入っていたら?
 
Artyom Trishkin:
インジケーターの中に入っていたら?
それゆえ、脚

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

バグ、バグ、質問

fxsaber さん 2017.02.14 12:31

SymbolSelect(true)の直後に価格を要求すると、0になっている。_LastError == 0で、SymbolInfoTick == trueです。

マーケットウォッチ用の新しいシンボルの価格がマーケットウォッチに配信されたことを知るにはどうすればよいですか?

つまり、SymbolSelect(true)が行われておらず、特にPauseを設定していなければ、滑ることはないでしょう。
 
fxsaber:
それゆえ、脚があるのです。
そのため、SymbolSelect(true)が行われておらず、特にPauseを設定していない場合は、滑ることはありません。
正直言って、理解できない。疑問に思ったのですが、インジケータでシンボルが準備できたかどうかは、どのように確認するのですか?Sleep() がインジケータで動作しない。
インジケータがあらかじめ知らないシンボルに何らかの統計データをプロットした場合、パネルから次のシンボルを選択しても、一度にそのシンボルのデータを取得できないことが多く、表には誤った情報が含まれてしまいます...。シンボルから受け取ったデータが正しく、さらに正しい計算を得るのに十分な量であることを確認するにはどうしたらよいでしょうか。
 
Artyom Trishkin:
正直、ピンと来なかったんです。疑問に思ったのですが、インジケータでシンボルが準備できたかどうかは、どのように確認するのですか?Sleep()がインジケータで動作しない。インジケータが、事前に知らないシンボルの統計データをテーブルに表示した場合、パネルから次のシンボルを選択しても、そのシンボルのデータをすぐに取得できず、テーブルが誤った情報を表示することがよくあります...。記号から得られるデータが正しく、さらに正しい計算をするのに十分な量であることを、どうすれば確認できますか?
スリープは、シンボルがマーケットウォッチにないときのみ必要です。指標開始前(および開始中)のマーケットウォッチにあるすべてのシンボルについては、スリップは必要ありません。