Est-il nécessaire d'écriretempl(T1) devant chaque fonctionpour qu'elle prenne une variable ou l'argument requis ? Pourquoitempl(T) est déclaréettempl(T1) appelé, dois-je ajouter un nombre avant chaque fonction(templ(T1)templ(T2)templ(T3)) ou dois-je écriretempl(T1) partout ?Et si plusieurs paramètres sont notés danstemplate<typename T>alors comment cela se passerait-il, comme cecitemplate<typename T,typename P,typename Q>-templ(T,P,Q).
Oui, l'enregistrement se fait toujours avant chaque fonction, lorsque vous voulez transformer une fonction normale en modèle de fonction. C'est juste que ce disque est nettement plus court maintenant. T1 est un nom qui désigne un certain type de données, qui sont stockées dans une variable portant son nom (a). Il n'est pas nécessaire d'ajouter un chiffre. Vous pouvez utiliser le même nom partout, même le même T sans numéro. Le templ n'est pas appelé, mais est automatiquement remplacé par ce qui lui est ajouté en préambule dans #define. Il s'agit d'un simple remplacement d'un texte par un autre, mais vous pouvez écrire les paramètres d'entrée entre parenthèses, tout comme les fonctions.
#define templ(T) template<typename T> // один входной параметр именуемый буквой "T" т. е. "T" это просто имя.
templ(T1) T1 Funct(T1 a) { return a;} // функция вернёт тот же тип, что и будет передан при вызове это функции
Au moment de la compilation, l'expression templ(T1) sera remplacée par template<typename T1> et vous obtiendrez ceci
template<typename T1>
T1 Funct(T1 a) { return a;}
Pour les paramètres multiples, oui, vous avez deviné correctement comment décrire.
Директива #define подставляет expression вместо всех последующих найденных вхождений identifier в исходном тексте. identifier заменяется только в том случае, если он представляет собой отдельный токен. identifier не заменяется, если он является частью комментария, частью строки, или частью другого более длинного идентификатора. expression...
J'ai cru comprendre que vous deviez sélectionner le commutateur et y entrer les noms.
Votre code imprime une valeur int, alors que vous devez sélectionner une chaîne de caractères.
J'utiliserais un tableau de constantes de chaîne pour sélectionner le nom de l'indicateur, c'est-à-dire que mon exemple vous donne le numéro de l'enregistrement lorsque l'utilisateur le sélectionne, et ce numéro peut être le numéro d'un élément (index) du tableau de chaînes, où vous stockeriez les noms de texte des indicateurs.
Désolé, je n'ai pas de terminal, je ne peux pas montrer l'exemple dans le code, mais je pense avoir expliqué l'idée.
J'utiliserais un tableau de constantes de chaînes de caractères pour sélectionner le nom de l'indicateur, c'est-à-dire que mon exemple vous donne le numéro de l'enregistrement lorsqu'il est sélectionné par l'utilisateur, et ce numéro peut être le numéro de l'élément (index) du tableau de chaînes de caractères où vous enregistrerez les noms des indicateurs.
Désolé, je n'ai pas de terminal, je ne peux pas montrer l'exemple dans le code, mais je pense avoir expliqué l'idée.
PS :
Merci, je l'ai fait, c'est assez pratique.
Et la version finale, c'est juste la bombe. Cela me manque depuis longtemps, car j'ai au moins 20 graphiques ouverts dans le terminal.
Bonjour à tous. Aidez-nous, s'il vous plaît. Je veux que l'EA attende n heures après la clôture d'une transaction. Je peux aussi modifier cette fonction. Serait-il correct de changer Mode_Trades en Mode_Histoire ? Merci.
Carcass77: Bonjour à tous. Aidez-nous, s'il vous plaît. Je veux que l'EA attende n heures après la clôture d' une transaction. Je peux aussi modifier cette fonction. Serait-il correct de changer Mode_Trades en Mode_Histoire ? Merci.
MODE_HISTORY - bien sûr, il est nécessaire, mais il y a un autre point : dans le texte "après la fermeture" et dans le codeOrderOpenTime
Et ne va pas dans les bars, ne rend pas le temps t et ne l'utilise pas d'une manière ou d'une autre :
Veuillez noter que la fonction a légèrement changé.
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
// здесь пофиг какой символ и какая позиция ... последняя позиция и всеint ClosePos = SecondsAfterCloseLastPos();
// здесь по тек. символу и пофиг какая позиция // int ClosePos = SecondsAfterCloseLastPos(Symbol()); // здесь по тек. символу и OP_BUY позиция // int ClosePos = SecondsAfterCloseLastPos(Symbol(),OP_BUY); // здесь по тек. символу , OP_BUY позиция , и магик 5 // int ClosePos = SecondsAfterCloseLastPos(Symbol(),OP_BUY,5);// продажи, вместо OP_BUY прописываем OP_SELL.if(ClosePos > 3600 || ClosePos == 0 ) {/*можно открывать*/}
}
//+------------------------------------------------------------------+//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает количество секунд после закрытия последней позиций. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+int SecondsAfterCloseLastPos(string sy="",int op=-1,int mn=-1)
{
datetime t=0;
int i,k=OrdersHistoryTotal();
if(sy=="0") sy=Symbol();
for(i=0; i<k; i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderSymbol()==sy || sy=="")
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(op<0 || OrderType()==op)
{
if(mn<0 || OrderMagicNumber()==mn)
{
if(t<OrderCloseTime()) t=OrderCloseTime();
}
}
}
}
}
}
int CloseTime;
if(t==0)
CloseTime=0;
else
CloseTime = int(TimeCurrent()-t);
return(CloseTime);
}
//+----------------------------------------------------------------------------+
Est-il nécessaire d'écriretempl(T1) devant chaque fonctionpour qu'elle prenne une variable ou l'argument requis ? Pourquoitempl(T) est déclaréettempl(T1) appelé, dois-je ajouter un nombre avant chaque fonction(templ(T1)templ(T2)templ(T3)) ou dois-je écriretempl(T1) partout ?Et si plusieurs paramètres sont notés danstemplate<typename T>alors comment cela se passerait-il, comme cecitemplate<typename T,typename P,typename Q>-templ(T,P,Q).
Oui, l'enregistrement se fait toujours avant chaque fonction, lorsque vous voulez transformer une fonction normale en modèle de fonction. C'est juste que ce disque est nettement plus court maintenant.
T1 est un nom qui désigne un certain type de données, qui sont stockées dans une variable portant son nom (a). Il n'est pas nécessaire d'ajouter un chiffre. Vous pouvez utiliser le même nom partout, même le même T sans numéro.
Le templ n'est pas appelé, mais est automatiquement remplacé par ce qui lui est ajouté en préambule dans #define. Il s'agit d'un simple remplacement d'un texte par un autre, mais vous pouvez écrire les paramètres d'entrée entre parenthèses, tout comme les fonctions.
Au moment de la compilation, l'expression templ(T1) sera remplacée par template<typename T1> et vous obtiendrez ceci
Pour les paramètres multiples, oui, vous avez deviné correctement comment décrire.
Je vois, merci pour l'information, j'ai déjà essayé - c'est pratique.
J'ai cru comprendre que vous deviez sélectionner le commutateur et y entrer les noms.
Votre code imprime une valeur int, alors que vous devez sélectionner une chaîne de caractères.
J'utiliserais un tableau de constantes de chaîne pour sélectionner le nom de l'indicateur, c'est-à-dire que mon exemple vous donne le numéro de l'enregistrement lorsque l'utilisateur le sélectionne, et ce numéro peut être le numéro d'un élément (index) du tableau de chaînes, où vous stockeriez les noms de texte des indicateurs.
Désolé, je n'ai pas de terminal, je ne peux pas montrer l'exemple dans le code, mais je pense avoir expliqué l'idée.
PS :
J'utiliserais un tableau de constantes de chaînes de caractères pour sélectionner le nom de l'indicateur, c'est-à-dire que mon exemple vous donne le numéro de l'enregistrement lorsqu'il est sélectionné par l'utilisateur, et ce numéro peut être le numéro de l'élément (index) du tableau de chaînes de caractères où vous enregistrerez les noms des indicateurs.
Désolé, je n'ai pas de terminal, je ne peux pas montrer l'exemple dans le code, mais je pense avoir expliqué l'idée.
PS :
Merci, je l'ai fait, c'est assez pratique.
Et la version finale, c'est juste la bombe. Cela me manque depuis longtemps, car j'ai au moins 20 graphiques ouverts dans le terminal.
Bonjour à tous. Aidez-nous, s'il vous plaît. Je veux que l'EA attende n heures après la clôture d' une transaction. Je peux aussi modifier cette fonction. Serait-il correct de changer Mode_Trades en Mode_Histoire ? Merci.
MODE_HISTORY - bien sûr, il est nécessaire, mais il y a un autre point : dans le texte "après la fermeture" et dans le codeOrderOpenTime
Et ne va pas dans les bars, ne rend pas le temps t et ne l'utilise pas d'une manière ou d'une autre :
MODE_HISTORY - bien sûr, il est nécessaire, mais il y a un autre point : dans le texte "après la fermeture" et dans le codeOrderOpenTime
Et ne va pas dans les bars, ne rend pas le temps t et ne l'utilise pas d'une manière ou d'une autre :
J'ai corrigé en Mode_Histoire, c'est comme ça que la chouette n'ouvre pas la première commande. Pouvez-vous préciser la solution ? Merci
J'ai corrigé en Mode_Histoire, pour que la chouette n'ouvre pas la première commande. Pouvez-vous préciser la solution ? Merci
Jetez un coup d'oeil à ça.
Jetez un coup d'oeil à ça.
Comment le premier ordre est-il résolu ?
Et comment résoudre le premier ordre ?
Veuillez noter que la fonction a légèrement changé.