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...
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).
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é ...
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.
Voici un exemple d'ajout d'un indicateur téléchargé du marché à un Expert Advisor
// Глобальная переменная для хендла индикатораint tlHandle;
intOnInit() {
// Создаем хендл индикатора
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);
}
voidOnDeinit(constint reason) {}
voidOnTick() {
// Объявляем массивы для буферов индикатора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);
}
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 ?
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];
intOnInit() {
// Заполняем массив значениями, преобразуя к типу ENUM_NAMEfor(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);
}
voidOnDeinit(constint 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.
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.
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.
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 à 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).
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é ...
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
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) ?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 :
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.
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.