Errori, bug, domande - pagina 1803

 
Slawa:
Oppure, come appena detto qui, chiedere il numero di barre, anche alcuni cicli.
Se c'è una chiamata della funzione Bars() dopo un lungo tempo di inattività, l'avvio dell'indicatore - è simile al controllo di SymbolIsSynchronized()?
 
Slawa:
Questo vale anche per gli indicatori. Creare un timer di 1 minuto e chiedere il numero di barre di tutte le serie temporali di interesse.

Controllando il fatto che la temporizzazione non è tenuta.
Sarebbe bene aggiungere questo alla documentazione...
 
Se lasciate solo i simboli MOEX nel Market Watch su Metaquotes-Demo, TimeCurrent sarà in ritardo di 15 minuti. Non appena viene aggiunto un singolo simbolo FOREX, TimeCurrent salta avanti di 15 minuti in una volta sola.
 

Cari sviluppatori! Ancora una volta chiedo di aggiungere il tempo in ms per i valori di sentimento(SYMBOL_SESSION_...) e tumbler( OnBookEvent()) il più presto possibile. Date la possibilità di fare la sincronizzazione di tutti i dati disponibili!

 

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

Errore in SYMBOL_SESSION_PRICE_LIMIT_MIN: sopra Ask - nessun BuyLimit può essere impostato.

 
fxsaber:

Per favore condividi la tua moto: una funzione bool che ti dice se un simbolo è pronto per essere scambiato o no.

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.
   
E se fosse nell'indicatore?
 
Artyom Trishkin:
E se fosse in un indicatore?
Quindi le gambe

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Bug, bug, domande

fxsaber, 2017.02.14 12:31

Subito dopo SymbolSelect(true) richiedo i prezzi e sono zero. Con _LastError == 0, SymbolInfoTick == true.

Come faccio a sapere che i prezzi su un nuovo simbolo per Marketwatch sono stati consegnati a Marketwatch?

Quindi, se SymbolSelect(true) non è stato fatto, e non abbiamo impostato specificamente Pause, allora non ci sarà nessuno slittamento.
 
fxsaber:
Da qui le gambe.
Quindi, se SymbolSelect(true) non viene fatto e non si imposta specificamente Pause, non ci sarà alcuno slittamento.
Onestamente, non capisco. Mi chiedevo: come fate a sapere se un simbolo è pronto in un indicatore? Sleep() non funziona negli indicatori.
Se l'indicatore traccia alcune statistiche su alcuni simboli sconosciuti, quando si seleziona il prossimo simbolo dal pannello, spesso non si possono ottenere subito i dati per esso, e la tabella conterrà le informazioni sbagliate... Come posso essere sicuro che i dati ricevuti dal simbolo siano corretti e in quantità sufficiente per ottenere ulteriori calcoli corretti?
 
Artyom Trishkin:
Onestamente, non capisco. Mi chiedevo: come fate a sapere se un simbolo è pronto in un indicatore? Sleep() non funziona negli indicatori.
Se l'indicatore visualizza nella tabella alcuni dati statistici su simboli che non sono noti in anticipo, allora quando si seleziona il prossimo simbolo dal pannello, spesso non è possibile ottenere immediatamente i dati per esso, e la tabella visualizza informazioni false... Come posso essere sicuro, per ulteriori calcoli, che i dati ottenuti dal simbolo siano corretti, e in quantità sufficiente per ottenere ulteriori calcoli corretti?
Ilsonno è necessario solo quando il simbolo non è nel Market Watch. Per tutti i simboli che sono nel Market Watch prima (e durante) l'inizio dell'indicatore, non sono necessari slittamenti.
Motivazione: