barabashkakvn: Si vous connaissez l'heure et les dates de vos points, il vous suffit d'appelerbool TrendCreate()
Merci pour le conseil. Il s'est avéré que c'était plus facile que ça.
Je l'ai fait de cette façon :
#property strict#property script_show_inputs//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
long chart_ID=0; // ID графикаstring name="TrendLine"; // имя линииint sub_window=0; // номер подокна//--- сбросим значение ошибкиResetLastError();
//--- создадим трендовую линию по заданным координатамif(!ObjectCreate(chart_ID,name,OBJ_TREND,sub_window,Time[41],1.0656,Time[65],1.0494))
{
Print(__FUNCTION__,
": не удалось создать линию тренда! Код ошибки = ",GetLastError());
return;
}
}
//+------------------------------------------------------------------+
P.S. Une chose que je n'arrive pas à comprendre, c'est pourquoi les chiffres de l'exemple sont choisis comme ça :
A partir de là, la ligne de tendance est placée quelque part au milieu de la fourchette.
Il s'agit donc d'un simple script dont la tâche principale est de démontrer comment créer et travailler avec l'objet OBJ_TREND. Les chiffres ont été repris pour plus de clarté.
forexman77: Maintenant, le prochain problème à résoudre est de savoir comment continuer la ligne vers la droite et obtenir la valeur de la ligne dans l'EA ?
Le code du script a tout ce qu'il faut :
//+------------------------------------------------------------------+//| Создает линию тренда по заданным координатам |//+------------------------------------------------------------------+bool TrendCreate(constlong chart_ID=0, // ID графика
.
.
.
//--- включим (true) или отключим (false) режим продолжения отображения линии влевоObjectSetInteger(chart_ID,name,OBJPROP_RAY_LEFT,ray_left);
//--- включим (true) или отключим (false) режим продолжения отображения линии вправоObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);
.
.
.
1. lorsque le testeur appelle les métiers sont ouverts. Si je fais une optimisation, il y a des zéros partout. Quand je lance un programme d'optimisation, les offres sont là. Que faire ?
Comment faire pour qu'une ligne soit sauvegardée si une transaction a eu lieu (sur chaque transaction), et sinon, elle est supprimée ?
long chart_ID=0; // ID графикаstring name="TrendLine"; // имя линииint sub_window=0; // номер подокнаObjectDelete(chart_ID,name);
//--- сбросим значение ошибкиResetLastError();
//--- создадим трендовую линию по заданным координатамif(!ObjectCreate(chart_ID,name,OBJ_TREND,sub_window,Time[minbar],Low[minbar],Time[IPMIN],Low[IPMIN]))
{
Print(__FUNCTION__,
": не удалось создать линию тренда! Код ошибки = ",GetLastError());
return(0);
}
ObjectSet("TrendLine",OBJPROP_TIME1,Time[minbar]);
ObjectSet("TrendLine",OBJPROP_PRICE1,Low[minbar]);
ObjectSet("TrendLine",OBJPROP_TIME2,Time[IPMIN]);
ObjectSet("TrendLine",OBJPROP_PRICE2,Low[IPMIN]);
if (IPMIN!=0){ double uroven= ObjectGetValueByTime(chart_ID,name,Time[1],sub_window);}
}
Print("uroven=",uroven);
if (Time[0] > b && Close[1] < uroven){Opn_B=true;}
Vous devez contrôler vous-même les échanges. Mais pour que chaque transaction ait sa propre ligne, vous devez donner à chaque ligne un nom unique lorsque vous la créez.
barabashkakvn: Vous devez contrôler vous-même les échanges. Mais pour que chaque transaction ait sa propre ligne, vous devez donner à chaque ligne un nom unique lorsque vous la créez.
Pendant les tests de visualisation, le conseiller expert interagit avec le graphique réel. En test normal, sans visualisation, le Conseiller Expert fonctionne avec un graphique "virtuel" qui n'est pas rendu ; dans ce cas, certaines subtilités sont possibles. Les objets graphiques ne sont pas pris en charge lorsque le testeur est en mode optimisation.
Deux jours d'étude, et il s'avère qu'il est impossible d'effectuer une optimisation.
Je me demande si je peux créer un indicateur. Pourrai-je obtenir la valeur de la ligne dans mon conseiller expert grâce à lui ?
Qui doit dire quoi ? Peut-être, qui a déjà étudié cette question ?
Mais il est toujours plus facile de tout résoudre grâce à l'utilisation d'un indicateur. Les calculs sont effectués dans l'indicateur et leurs résultats sont affichés dans les tampons de l'indicateur.
Il existe une autre alternative. Créer des variables globales avec des paramètres de la ligne au lieu des lignes, mais alors la fonction GetValueByShift() ne fonctionnera pas, vous devez écrire son analogue.
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Si vous connaissez l'heure et les dates de vos points, il vous suffit d'appelerbool TrendCreate()
Merci pour le conseil. Il s'est avéré que c'était plus facile que ça.
Je l'ai fait de cette façon :
P.S. Une chose que je n'arrive pas à comprendre, c'est pourquoi les chiffres de l'exemple sont choisis comme ça :
À partir de là, la ligne de tendance se situe quelque part au milieu de la fourchette.
...
A partir de là, la ligne de tendance est placée quelque part au milieu de la fourchette.
Maintenant, le prochain problème à résoudre est de savoir comment continuer la ligne vers la droite et obtenir la valeur de la ligne dans l'EA ?
Le code du script a tout ce qu'il faut :
Le code du script a tout ce qu'il faut :
1. lorsque le testeur appelle les métiers sont ouverts. Si je fais une optimisation, il y a des zéros partout. Quand je lance un programme d'optimisation, les offres sont là. Que faire ?
Comment faire pour qu'une ligne soit sauvegardée si une transaction a eu lieu (sur chaque transaction), et sinon, elle est supprimée ?
Vous devez contrôler vous-même les échanges. Mais pour que chaque transaction ait sa propre ligne, vous devez donner à chaque ligne un nom unique lorsque vous la créez.
Comment ? Je peux vous donner un exemple ?
Objets graphiques pendant les tests
Pendant les tests de visualisation, le conseiller expert interagit avec le graphique réel. En test normal, sans visualisation, le Conseiller Expert fonctionne avec un graphique "virtuel" qui n'est pas rendu ; dans ce cas, certaines subtilités sont possibles. Les objets graphiques ne sont pas pris en charge lorsque le testeur est en mode optimisation.
Deux jours d'étude, et il s'avère qu'il est impossible d'effectuer une optimisation.
Je me demande si je peux créer un indicateur. Pourrai-je obtenir la valeur de la ligne dans mon conseiller expert grâce à lui ?
Qui doit dire quoi ? Peut-être, qui a déjà étudié cette question ?
...
Je me demande si je pourrais faire un indicateur ? Est-ce que je pourrai obtenir la valeur de la ligne dans l'EA par ce biais ?
...
Si l'indicateur crée des objets graphiques et obtient ensuite leurs paramètres, non.
Mais il est toujours plus facile de tout résoudre grâce à l'utilisation d'un indicateur. Les calculs sont effectués dans l'indicateur et leurs résultats sont affichés dans les tampons de l'indicateur.
Il existe une autre alternative. Créer des variables globales avec des paramètres de la ligne au lieu des lignes, mais alors la fonction GetValueByShift() ne fonctionnera pas, vous devez écrire son analogue.