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

 
Bonjour, je voudrais savoir s'il existe un script normal pour télécharger et synchroniser l'historique des cotations pour MT5.ex5 et tout allait bien, le scanner fonctionnait, donnait des signaux, tout fonctionnait bien, mais hier après le déjeuner comme coupé, le scanner a juste cessé de voir l'historique et donc de chercher des points d'entrée selon la stratégie et de donner des signaux, j'ai pensé que le problème est dans le scanner, mais j'ai eu plusieurs versions de celui-ci et il a cessé d'afficher des signaux sur toutes, j'ai demandé à mon ami et j'ai effacé le terminal, il était inutile, je l'ai supprimé avec toutes les informations, je l'ai réinstallé et lorsque j'ai commencé à charger l'historique avec le script, j'ai ouvert l'onglet experts et j'ai vu qu'il n'y avait que des erreurs lors du chargement de l'historique, j'ai écrit au support du courtier, ils m'ont dit que récemment les ingénieurs de MT% avaient mis à jour cela et peut-être que l'algorithme du script s'est embrouillé. J'ai essayé de demander ici ce qu'il faut faire et s'il y a d'autres scripts pour l'historique des cotations, je dois dire tout de suite que j'ai essayé d'utiliser une période d'un mois pour télécharger les cotations, c'était inutile, merci beaucoup par avance.
 
82Dmitry82:
Bonjour, je voudrais savoir s'il existe un script normal pour le chargement et la synchronisation de l'historique des cotations pour MT5.ex5 et tout allait bien, le scanner fonctionnait, donnait des signaux, tout fonctionnait bien, mais hier après le déjeuner comme coupé, le scanner a juste cessé de voir l'historique et donc de chercher des points d'entrée selon la stratégie et de donner des signaux, je pensais que le problème était dans le scanner, mais J'ai quelques versions de celui-ci et a cessé de donner des signaux pour tous, à la fois pour moi et mon ami, j'ai vidé le terminal, pas de succès, l'a supprimé avec toutes les informations, réinstallé et quand j'ai commencé à charger l'histoire avec le script, j'ai ouvert l'onglet experts et a vu qu'il y avait seulement des erreurs lors du chargement de l'histoire, j'ai écrit à l'appui du courtier, ils ont répondu que récemment dans MT% qui pourrait avoir été mis à jour et l'algorithme est confondu dans le script, il donne une telle histoire de chargement,je m'excuse pour le grand nombre de lettres, j'ai juste essayé d'expliquer la situation en détail, le support du courtier a refusé d'aider, ils disent que ce n'est pas nous, et metaquotes, vous ne pouvez pas leur écrire, ils n'ont aucun retour, donc j'ai décidé de demander ici ce qu'il faut faire et s'il y a d'autres scripts pour l'historique des citations, je dois dire, j'ai essayé d'utiliser le TF mensuel pour télécharger les citations, aucune utilité, merci d'avance.

Je ne vais pas dire n'importe quoi, mais c'est la seule société où j'ai eu des problèmes avec les données historiques lors de l'exécution d'une de mes commandes - cela allait et venait.

J'en cherchais les raisons jusqu'à ce que je dise au client de le tester sur des devis d'autres courtiers. Et tout s'est bien passé là-bas.

Si vous avez essayé de charger les cotations dans les délais mensuels, c'était inutile.

 
Les gars, aidez-nous avec cette questionhttps://www.mql5.com/ru/forum/160683/page934#comment_12795598
 
Seric29:
Les gars, aidez-nous à résoudre ce problèmehttps://www.mql5.com/ru/forum/160683/page934#comment_12795598

vous n'avez pas d'exemple complet, postez le code reproductible, c'est à dire un modèle de classe complet et un exemple de code dans lequel vous créez un objet en utilisant ce modèle, jusqu'à présent seulement "télépathes en vacances" .... je soupçonne que le code ne compile tout simplement pas, beaucoup de points de discorde dans votre modèle, je ne peux pas voir la logique dans tout cela.

 
Artyom Trishkin:

Je ne vais pas dire n'importe quoi, mais c'est la seule société où j'ai eu des problèmes avec les données historiques lors de l'exécution d'une de mes commandes - cela allait et venait.

J'en cherchais les raisons jusqu'à ce que je dise au client de le tester sur des devis d'autres courtiers. Et tout s'est bien passé là-bas.

La raison en est qu'il est interdit de discuter des courtiers sur cette ressource, restons-en là.

C'est ça le truc, ils n'ont pas eu de problème depuis plus de six mois. J'ai essayé de l'utiliser pour une raison quelconque, le nôtre utilise un bargraph makdi, il semble être le problème, au moins quand ils voulaient commander pour QuickBooks la réponse était négative après avoir examiné TOR, tout reposé sur la plate-forme intégrée indukes, juste IMb parfois en hibernation et l'Amérique donne à travailler

 
Igor Makanu:

vous n'avez pas d'exemple complet, postez le code reproductible, c'est-à-dire un modèle de classe complet et un exemple de code dans lequel vous créez un objet en utilisant ce modèle, jusqu'à présent seulement "télépathes en vacances" .... Je soupçonne que le code ne compile tout simplement pas, il y a beaucoup de points discutables dans votre modèle, peut-être que je n'en vois pas la logique

Cela devrait fonctionner comme suit.

#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

#define  templ(T)          template<typename T>// задача данного макроса определять int bool double и т.д

//Далее пишем макрос который будет принимать массив и возвращать
//результат с помощью вызова перегружаемой функции которая будет вызываться из класса, но в моём примере вписана простая функция,
// я 3 дня посидел и выяснил что макрос может принимать массивы любой размеренности  в принципе об этом написано в справке что макрос может принимать эл. любого типа
#define  Vosmas(a,b,c,d,e) /*return*/(Fun(a,b,c,d,e))//a- массив, 
                                                    //b- номер строки если нужен
                                                    //c,d- номера измерений если нужны и массив многомерный

int Mas[2],Mas2[2][2],Mas3[2][2][2];//объявил массивы которые будут хранить информацию// обработка с помощью классов должна быть любого типа templ(T)

int OnInit()
{int Perem=0;
//макрос должен вызвать функцию из класса и сделать следующее/ в моём примере будет простая функция
 Perem=Vosmas(Mas,0,0,0,3);
 Print("Vosmas: ",Perem);//результат 3
return(INIT_SUCCEEDED);}

templ(T)class CData{
public:CData(){};~CData(){};
       //перегружаемая функция Total() с наращиваемым количеством аргументов, не знаю будет ли оно наращивать аргументы вроде записывается но когда дойдёт до расчётов увидим
       //хотелось бы с этим разобраться 
       //а также делать такую перегрузку 
       T Total(T &mas[]    ,int y1=0 ...){return(mas[y1]);}  //y2 весит в холостую  
       T Total(T &mas[][]  ,int y1=0 ...){return(mas[y1][y2]);}
       T Total(T &mas[][][],int y1=0 ...){return(mas[y1][y2][y3]);}};
       
         
templ(T) T Fun(T &a[],int b,int c,int d,int e){a[b]=e; return (a[b]);}// оставшиеся аргументы будут висеть в холостую

En général, je veux obtenir cet effet, mais je n'ai aucune expérience dans le domaine des classes. Le code se compile et fonctionne

 
Seric29:

Cela devrait fonctionner comme suit.

Malheureusement, je ne comprends pas la logique de ce code, je ne peux même pas imaginer pourquoi vous déclareriez des mots-clés du langage par substitution de macro,

Et par logique, je doute que vous ayez accès à un tableau multidimensionnel de cette façon, je pense que votre exemple n'a simplement pas compilé un modèle et donc vous n'avez pas eu d'erreur de compilation,

Je ne suis pas d'une grande aide, peut-être que quelqu'un d'autre pourra comprendre votre exemple.

 
Igor Makanu:

Malheureusement, je ne comprends pas la logique de ce code, je ne peux même pas imaginer pourquoi vous utiliseriez la substitution de macro pour déclarer les mots-clés du langage,

Et par logique, je doute que vous ayez accès à un tableau multidimensionnel de cette façon, je pense que votre exemple n'a simplement pas compilé un modèle et donc vous n'avez pas eu d'erreur de compilation,

Je ne suis pas d'une grande aide, peut-être que quelqu'un d'autre pourra comprendre votre exemple.

Le code se compile mais ce n'est pas fini, le but est d'obtenir ce résultat

return(mas[y1]);

Je dois appeler une fonction de la classe et obtenir cette valeur.

 
Seric29:

Le code se compile, mais il n'est pas terminé.

encore une fois : ce n'est pas parce que vous n'avez pas eu d'erreur de compilation que votre classe template a été incluse - où est l'objet de la classe CData ? - Je vois une déclaration de modèle, où est la variable ? - objet ?

si vous avez "un besoin vital" de résoudre la question, alors faites un code entièrement reproductible - complètement sans ..... commentaires à votre discrétion et encore une fois, je ne comprends pas la logique de l'utilisation de la substitution de macro.

#define  templ(T)          template<typename T>

c'est peut-être ça l'essentiel, j'utilise rarement les macros, au moins si j'utilise une macro je comprends ce qu'elle fait finalement, dans votre exemple c'est un mystère pour moi

 
Igor Makanu:

encore une fois : ce n'est pas parce que vous n'avez pas eu d'erreur de compilation que votre classe de modèle a été incluse - où est l'objet de classe CData ? - Je vois une déclaration de modèle, mais où se trouve cette variable ? - objet ?

si vous avez "un besoin vital" de résoudre la question, alors faites un code entièrement reproductible - complètement sans ..... commentaires à votre discrétion et encore une fois, je ne comprends pas la logique de l'utilisation de la substitution de macro.

c'est peut-être là le problème, j'utilise rarement les macros, au moins si j'utilise une macro je comprends ce qu'elle fait finalement, dans votre exemple c'est un mystère pour moi

La tâche de la macro est d'appeler une fonction de la classe et de passer la valeur à la fonction et puisque la macro peut prendre un tableau de n'importe quelle dimension, j'essaie de faire un tel schéma. Bien sûr, beaucoup de joyaux, mais j'ai besoin d'appeler la fonction de la classe et je ne sais pas comment appeler une fonction simple de la classe (dans mon cas, la méthode Total n'a pas de description) n'est pas écrit dans l'aide, il ya des exemples complexes de transfert.

#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

#define  templ(T)          template<typename T>// задача данного макроса определять int bool double и т.д

#define  Vosmas(a,b,c,d,e)  5

int Mas[2],Mas2[2][2],Mas3[2][2][2];//объявил массивы которые будут хранить информацию// обработка с помощью классов должна быть любого типа templ(T)

int OnInit()
{int Perem=0;
Perem=Vosmas(Mas,0,0,0,0);
Print("Vosmas: ",Perem);
Perem=Vosmas(Mas2,0,0,0,0);
Print("Vosmas: ",Perem);
Perem=Vosmas(Mas3,0,0,0,0);
Print("Vosmas: ",Perem);//во всех случаях результат 5
return(INIT_SUCCEEDED);}

Voici un exemple : une macro prend un tableau de n'importe quelle dimension, il est regrettable que les développeurs aient supprimé ces fonctions qui permettent de travailler normalement avec des éléments complexes.

Vous pouvez le faire sans modèle, mais c'est mieux avec un modèle.

Raison: