Questions des débutants MQL4 MT4 MetaTrader 4 - page 89

 
Alexey Kozitsyn:
Tu ne devrais pas faire ça. Ce serait une grande perte de ressources. Et qu'y a-t-il de mal à avoir un temps de réponse rapide sans bouclage ?
Merci. C'est juste que le tutoriel officiel de mql4 le donne comme exemple, c'est pourquoi je suis intéressé. Je pensais que ça pourrait marcher mieux que la méthode habituelle.
 
LRA:
Un tick correspond à l'arrivée de nouvelles données en provenance du serveur. Et il doit être traité immédiatement après son arrivée. Si vous le faites en boucle avec un délai de 5 ms, la plupart des tics surviendront exactement pendant ce délai. Ainsi, le traitement sera retardé de 0 ... 5 ms.
Oui, il y a de la logique là-dedans. J'ai simplement pensé que la fonction start() elle-même passe aussi du temps sur sa boucle, et peut-être que son itération vole une fraction de seconde ou plus (elle peut nécessiter de s'adresser à un serveur pour obtenir un gros lot de données en une seule fois), contrairement à une pure boucle. Peut-être que c'est juste mon imagination, parce que je ne comprends pas les mécanismes internes, mais il y a une raison pour laquelle cette méthode a été incluse dans le tutoriel mql4.
 
smart_man:
Merci. C'est juste que le tutoriel officiel de mql4 donne cet exemple, alors j'étais intéressé. J'ai pensé que ça pouvait marcher mieux que la méthode habituelle.
Oui, mais le tutoriel est quelque peu dépassé. Bien sûr, c'est mieux que rien, mais il est utile de consulter la documentation en même temps et de vérifier si les fonctions comme start() y figurent toujours. Il est maintenant préférable d'utiliser le gestionnaire OnTick() pour les EAs.
 

Bonjour !

 
Bonjour, pouvez-vous me dire quel est le courtier le plus pratique pour la paire de devises USD/RUB, le spread minimum et le swap minimum etc avec la commission... ?
 
kanybek06:
Bonjour, Pouvez-vous m'indiquer le courtier le plus pratique pour la paire de devises USD/RUB ?

Comme vous débutez, vous serez très heureux avec n'importe qui. Faites une recherche sur Internet et comparez-les. Communiquez avec eux, posez des questions. Vous obtiendrez une réponse.

Nous abordons ici les questions relatives à la programmation et à la plateforme de trading Metatrader.

 

Quelle est la meilleure façon de clôturer des ordres opposés si vous devez les clôturer simultanément ?

1) chacun individuellement (soit manuellement, soit par TP/SL)

ou

2) En couple avec OrderCloseBy (manuel uniquement) ?

Y aura-t-il un seul enregistrement de spread avec OrderCloseBy comme écrit dans le tutoriel ? Les DC n'interdisent-ils pas une telle fermeture et cet écart sera-t-il restitué ? Comment le vérifier techniquement ?

Merci.

 
Il existe une classe modèle pour travailler avec un tableau.
#property strict
#include <ObjectVariables.mqh>
#include <Arrays\varQSort.mqh>
#include <Arrays\objQSort.mqh>

template<typename T1>
class ArrayList
{
   private:
      T1 array[];
      QuickSorts<T1> *qs;
      int size;
      int index;

   public:
      //прочие функции
      void QuickSort();//отсортировать массив
      //прочие функции
};
//+------------------------------------------------------------------+
//| Сортировка массива
template<typename T1>
void ArrayList::QuickSort()
{
   int idx = index;//сохранение положения индекса
   if(IsPointer(array[0])) // true - массив содержит указатели класса
      qs /*ошибка 2*/ = new ObjQSort<T1>();
   else
      qs /*ошибка 2*/ = new VarQSort<T1>();
   qs.Sort(array, 0, index);
   index = idx;
}

Pour cette classe modèle, nous devons implémenter le tri, étant donné qu'un tableau peut stocker des types de données complexes. Par exemple :
ArrayList<PP*> *dde; // PP - класс

Vous pouvez écrire des fonctions différentes pour les types simples et les types complexes, mais le compilateur ne comprend pas que les fonctions sont strictement délimitées par le type de données et continue à jurer :
'<' - opération illégale utiliser ArrayList.mqh

J'ai donc décidé d'intégrer l'interface :

#property strict
template <typename T1>
interface QuickSorts
{
   void Sort(T1 &array[], int beg, int end);
};
#property strict
#include <Arrays\QuickSorts.mqh>
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
template <typename T1>
class VarQSort : public /*ошибка 1*/ QuickSorts
{
private:

public:
   void Sort(T1 &array[], int beg, int end);
   VarQSort(){}
   ~VarQSort(){}
};
template <typename T1>
void VarQSort::Sort(T1 &array[], int beg,int end)
{
   //алгоритм функции
}
#property strict
#include <Arrays\QuickSorts.mqh>
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
template <typename T1>
class ObjQSort : public /*ошибка 1*/ QuickSorts
{
private:

public:
   void Sort(T1 &array[], int beg, int end){}
   ObjQSort(){}
   ~ObjQSort(){}
};

Toutes les parties de la construction se compilent. Mais si vous essayez de le déclarer :
ArrayList<PP*> *dde; // PP - класс
puis, lors de la compilation du fichier, voici les erreurs :

QuickSorts' - incompatibilité de modèle varQSort.mqh /*erreur 1*/
'=' - incompatibilité de type ArrayList.mqh /*erreur 2*/


Que dois-je corriger dans le code pour éliminer cette incompatibilité de type ? Je ne comprends pas pourquoi elle est apparue.

P.S.
'<' - opération illégale utiliser varQSort.mqh
me hante aussi dans cette construction. C'est de cette erreur que je voulais me débarrasser. Mais je comprends cette erreur, et je ne comprends pas ces deux-là.
 
виталик:
Bonjour, s'il vous plaît aider avec un morceau de code pour trier déchiré à partir d'un indicateur PivotsDaily v2.mq4 comment le convertir à une heure ou une demi-heure, seulement d'une manière ou d'une autre, de sorte qu'il serait plus clair changements, s'il vous plaît aider, merci à l'avance.

Vous avez déjà écrit dans un fil. C'est suffisant. Il n'y a pas besoin de se regrouper dans d'autres.
 
Bonjour, Pouvez-vous me conseiller, j'ai écrit un EA il y a 1,5 ans, il fonctionnait, tout allait bien. Je ne l'ai pas utilisé pendant tout ce temps, et maintenant il ne veut pas s'installer sur une carte. Qui sait ce qui peut en être la raison ? Cela peut-il être dû à des mises à jour de MT4 ?
Raison: