Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1352

 
CopyBuffer n'est pas trouvé dans mt4, seulement dans mt5 Pas dans mt4 ? Y a-t-il un simple numéro de tableau de tampon pour obtenir des données dans mt4 ?
 
Valeriy Yastremskiy:
CopyBuffer non trouvé dans mt4, seulement dans mt5 Non dans mt4 ?

pas de

dans MT4, il s'agit de iCustom()https://docs.mql4.com/ru/indicators/icustom

J'ai vérifié l'année dernière, l'appel à iCustom() depuis l'EA est cachable, c'est-à-dire que si vous appeleziCustom() plusieurs fois depuis l'EApour différents buffers ou index sur le même tick, l'indicateur lui-même sera recalculé une fois pour ce tick, c'est-à-dire qu'il n'y a pas de problème de performance.

ZS : pourquoi MT4 - si MT5 a déjà été "compris", la productivité est plus grande, le testeur est plus précis... dans l'ensemble, c'est une bonne chose pour la recherche, à mon avis.

 
Igor Makanu:

pas de

Dans MT4, c'est iCustom()https://docs.mql4.com/ru/indicators/icustom.

J'ai vérifié l'année dernière, l'appel à iCustom() depuis l'EA est cachable, c'est-à-dire que si vous appeleziCustom() plusieurs fois depuis l'EApour différents buffers ou index sur le même tick, l'indicateur lui-même sera recalculé une fois pour ce tick, c'est-à-dire qu'il n'y a pas de problème de performance.

ZS : pourquoi MT4 - si MT5 a déjà été "compris", la productivité est plus grande, le testeur est plus précis... Dans l'ensemble, c'est une bonne chose pour la recherche, à mon avis.

Il est plus facile de travailler avec des idées sur MT4. Le coquillage est plus facile)))) Non, non. Écrivons)))) dans une boucle dans le tableau à l'ancienne. Je n'ai pas encore atteint ces étapes)))) Dans MT5, il est logique de passer à l'échelle lorsque MT4 cesse de fonctionner))) et que cela est soit trop lent, soit trop de données.

ajouté. Et quand l'idée est élaborée jusqu'à une erreur acceptable.
 

Bonjour à tous. La machine Grail est presque terminée, mais lorsque je la compile, j'obtiens 50 à 60 avertissements concernant la valeur de retour de'OrderSend' qui doit être vérifiée TREND+ _V_1,1.mq4 1626 11

Si je comprends bien, c'est parce que j'écris l'ouverture des ordres sans aucun contrôle, comme ceci

//--- АО БАЙ--

   /*УСЛОВИЕ 1*/
   if(flag_screen1==en_vbIkl_screen1 &&flag_screen2==en_vbIkl_screen2)
   { // НАЧАЛО УСЛОВИЕ 1
   if(ao_buy!=EMPTY_VALUE && count_orders_market_buy ==0)
   {
     OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_buy); // ОТКРЫВАЕМ БАЙ ОРДЕР
   }
   } // КОНЕЦ УСЛОВИЕ1
 
DanilaMactep:

Bonjour à tous. La machine Grail est presque terminée, mais lorsque je la compile, j'obtiens environ 50-60 avertissements concernant la valeur de retour de 'OrderSend' qui doit être vérifiée TREND+ _V_1,1.mq4 1626 11

Si je comprends bien, c'est parce que j'écris l'ouverture des ordres sans contrôle - comme ceci

écrivez-le comme ceci

if(OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_buy)) Print(Buy Open); // ОТКРЫВАЕМ БАЙ ОРДЕР
 
MakarFX:

écrivez ceci

cette ligne de code ne fonctionne pas :( 2 erreurs comme celle-ci apparaissent en même temps :

Acheter - Identifiant non déclaré TREND+_1,1.mq4 860 98


Open' - un opérateur attendu TREND+_V_1,1.mq4 860 102

Et le code lui-même est comme ceci

if(OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_market_buy)) Print(Buy Open); // ОТКРЫВАЕМ БАЙ ОРДЕР


J'ai tout écrit comme conseillé, la seule différence est que j'ai changé le nom de la variable pour le commentaire afin de séparer le commentaire pour les ordres de marché et en attente. Qu'est-ce que je fais de mal ?
 
Print("Buy Open");
 
DanilaMactep:

Cette ligne de code ne fonctionne pas :( 2 erreurs comme celle-ci apparaissent en même temps :

Acheter - Identifiant non déclaré TREND+_1,1.mq4 860 98


Open' - un opérateur attendu TREND+_V_1,1.mq4 860 102

et le code lui-même est comme ceci


J'ai tout écrit comme conseillé, la seule différence est que j'ai changé le nom de la variable pour le commentaire afin de séparer le commentaire pour les ordres de marché et en attente. Qu'est-ce que je fais de mal ?

J'ai raté ""

Vladislav Andruschenko:

Print("Buy Open");


 
Au premier démarrage de l'indicateur dans la méthode OnCalculate, CopyRates ne fonctionne pas.
                MqlRates rates[];
                if (CopyRates(_Symbol, _Period, (datetime)SeriesInfoInteger(Symbol(), Period(), SERIES_SERVER_FIRSTDATE), 1, rates) == -1)
                {
                        return(0);
                }

Les ticks arrivent, ils sont visibles sur les impressions mais ils ne copient pas, comme s'il n'y avait pas d'indicateur dans le terminal, seul le changement de période avec l'indicateur aide, puis après le premier démarrage l'indicateur fonctionne bien.

 
BillionerClub:
Au premier démarrage de l'indicateur dans la méthode OnCalculate, CopyRates ne fonctionne pas.

Les ticks arrivent, ils sont visibles sur les impressions mais ne se copient pas, comme s'il n'y avait pas d'indicateur dans le terminal, seul le changement de période avec l'indicateur aide, puis après le premier démarrage l'indicateur fonctionne normalement.

Aide :CopyRates

Note

Si l'intervalle des données demandées est complètement hors de portée sur le serveur, la fonction renvoie -1. Si les données sont demandées en dehors deTERMINAL_MAXBARS(nombre maximal de barres dans le graphique), la fonction renvoie également -1.

Lors de la demande de données à l'indicateur, si les séries temporelles demandées n'ont pas encore été construites ou si elles doivent être téléchargées à partir d'un serveur, la fonction renverra -1 immédiatement, mais le processus de téléchargement/construction sera lancé.

Lorsque vous demandez des données à l'Expert Advisor ou à un script, lechargement depuis le serveur sera initié, si le terminal ne dispose pas de ces données localement, ou la construction des séries temporelles requises commencera, si les données peuvent être construites à partir de l'historique local, mais qu'elles ne sont pas encore prêtes. La fonction renverra la quantité de données qui sera prête avant le délai d'attente, mais le chargement de l'historique se poursuivra, et la prochaine demande similaire renverra plus de données.

Lors de la demande de données par date de début et nombre d'éléments requis, seules les données dont la date est inférieure (antérieure) ou égale à celle spécifiée seront retournées. En même temps, l'intervalle est spécifié et pris en compte à la seconde près. Cela signifie que la date d'ouverture de toute barre, pour laquelle la valeur est retournée (volume, spread, valeur dans le tampon de l'indicateur, prix Open, High, Low, Close ou open time Time), est toujours égale ou inférieure à celle spécifiée.

Lors de la demande de données dans la plage de dates spécifiée, seules les données comprises dans l'intervalle demandé seront retournées. L'intervalle est spécifié et pris en compte à la seconde près. Cela signifie que l'heure d'ouverture de toute barre pour laquelle une valeur est renvoyée (volume, spread, valeur dans la mémoire tampon de l'indicateur, prix Open, High, Low, Close ou open time Time), est toujours comprise dans l'intervalle demandé.

Ainsi,si le jour actuel de la semaine est le samedi, en essayant de copier les données sur le cadre hebdomadaire, en spécifiantstart_time=Dernier mardi etstop_time=Dernier vendredi, la fonction renverra 0, car l'heure d'ouverture du cadre hebdomadaire tombe toujours le dimanche, mais aucune barre hebdomadaire ne tombe dans la plage spécifiée.

Si vous voulez obtenir la valeur correspondant à la barre non finie actuelle, vous pouvez utiliser la première forme de l'appel, en spécifiantstart_pos=0 etcount=1.

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
  • www.mql5.com
CopyRates - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Raison: