Questions des débutants MQL5 MT5 MetaTrader 5 - page 1433

 
lego9955 gestion des erreurs est plus correcte. Je vous remercie de votre attention.

Juste au cas où, il est plus facile de les écrire en une seule ligne, comme je l'ai montré, qu'en un tableau de lignes séparées.

 
Alexey Petrov #:

Bonjour,

Essayez de rechercher sur le marché des solutions prêtes - https://www.mql5.com/fr/search#!keyword=money%20management&module=mql5_module_market

Vous pouvez également commander une solution personnalisée auprès de Freelance - https://www.mql5.com/fr/job

Bonjour et merci pour ta réponse j'ai pu faire un script qui répond à mes attentes malheureusement il reste deux erreurs que je n'arrive pas à comprendre et à corriger, saurais-tu à qui s'adresser pour un petit coup de main, il s'agit juste de deux lignes de code qui s'inscrivent en erreur après compilation...
 
Bonne année ! Quelle est la meilleure fenêtre pour MT5 10 ou 11 ? Sur un ordinateur portable AMD 5900X
 

Bonjour à tous et bonne année ! Comment faire pour que mon script utilise un indicateur du marché ?

Plus précisément :
il y a un indicateur "Automatic Trendline" sur le marché. Je veux créer un robot basé sur cet indicateur, qui ouvrirait ou fermerait une position au moment où le prix croise ces lignes sur l'indicateur (bien, et sous des conditions supplémentaires spécifiées).

 
Rad89 #:

Bonjour à tous et bonne année ! Pouvez-vous me dire : comment faire pour que mon script utilise un indicateur du marché ?

Plus précisément :
il y a un indicateur "Automatic Trendline" sur le marché. Je veux créer un robot basé sur cet indicateur, qui ouvrirait ou fermerait une position au moment où le prix croise ces lignes sur l'indicateur (bien, et sous des conditions supplémentaires spécifiées).

Aucun problème pour moi. Pour le marché ou CodeBase, vous ne pouvez pas utiliser l'artisanat de quelqu'un d'autre sur le marché ...

 
Alexey Viktorov #:

Pour vous-même, pas de problème. Vous ne pouvez pas utiliser l'artisanat de quelqu'un d'autre sur le marché ou dans CodeBase...

Pour vous-même. Je ne sais pas comment faire. Je n'arrive pas à trouver le code en open source. Ou comment visser dans mon code qu'il puisse capturer la position des lignes.

 

Bonjour, @Rad89

Vous avez besoin des fonctions iCustom() et CopyBuffer().

Voici un exemple d'ajout d'un indicateur téléchargé du marché à un Expert Advisor

// Глобальная переменная для хендла индикатора
int tlHandle;

int OnInit() {
   // Создаем хендл индикатора
   tlHandle = iCustom(Symbol(), PERIOD_CURRENT, "Market\\Automatic Trendlines", false, 5, 15, clrRed, clrBlue, 2, "My Support", "My Resistance");
   
   // Можем добавить индикатор на график, если хотим. 
   // Для использования в расчетах это необязательно
   ChartIndicatorAdd(ChartID(), 0, tlHandle);

   // Вызовем один раз OnTick(), чтобы на выходных у нас что-то в логе отобразилось
   OnTick(); 
   
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason) {}

void OnTick() {
   // Объявляем массивы для буферов индикатора
   double tlBuffer0[], tlBuffer1[]; // ,tlBuffer1, ...
   
   int res;
   
   // Копируем нужное количество значений из индикаторных буферов в массивы
   res = CopyBuffer(tlHandle, 0, 0, 100, tlBuffer0);
   res = CopyBuffer(tlHandle, 1, 0, 100, tlBuffer1);
   
   // У разных индикаторов различное количество индикаторных буферов, 
   // числа из которых используются для построения линий, значков, цветовых меток на графике
   // Сколько их у данного индикатора и как используются их числа исследуйте самостоятельно
   
   // res = CopyBuffer(tlHandle, 2, 0, 100, tlBuffer2);
   
   // Пользуемся полученными значениями
   ArrayPrint(tlBuffer0);
   ArrayPrint(tlBuffer1);
}
Документация по MQL5: Технические индикаторы / iCustom
Документация по MQL5: Технические индикаторы / iCustom
  • www.mql5.com
iCustom - Технические индикаторы - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Bonjour. Il y a une Enum.
enum ENUM_NAME
  {
   ENUM_1,
   ENUM_jsdf
   ....
   ENUM_FEF;   
  };
Comment allouer de la mémoire pour le tableau E_NAME[] afin qu'il y ait assez de mémoire pour toutes les valeurs possibles de ENUM_NAME (sans répétitions) ?
ENUM_NAME     E_NAME[];

Et initialiser E_NAME[] avec toutes les valeurs possibles ?

 

Bonjour, @pivomoe

Si vous n'allez pas forcer l'assignation de valeurs numériques aux éléments de l'énumération (à en juger par l'exemple, ce n'est pas le cas), vous pouvez procéder comme suit :

// Объявляем перечисление
enum ENUM_NAME {
   ENAME_1,
   ENAME_JSDF,
   ENAME_ERT,
   ENAME_QWERTY,
   ENAME_FEF
};

// Обявляем константу, хранящую количество элементов перечисления
#define  ENUM_NAME_SIZE 5

// Массив для хранения элементов перечисления
ENUM_NAME     E_NAME[ENUM_NAME_SIZE];

int OnInit() {
   // Заполняем массив значениями, преобразуя к типу ENUM_NAME
   for(int i = 0; i < ENUM_NAME_SIZE; i++) {
      E_NAME[i] = (ENUM_NAME) i;
   }

   // Пользуемся массивом
   ArrayPrint(E_NAME);
   
   for(int i = 0; i < ENUM_NAME_SIZE; i++) {
      Print(EnumToString(E_NAME[i]));
   }
   
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason) {}

Dans ce cas, vous devrez également modifier la constante stockant le nombre d'éléments lorsque vous ajoutez des éléments à l'énumération.

Par ailleurs, il est préférable d'utiliser le préfixe ENUM_ uniquement pour le nom de l'énumération elle-même, et d'utiliser un autre préfixe pour ses éléments. Cette convention est utilisée dans toutes les énumérations standard de MQL.

 
Yuriy Bykov #:

Bonjour, @pivomoe

Si vous ne voulez pas forcer l'assignation de valeurs numériques aux éléments de l'énumération (à en juger par l'exemple - ce n'est pas le cas), vous pouvez procéder comme suit :

Dans ce cas, vous devrez également modifier la constante stockant le nombre d'éléments lors de l'ajout d'éléments à l'énumération.

Par ailleurs, il est préférable d'utiliser le préfixe ENUM_ uniquement pour le nom de l'énumération elle-même, et d'utiliser un autre préfixe pour ses éléments. Cette convention est utilisée dans toutes les énumérations standard de MQL.

Merci pour votre aide. J'utilise ENUM depuis tellement d'années qu'il ne m'est même pas venu à l'esprit de lire l'aide.

Raison: