[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 244

 
AndEv:
Bonne journée à tous. J'ai une question : je veux que l'EA demande les données d'autres devises et d'autres périodes. Pour ce faire, je dois conserver plusieurs dizaines de graphiques ouverts (bien que mon conseiller expert ne se trouve que sur un seul graphique). Tout cela "consomme" beaucoup de mémoire et ralentit le VPS (même si les paramètres réduisent le nombre de barres dans l'historique/la fenêtre). Existe-t-il un moyen d'éviter d'ouvrir un grand nombre de graphiques, mais que les séries chronologiques requises continuent d'exister ? Merci d'avance pour votre réponse.

De quoi avez-vous besoin exactement de la part des autres monnaies ? Par exemple, vous pouvez spécifier n'importe quelle devise et n'importe quel horizon temporel dans les indicateurs et obtenir les données de cette manière.

double iMA(NULL, 0, ...) // по символу и таймфрейму текущего графика
double iMA("AUDUSD", PERIOD_W1, ...) // по AUDUSD и по недельному таймфрейму

Et vous n'avez pas besoin de garder le graphique AUDUSD, W1 ouvert.

 
paladin80:

De quoi avez-vous besoin exactement de la part des autres monnaies ? Par exemple, vous pouvez spécifier n'importe quelle devise et n'importe quel horizon temporel dans les indicateurs et obtenir les données de cette manière.

Et vous n'avez pas besoin de garder le graphique AUDUSD, W1 ouvert.

Tout indicateur effectue ses calculs sur la base de la série chronologique (dans votre exemple "AUDUSD", PERIOD_W1), et la série chronologique n'existe pas sans un graphique. La question est de savoir s'il existe un moyen de contourner ce problème. Dans MT4, vous ne pouviez pas faire beaucoup de choses, mais des personnes compétentes (Zhunko, par exemple) ont rendu beaucoup de choses possibles. J'ai essayé d'obtenir les données comme vous le dites, mais cela n'a pas fonctionné, bien que la paire soit présente dans la fenêtre Market Watch. Après avoir ouvert le graphique concerné, j'ai pu obtenir immédiatement les données nécessaires.
 
AndEv:
Tout indicateur effectue ses calculs sur la base d'une série temporelle (dans votre exemple "AUDUSD", PERIOD_W1), et une série temporelle n'existe pas sans un graphique. La question est de savoir s'il existe un moyen de contourner ce problème. Dans MT4, vous ne pouviez pas faire beaucoup de choses, mais des personnes compétentes (Zhunko, par exemple) ont rendu beaucoup de choses possibles. J'ai essayé d'obtenir les données comme vous le dites, mais cela n'a pas fonctionné, bien que la paire soit présente dans la fenêtre Market Watch. Après avoir ouvert le graphique correspondant, il était immédiatement possible d'obtenir les données nécessaires.

Une série temporelle existe sans graphique, si l'instrument est bien sûr ouvert et qu'il y a une référence constante à cette période. Dans ce cas, un tableau n'est pas du tout nécessaire.
 
AndEv:
Tout indicateur effectue ses calculs sur la base de la série chronologique (dans votre exemple "AUDUSD", PERIOD_W1), mais la série chronologique n'existe pas sans un graphique. La question est de savoir s'il existe un moyen de contourner ce problème. Dans MT4, vous ne pouviez pas faire beaucoup de choses, mais des personnes compétentes (Zhunko, par exemple) ont rendu beaucoup de choses possibles. J'ai essayé d'obtenir les données comme vous le dites, mais cela n'a pas fonctionné, bien que la paire soit présente dans la fenêtre Market Watch. Après avoir ouvert le graphique correspondant, j'ai réussi à obtenir immédiatement les données nécessaires.
J'ai créé un code comme celui-ci :

double MA_AUDUSD_M5, MA_AUDUSD_W1, MA_EURCAD_H1;
//+------------------------------------------------------------------+
int start()
  {
//----
MA_AUDUSD_M5=iMA("AUDUSD",PERIOD_M5,20,0,MODE_SMA,PRICE_CLOSE,0);
MA_AUDUSD_W1=iMA("AUDUSD",PERIOD_W1,20,0,MODE_SMA,PRICE_CLOSE,0);
MA_EURCAD_H1=iMA("EURCAD",PERIOD_H1,20,0,MODE_SMA,PRICE_CLOSE,0);

Comment ("MA_AUDUSD_M5 = ",DoubleToStr(MA_AUDUSD_M5,Digits),"\n",
         "MA_AUDUSD_W1 = ",DoubleToStr(MA_AUDUSD_W1,Digits),"\n",
         "MA_EURCAD_H1 = ",DoubleToStr(MA_EURCAD_H1,Digits));
//----
   return(0);
  }
//+------------------------------------------------------------------+
int init()
  {
   return(0);
  }
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+

Lorsque l'on teste avec la visualisation sur l'EURUSD, le quotidien se présente comme suit :


Il y avait vraiment quelque chose qui n'allait pas avec l'EURCAD. Je me suis rappelé que je ne travaille pas avec cet instrument et qu'il n'y a peut-être pas d'historique pour lui, j'ai téléchargé (F2, etc.), redémarré le terminal et voici ce que j'ai obtenu :


Il y a des données sur l'EURCAD. Peut-être, je devrais dire à VPS l'historique de l'instrument requis.

 
AndEv:
Tout indicateur effectue ses calculs sur la base d'une série temporelle (dans votre exemple "AUDUSD", PERIOD_W1), et une série temporelle n'existe pas sans un graphique. La question est de savoir s'il existe un moyen de contourner ce problème. Dans MT4, vous ne pouviez pas faire beaucoup de choses, mais des personnes compétentes (Zhunko, par exemple) ont rendu beaucoup de choses possibles. J'ai essayé d'obtenir les données comme vous le dites, mais cela n'a pas fonctionné, bien que la paire soit présente dans la fenêtre Market Watch. Après avoir ouvert le graphique correspondant, il était immédiatement possible d'obtenir les données nécessaires.

Demandez préventivement les données de l'instrument requis, il se construit sans tableau, mais cela prend du temps.
 
FAQ:

Demander préventivement les données pour l'instrument désiré, cela se construit sans graphique, mais cela prend du temps.
Justement, il est possible d'obtenir les données en les redemandant. Mais comment faire pour que cela se produise dès la première fois ?
 
hoz:

Et voici la dinde elle-même.

https://www.mql5.com/ru/code

Je ne suis pas intéressé par l'indicateur lui-même en tant que signal commercial. Mais j'ai remarqué son nom intéressant et j'ai décidé de voir ses "tripes". Alors je suis tombé sur...

J'ai décidé de lui donner un aspect "habituel" (pardonnez-moi l'auteur). Ce que j'ai obtenu (dans le fichier).
Dossiers :
ssl.mq4  4 kb
 
AndEv:
Justement, il est possible d'obtenir les données en les redemandant. Mais comment faire pour que ça marche du premier coup ?

Avez-vous essayé la gestion des erreurs ?
 
paladin80:

Peut-être que le SPV devrait raconter les histoires sur les outils à utiliser.

Télécharger l'historique ne servira à rien, car la requête a besoin de données fraîches en permanence. J'ai également fait un tel script, puis j'ai déplacé le code vers les hiboux, afin que le lancement soit effectué à partir du tick entrant. En dynamique, sansouvrir le graphique, je dois interroger deux fois, et c'est seulement dans ce cas que je peux obtenir des données fraîches. Je ne sais pas comment le faire sans une interrogation répétée.
 
Vinin:

Avez-vous essayé la gestion des erreurs ?
Non. Quel bien cela ferait-il ? Vous devriez de toute façon faire une autre requête
Raison: