Erreurs, bugs, questions - page 1801

 
fxsaber:
Des appels multiples de SymbolSelect feront que le terminal sera suspendu.
bool SymbolExist( const string Symb, const bool MarketWatch = true )
{
  bool Res = false;
  
  for (int i = SymbolsTotal(MarketWatch) - 1; (i >= 0) && (!Res); i--)
    Res = (Symb == SymbolName(i, MarketWatch));
    
  return(Res);
}

bool SymbolOnOff( const string Symb )
{
  return(SymbolSelect(Symb, !SymbolExist(Symb)));
}

void OnStart()
{
  for (int i = SymbolsTotal(false) - 1; i >= 0; i--)
  {
    const string Symb = SymbolName(i, false);
    
    if (SymbolOnOff(Symb))
      SymbolOnOff(Symb);
  }
}
 
Je n'ai pas vu de mention dans l'aide que si un symbole n'est pas dans le Market Watch, aucune donnée ne peut être obtenue pour lui. J'ai dû le faire par essais et erreurs.
 
fxsaber:
Je n'ai pas vu de mention dans l'aide, que si un symbole n'est pas dans le Market Watch, alors il n'y a pas de données sur lui. J'ai dû le faire à la main.
Bien. Il y a une mention de

Valeur retournée

Valeur de type double. En cas d'échec de l'exécution, les informations sur l'erreur peuvent être obtenues avec GetLastError():

  • 5040 - Paramètre de chaîne incorrect pour spécifier un nom de symbole,
  • 4301 - symbole inconnu (instrument financier),
  • 4302 - symbole non sélectionné dans "Market Watch" (pas dans la liste des disponibles),
  • 4303 - identifiant de propriété de symbole erroné.
 
Slawa:
Bien. Il y a une mention de

Merci, indirectement mentionné.

Dites-moi, si j'ajoute un symbole à Market Watch via SymbolSelect, comment puis-je savoir que le Bid/Ask par symbole est devenu disponible -SymbolIsSynchronized?

SymbolIsSynchronized - semble être coûteux pour cet objectif, car il soulève également la question de la synchronisation M1-histoire.

SymbolIsSynchronized ne devient jamais vrai sur certains caractères.

 
fxsaber:

Merci, indirectement mentionné.

Dites-moi, si j'ajoute un symbole à Market Watch via SymbolSelect, comment puis-je savoir que le Bid/Ask par symbole est devenu disponible - SymbolIsSynchronized ?

SymbolIsSynchronized - semble être coûteux pour cet objectif, car il soulève également la question de la synchronisation M1-histoire.

SymbolIsSynchronized ne devient jamais vrai sur certains symboles.

C'est le cas, mais le chargement est horriblement long. ....
 
Beaucoup de gens le savent probablement, mais ce n'est que maintenant que j'ai compris qu'il fallait inclure _LastError dans les valeurs suivies lors du débogage. Recommandé.
 
Avant de vérifier le drapeau de synchronisation de l'historique, vous devez d'abord appeler CopyRates(Symbol(),PERIOD_M1,0,1000,rates)

Si cela est fait à partir de l'indicateur, il donnera exactement ce qui est là, mais avec une demande au centre d'histoire pour la pagination. Alors ça peut être atroce.

Si cela est fait à partir d'un conseiller expert ou d'un script, alors plusieurs cycles de demandes peuvent être effectués à l'intérieur de la fonction en attendant la réponse, et en règle générale, après un tel appel, l'historique sera synchronisé.
 
fxsaber:

Si j'ajoute un symbole à Market Watch via SymbolSelect, comment puis-je savoir que l'offre et la demande sur ce symbole sont disponibles ?

Immédiatement après SymbolSelect(true), je demande les prix et ils sont nuls. En même temps _LastError == 0, SymbolInfoTick == true.

Comment puis-je savoir que les prix du nouveau symbole pour Marketwatch ont été livrés à Marketwatch ?

 
Slawa:
Avant de vérifier le drapeau de synchronisation de l'historique, vous devez d'abord appeler CopyRates(Symbol(),PERIOD_M1,0,1000,rates)

Si cela est fait à partir de l'indicateur, il donnera exactement ce qui est là, mais avec une demande au centre d'histoire pour la pagination. Alors ça peut être atroce.

Si cela est fait à partir d'un EA ou d'un script, plusieurs cycles de requête peuvent être effectués à l'intérieur de la fonction en attendant la réponse et, en règle générale, l'historique sera synchronisé après un tel appel.
Suggérez-vous de faire cela à chaque tic-tac ?
 
Alexey Kozitsyn:
Suggérez-vous de faire cela à chaque tic-tac ?
Je supporte la synchronisation sur chaque déclencheur de OnBookEvent() :(