Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 304

 
Alexey Viktorov:
Artyom Trishkin:
Merci, pardonnez-moi, je n'ai pas formulé ma pensée correctement.
Je veux obtenirle prix d'ouverture de l'année, non pas en spécifiant une date particulière, mais en passant un index, comme s'il y avait une barre de 1 an dans le terminal. Le mois dernier a l'indice 1, l'année dernière a également l'indice 1.
 
mila.com:
Merci, pardonnez-moi, j'ai mal formulé ma pensée.
Je veux obtenirle prix d'ouverture de l'année, non pas en spécifiant une date spécifique, mais en passant un index, comme s'il y avait une barre de 1 an dans le terminal. Le mois dernier a l'indice 1, de la même manière que l'année dernière a l'indice 1.

Très simple.

double f(int numYear)
 {
   MqlDateTime newYear = {0}; // Обнулить обязательно.
   newYear.year = numYear;
   double priceOpenYear[1];
   CopyOpen(_Symbol, PERIOD_MN1, StructToTime(newYear), 1, priceOpenYear);
   return(priceOpenYear[0]);
}

Et cela ne dépend en aucun cas du jour ouvrable ou non ouvrable. PERIOD_MN1 est toujours le premier jour du mois, de même que PERIOD_W1 est toujours le dimanche.

 

Les gars !

L'un des clients se plaint que les EAs s'effondrent lorsque le prix varie fortement. Cela s'est produit avec différentes sociétés de courtage.

Il n'y a rien dans leur code qui puisse causer la suppression. Je n'ai jamais été confronté à ce problème moi-même.

Quel peut être le problème ?

 
Vladimir Tkach:

Les gars !

L'un des clients se plaint que les EAs s'effondrent lorsque le prix varie fortement. Cela s'est produit avec différentes sociétés de courtage.

Il n'y a rien dans leur code qui puisse causer la suppression. Je n'ai jamais été confronté à ce problème moi-même.

Quel peut être le problème ?


Vous ne voyez rien dans les journaux ? Même pas pour le déchargement ?

 
Aleksey Vyazmikin:

Il n'y a rien d'évident dans les journaux ? Même pas pour le déchargement ?


2017.08.08 23:31:29.035 Expert DEBUT 3.0 GBPUSD,M1 : supprimé

 
Vladimir Tkach:

2017.08.08 23:31:29.035 Expert DEBUT 3.0 GBPUSD,M1 : supprimé


Si l'expert n'utilise pas de modèles - se rouvre sur son graphique, alors je n'ai pas d'hypothèses...

 
Aleksey Vyazmikin:

Si l'expert n'utilise pas de modèles - il rouvre sur son graphique lui-même, alors je n'ai pas d'hypothèses...

Vladimir Tkach:

2017.08.08 23:31:29.035 Expert DEBUT 3.0 GBPUSD,M1 : supprimé

Y a-t-il assez de mémoire libre ? Expert n'encombre pas la RAM avec quoi que ce soit ?

 

Bonsoir.

Veuillez me dire pourquoi la fonctionOrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES) ne fonctionne pas.

Il renvoie une erreur : l'expression n'a pas pu être évaluée. Ticket - la valeur est remplie.

Je ne peux rien comprendre ((((

Merci.

 
rabanik:

Bonsoir.

Veuillez me dire pourquoi la fonction OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES) ne fonctionne pas.

Il renvoie une erreur : l'expression n'a pas pu être évaluée. Ticket - la valeur est remplie.

Je ne peux rien comprendre ((((

Merci.

Lors de la sélection d'un ordre par ticket, nous n'avons pas besoin de spécifier le pool - MODE_TRADES est redondant ici - ce paramètre est ignoré lors de la sélection par ticket et l'ordre est sélectionné dans l'une des deux listes - dans la liste des positions fermées ou dans la liste des positions sur le marché - selon que la position est fermée ou pas encore.

Après la sélection réussie d'un ordre basé sur le ticket, afin de comprendre à partir de laquelle des deux listes l'ordre a été sélectionné, il est nécessaire de vérifier l'heure de clôture de la position - si elle est supérieure à zéro, alors l'ordre a déjà été fermé et a été sélectionné à partir de la liste des ordres historiques, sinon - l'ordre est toujours sur le marché.

Mais pour comprendre quelle est votre erreur, vous devez joindre le code - donner plus d'informations, car dans cette ligne, en principe, il n'y a pas d'erreur (sauf que vous ne vérifiez pas le résultat du retour de la fonction, vous utilisez un modificateur qui est ignoré dans ce cas et il n'y a pas de " ;" après la parenthèse fermante).

 
Alexey Viktorov: Très simple.

Merci, mais cela renvoie zéro pour moi. Quelle pourrait être la raison ?

Comment("OpenYear : ",DoubleToString(f(1)));