comment décharger la dll - page 8

 
alsu >> :

Si l'interpréteur n'est pas défaillant, il ne sautera pas de commandes dans le code, peu importe les conneries que vous faites !

N'utilisez pas de tels superlatifs, "glitchy". Si un interprète a quelques problèmes, cela ne veut pas dire qu'il est défectueux. Jetez un coup d'œil au moins au même rapport de bogue de VC, je vous le recommande vivement pour comprendre ce qui est "glitchy". La situation est un ordre de grandeur pire, mais personne de sensé n'oserait considérer le VC comme "glitchy". C'est la même chose ici.


Et de toute façon, la dll en question était-elle ici ? Y a-t-il une objection à ce qu'une dll écrite correctement se comporte correctement ? et que la seule manière correcte de décharger la dll soit la manière standard recommandée dans la documentation ?

 
alsu >> :

AlexEro,

Cycle sur les séries temporelles for(i=limit;i>=0;i--) après avoir terminé , il s'est envolé vers la zone des indices négatifs (ce qui a été inévitablement confirmé par des alertes) !!!!.


int start()
  {
   for(int i=11; i>=0; i--) continue;
   Alert( i);
   return(0);
  }

))) Tu le pensais vraiment ?

Quel désordre ! Je ne le savais pas ! !!

(Quelle... journée débraillée aujourd'hui)

 
jartmailru >> :

Ce que cela signifie, c'est que vous devez spécifier une dll spécifique dans l'EA.

Exécutez ensuite l'EA et ne quittez pas Metatrader.

Ensuite - le cas d'utilisation le plus important - nous devons prétendre que nous remplaçons la dll par une nouvelle.

S'il échoue lorsque le metatrader est en cours d'exécution (et je vérifie en supprimant le fichier), alors

alors le système pense que la dll est utilisée...

voilà. Le conseiller expert a terminé son travail et la dll n'a pas été déchargée.

Maintenant, je dois redémarrer l'application entière pour remplacer la dll.

Bon sang, si j'ai bien compris votre description, vous suggérez de remplacer la dll elle-même lorsque l'EA est en cours d'exécution, à laquelle la dll est accrochée ! Avez-vous essayé d'arrêter l'EA (pas avec un bouton), puis de remplacer la dll, et de redémarrer l'EA ?

 
alsu писал(а) >>

Mais dès qu'un programmeur terrifié commence à manipuler avec un zèle excessif la mémoire ou à voler du temps processeur au terminal pour ses calculs, ou encore à toucher à la file d'attente sacrée (oh mon Dieu) des messages de terminal.exe, le méchant methaquot se venge.

Et vous pensez que les gestionnaires de file d'attente de messages du programme doivent être "comme Merlin, le grand et terrible" dans tous les fragments de code qui sont exécutés ? Pourquoi toucher la file d'attente de messages de quelqu'un d'autre à partir d'un DLL ?

J'ai rencontré des choses qui vous font dresser les cheveux sur la tête.

Pour l'instant, ce ne sont que des mots. Donnez-moi un exemple de code. Je ne suis pas le seul à être intéressé.

En général, je n'ai pas rencontré de dll ne se chargeant pas en tant que tel (j'ai déjà écrit à ce sujet ; j'ai utilisé la dll à la fois dans les conseillers experts et les indicateurs ; dans tous les cas, j'ai dû "manipuler avec trop de zèle la mémoire ou utiliser le temps cpu" directement dans la dll et le résultat était un fonctionnement indésirable).

 
Svinozavr >> :

))) C'est ce que vous vouliez dire ?

Quel désordre ! Je ne le savais pas ! !!

(Quelle... journée désordonnée aujourd'hui).

Je ne peux pas reproduire le code exactement, mais c'était quelque chose comme ceci

int start()
{

...

int i;
for ( i=100; i>=1; i--) //отмечу, что здесь было именно 1, а не 0
{
   //че-то делаем
   CallToDLLFunction();//здесь вызывалась какая-то простенькая функция, время работы порядка 1-3 миллисекунд
}

if( i<0) return(0); //эти две строчки вставил уже когда заподозрил неладное
Alert("i=", i);

return(0);
}

Dans un marché rapide, lorsque plusieurs ticks sont reçus par seconde, ce code produisait dans les alertes une séquence i=0, i=-1, i=-2, i=-3 (en fonction du nombre de ticks manqués par le terminal jusqu'à l'exécution de start()), puis à nouveau i=0.

Les tics manqués - tant pis, ça arrive. Mais si cela se produit, cela ne signifie pas que le programme doit sauter une commande conditionnelle, qui se produit en fait deux fois dans le code (la boucle for est essentiellement une commande de branchement, aussi).

 
HideYourRichess >> :

Bon sang, si je comprends bien votre description, vous suggérez de remplacer la dll elle-même lorsque l'EA est en cours d'exécution, à laquelle la dll est accrochée ! Avez-vous essayé d'arrêter l'EA (pas avec un bouton), puis de remplacer la dll, et de redémarrer l'EA ?

Bien sûr, nous parlons d'essayer de remplacer la dll après la fin des tests.

Mais apparemment votre expérience professionnelle suggère qu'après les erreurs que vous avez faites

et une attitude incorrecte envers les utilisateurs du forum, il est plus profitable de commencer à s'en prendre aux mots.

.

Et bien sûr, le grand pro n'a pas essayé de faire un simple test ...ou l'a fait.

 
même effet, mais sur une plus grande échelle (jusqu'à -100 et au-delà) observé lors du démarrage du terminal et du chargement de l'indicateur à partir du modèle, lorsque le terme charge la fin de l'historique manquant
 
jartmailru >> :

Bien sûr, nous parlons d'essayer de remplacer la dll après la fin des tests. Mais apparemment votre expérience professionnelle suggère qu'il est plus profitable de commencer à s'en prendre aux mots après les erreurs que vous avez commises et votre attitude incorrecte envers les membres du forum.

Non, notre expérience nous dit qu'il faut être prudent pour savoir de quoi l'on parle. Et si un "membre du forum" est un imbécile - ce n'est pas grave, cela arrive, il ne faut même pas en parler à voix haute. Mais s'il est un imbécile têtu dans son ignorance - c'est vrai, il n'y a pas de choix de mots. Et pas besoin de mentir, je n'ai pas fait d'erreur. Contrairement à vous.


Eh bien, la Dll de mon conseiller expert se comporte correctement. C'est la cinquième fois que je te le dis, et la dernière. Peut-être ai-je une dll différente, une dll grise, absolument inintéressante, pas comme la vôtre.

 
alsu >> :

Je ne peux pas reproduire le code exactement, mais c'était quelque chose comme ceci

Dans un marché rapide, lorsque plusieurs ticks sont reçus par seconde, ce code produisait dans les alertes une séquence i=0,i=-1,i=-2,i=-3 (en fonction du nombre de ticks manqués par le terminal jusqu'à l'exécution de start()), puis i=0 à nouveau.

Les tics manqués - tant pis, ça arrive. Mais si cela se produit, cela ne signifie pas que le programme doit sauter une commande conditionnelle, qui se produit en fait deux fois dans le code (la boucle for est également une commande de branchement).

La clarification de la condition de boucle i>=1 plutôt que 0, que vous avez citée dans mon premier message confus, lève les soupçons - je commençais à penser que vous étiez allé trop... malade aussi.

Conditions de saut ? Cool. Ça n'est jamais arrivé. Quelle est cette dll magique ? )))

Pouvez-vous reproduire le résultat ? Et voir la dll elle-même. Ce n'est pas que je n'y crois pas - je veux juste apprendre à écrire de telles dlls. Pour que tout se mette en place. J'aurai quelque chose à dire à des gens intelligents plus tard...

 
HideYourRichess >> :

Ainsi, dans mon EA, la Dll se comporte correctement. C'est la cinquième fois que je fais un rapport, et la dernière. Je dois avoir une dll différente, une dll grise absolument inintéressante, pas comme la vôtre.

Super ! Vous avez déjà atteint un nouveau niveau - un niveau d'abstraction.

Vous avez probablement de l'expérience dans le travail avec les gens, peut-être dans le commerce.

.

Bien. Appliquons ce genre de raisonnement. Je suis très heureux que vous ayez accepté mes arguments.

Pour ma part, je dois seulement assurer à tous que mes Dlls fonctionnent encore plus correctement.

Dans tous les cas, les résultats sont les mêmes que ceux du testeur Metatrader et de la Dll de Neuroshell.

.

Mais en tant que personne incapable d'effectuer un simple test et de faire un rapport, ne me répondez plus.

>> Sauf pour le public.

Raison: