Fehler, Irrtümer, Fragen - Seite 1803

 
Slawa:
Oder, wie hier schon gesagt, fragen Sie nach der Anzahl der Balken, auch einige Zyklen.
Wenn die Funktion Bars() nach einer langen Leerlaufzeit aufgerufen wird, wird der Indikator gestartet - ist das vergleichbar mit der Überprüfung von SymbolIsSynchronized()?
 
Slawa:
Dies gilt auch für Indikatoren. Erstellen Sie einen 1-Minuten-Timer und fragen Sie nach der Anzahl der Balken aller interessierenden Zeitreihen.

Die Überprüfung der Zeitmessung hält die Zeit nicht ein.
Es wäre gut, dies in die Dokumentation aufzunehmen...
 
Wenn Sie nur MOEX-Symbole in der Marktbeobachtung auf Metaquotes-Demo lassen, verzögert sich TimeCurrent um 15 Minuten. Sobald ein einzelnes FOREX-Symbol hinzugefügt wird, springt TimeCurrent sofort um 15 Minuten weiter.
 

Liebe Entwickler! Ich bitte noch einmal darum, die Zeit in ms für die Sentiment-Werte(SYMBOL_SESSION_...) und tumbler( OnBookEvent()) so schnell wie möglich hinzuzufügen. Geben Sie die Möglichkeit, alle verfügbaren Daten zu synchronisieren!

 

Metaquotes-Demo, Symbol 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)

Fehler in SYMBOL_SESSION_PRICE_LIMIT_MIN: über Asc - kein BuyLimit kann gesetzt werden.

 
fxsaber:

Bitte teilen Sie Ihr Fahrrad: eine bool-Funktion, die Ihnen mitteilt, ob ein Symbol zum Handel bereit ist oder nicht.

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.
   
Und wenn es in einem Indikator steht?
 
Artyom Trishkin:
Und wenn es in einem Indikator steht?
Daher die Beine

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wanzen, Wanzen, Fragen

fxsaber, 2017.02.14 12:31

Unmittelbar nach SymbolSelect(true) frage ich die Preise ab, und sie sind null. Bei _LastError == 0, SymbolInfoTick == true.

Woher weiß ich, dass die Preise für neue Symbole für Marketwatch an Marketwatch geliefert wurden?

Wenn also SymbolSelect(true) nicht ausgeführt wurde und wir nicht speziell Pause eingestellt haben, dann gibt es keinen Schlupf.
 
fxsaber:
Daher die Beine.
Wenn also SymbolSelect(true) nicht durchgeführt wurde und Sie nicht ausdrücklich Pause einstellen, gibt es keinen Schlupf.
Ehrlich gesagt, verstehe ich das nicht. Ich habe mich gefragt: Woher wissen Sie, ob ein Symbol in einem Indikator bereit ist? Sleep() funktioniert nicht in Indikatoren.
Wenn der Indikator einige statistische Daten zu Symbolen aufzeichnet, die vorher nicht bekannt sind, können Sie bei der Auswahl des nächsten Symbols aus dem Panel die Daten für dieses Symbol oft nicht sofort erhalten, und die Tabelle enthält dann falsche Informationen... Wie kann ich sicher sein, dass die vom Symbol empfangenen Daten korrekt sind und in ausreichender Menge vorliegen, um weitere korrekte Berechnungen zu erhalten?
 
Artyom Trishkin:
Ehrlich gesagt, verstehe ich das nicht. Ich habe mich gefragt: Woher wissen Sie, ob ein Symbol in einem Indikator bereit ist? Sleep() funktioniert nicht in Indikatoren.
Wenn der Indikator in der Tabelle einige statistische Daten zu Symbolen anzeigt, die nicht im Voraus bekannt sind, dann können Sie bei der Auswahl des nächsten Symbols aus dem Panel oft nicht sofort die Daten dafür abrufen, und die Tabelle zeigt falsche Informationen an... Wie kann ich für weitere Berechnungen sicher sein, dass die aus dem Symbol gewonnenen Daten korrekt sind und in ausreichender Menge vorliegen, um weitere korrekte Berechnungen zu erhalten?
DerRuhezustand wird nur benötigt, wenn sich das Symbol nicht in der Marktbeobachtung befindet. Für alle Symbole, die sich vor (und während) des Starts des Indikators in der Marktbeobachtung befinden, werden keine Zettel benötigt.