Au revoir le robot - bonjour le marasme - page 3

 

J'appréhendais de passer à de nouvelles constructions, mais il s'est avéré que tous les indicateurs, EA et scripts fonctionnaient tels quels. Compilé, cependant, avec une série d'avertissements. Mais le nouveau code compilé fonctionne beaucoup plus rapidement. Les seules nouveautés que j'utilise sont OnTimer(), de nouvelles options pour travailler avec des fichiers, l'augmentation du nombre de tampons indicateurs, quelques nouvelles fonctions (leur augmentation n'est qu'une question de temps). Le contrôle des dépassements de tableau avec indication de la chaîne dans le code est très utile. Avant, c'était : divisez par zéro, et regardez où vous voulez. Et ce serait encore pire si l'erreur ne se produisait pas.

On peut écrire "What's new in MQL4" pour ceux qui se souviennent des anciens trucs. Plus de nouveaux venus ?

Si vous voulez leur donner une description de MQL4 Lite, vous pouvez laisser hors de la documentation tout ce qui est fondamentalement nouveau et inutile : structures, classes, ressources, pointeurs d'objets, POO, débogueur, signaux, événements graphiques, toutes les fonctions qui utilisent ces nouvelles connaissances, etc. Tout ce qui sera laissé derrière ne sera pas beaucoup plus compliqué que l'ancien MQL4. Modifier légèrement le manuel pour le nouveau, qui n'a pas été nettoyé.

.

 

Renat 09.09.2014 02:55 #

Vous pouvez reprendre méthodiquement des arguments, expliquer la multiplication des fonctionnalités, sauvegarder l'ancien code, corriger les bugs, etc. Cela a été fait à de nombreuses reprises, décrit dans des articles et discuté dans des forums. Mais il est plus facile et plus précis de dire que l'auteur a tout à fait tort et qu'il invente des problèmes à partir de rien.

Réponse à Renat !

----------------------------------------------------------------

Vous essayez d'inventer des choses sur moi !

En tant que développeur, vous êtes au service des banques,

Pas la communauté ! Vous construisez une voiture de course.

avec un vélo d'enfant à pédales !

Je dois donc vous donner les faits.

Question :

Où est-ce que User32. dll

avec les fonctions pour appeler le script de l'eXpert, l'indicateur.

Tout est parti ! Voici la preuve.

l'éditeur de liens lui-même a fait de moi un eXpert pour un prix, qui

pour appeler le script en cas de besoin.

maintenant le script est seulement appelé manuellement.

l'appel lui-même est entouré de différentes fenêtres permettant d'appeler

ou que vous voulez invoquer un deuxième script - la fenêtre "voulez-vous laisser la

Seul le trading manuel est possible !

Que doit faire un robot ? Et tous les écrivains robots ?

Je ne suis pas opposé à la POO et aux performances supposées plus rapides de MT4.

Si vous vouliez accélérer MT4, vous auriez limité le nombre d'heures d'utilisation de l'ordinateur.

J'en utilise 5-6 et j'obtiens des centaines de dates !

Les symboles inutiles sont des déchets.

et ils ne font que venir ! C'est là que la vitesse et la réactivité

Mais c'est mauvais pour les banques !

Pansa

Importation des fonctions de User32. Si leur but n'est pas immédiatement

// clairement, alors le documenter ici ne va pas franchement aide beaucoup. Nécessite

// "Autoriser les importations de DLL" doit être activé.

#import "user32.dll"

int RegisterWindowMessageA(string MessageName) ;

int PostMessageA(int hwnd, int msg, int wparam, string Name) ;

void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo) ;

#import

// Le paramètre hWnd pour toutes ces fonctions est obtenu à l'aide de WindowHandle().

// Par exemple, un EA/script peut obtenir le handle de son propre graphique en utilisant

// WindowHandle(Symbol(), 0). Si l'EA/script sait qu'un autre graphique

// est ouverte, alors sa poignée peut être obtenue en utilisant le symbole connu et

// timeframe. Comportement imprévisible s'il y a plusieurs graphiques pour

// le même symbole et la même période. AutomaticallyAcceptDefaults efface

// la fenêtre de configuration du nouvel indicateur/EA/script en simulant

// une pression sur la touche Entrée après une petite attente. Une attente plus longue pourrait

// s'avèrent plus robustes. Rien de tout cela n'est pour les âmes sensibles...

void StartStandardIndicator(int hWnd, string IndicatorName, bool AutomaticallyAcceptDefaults = false)

{

int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message") ;

PostMessageA(hWnd, MessageNumber, 13, IndicatorName) ;

if (AutomaticallyAcceptDefaults) ClearConfigDialog() ;

}

void StartCustomIndicator(int hWnd, string IndicatorName, bool AutomaticallyAcceptDefaults = false)

{

int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message") ;

PostMessageA(hWnd, MessageNumber, 15, IndicatorName) ;

if (AutomaticallyAcceptDefaults) ClearConfigDialog() ;

}

void StartEA(int hWnd, string EAName, bool AutomaticallyAcceptDefaults = false)

{

int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message") ;

PostMessageA(hWnd, MessageNumber, 14, EAName) ;

if (AutomaticallyAcceptDefaults) ClearConfigDialog() ;

}

void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false)

{

int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message") ;

PostMessageA(hWnd, MessageNumber, 16, ScriptName) ;

if (AutomaticallyAcceptDefaults) ClearConfigDialog() ;

}

void ClearConfigDialog()

{

Sleep(100) ;

keybd_event(13, 0, 0, 0) ;

}

 
pansa:

Renat 09.09.2014 02:55 #

Vous pouvez reprendre méthodiquement des arguments, expliquer la multiplication des fonctionnalités, sauvegarder l'ancien code, corriger les bugs, etc. Cela a été fait à de nombreuses reprises, décrit dans des articles et discuté dans des forums. Mais il est plus facile et plus précis de dire que l'auteur a tout à fait tort et qu'il invente des problèmes à partir de rien.

Réponse à Renat !

----------------------------------------------------------------

Vous essayez de me dénigrer de façon éhontée !

Pourquoi se féliciter alors que nous sommes à des niveaux de compréhension complètement différents ?


user32.dll ne va nulle part - c'est une bibliothèque du système d'exploitation.

Utilisez les variantes de fonctions W(idechar/unicode) au lieu des fonctions A(nsi) :

#import "user32.dll"

   int  RegisterWindowMessageW(string MessageName);
   int  PostMessageW(int hwnd, int msg, int wparam, string Name);

   void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo);

#import
 
Si vous supprimez le symbole de la fenêtre Market Watch, aucun trafic ne passera par là. Ce mécanisme a fonctionné pendant 14 ans.
 

Au modérateur, Renate !

sur le niveau de compréhension - c'est relatif,

Je porte une lance aux côtés du glorieux chevalier Don Quichotte.

et je suis à la hauteur de la tâche.

Vous, en revanche, devez satisfaire à des exigences plus élevées.

des exigences plus élevées et de fabriquer des produits d'une

qualité supérieure.

Eh bien, user32,dllfait référence à windos.

Votre conseil d'aller de A à W n'a eu aucun effet !

Essayez d'exécuter le script à partir de l'eXpert !

La suppression des caractères n'a pas d'incidence sur la charge du processeur ou du réseau.

c'est un appel d'écran et le fil est le même !

J' espère que vous serez d'accord avec moi.

Panza

 

Je peux voir que vous le faites aussi.

Mais nous parlons ici de programmation et de programmes écrits par des programmeurs. Si vous ne comprenez pas le code source que vous utilisez, vous devez apprendre. Nous avons fait beaucoup pour cela : documentation complète, tutoriel, articles, base de sources, freelancing, marché de produits prêts à l'emploi, signaux, forum, etc.

 
pansa:

Essayez de changer la casse de la première lettre du nom du script/indicateur. D'une certaine manière, je me débattais aussi https://www.mql5.com/ru/forum/152533/page2#982156

P.S : bien, changez string en char[]

 

CherRenat, moi aussi j'ai eu beaucoup d'avertissements après la compilation des EAs, pas d'erreurs.

J'ai une question : que signifient ces avertissements (principalement, ils se trouvent devant la ligne return()) ? Et ne vont-ils pas affecter négativement le fonctionnement des conseillers experts ?

Bien sûr, je n'ai pas envie de réapprendre le langage et de refaire mes EA (je suis un trader, pas un programmeur).

 
vasabu2012:

CherRenat, moi aussi j'ai eu beaucoup d'avertissements après la compilation des EAs, pas d'erreurs.

J'ai une question : que signifient ces avertissements (principalement, ils se trouvent devant la ligne return()) ? Et ne vont-ils pas affecter négativement le fonctionnement des conseillers experts ?

Bien sûr, je n'ai pas envie de réapprendre le langage et de refaire mes EA (je suis un trader, pas un programmeur).


Veuillez m'envoyer les erreurs ou le code de l'Expert Advisor dans lequel vous avez fait des erreurs.
 
vasabu2012:

Moi aussi, j'ai eu un tas d'avertissements après avoir compilé les EAs - pas d'erreurs.

Et la plupart des avertissements absurdes sont apparus à cause du passage parfaitement légal, correct et standard d'une variable par référence dans une fonction, lorsque le nom du modèle de la fonction correspond à la variable elle-même comme il devrait l'être dans cette construction dans son utilisation standard et typique, lorsque la variable elle-même est passée dans la fonction avec son propre nom.

Malheureusement, les PM n'ont pas pu donner une explication compétente et logique à cela, disant que parfois on peut avoir des malentendus dans d'autres constructions quand il y a des noms similaires. Mais voici le paradoxe, par exemple, quand il y a une fonction avec un seul et même nom et un nombre différent de paramètres, l'avertissement n'apparaîtra pas.

Nous devons donc l'attribuer à des superstitions religieuses et à des croyances obscures alors qu'il n'y a aucune logique derrière cet avertissement. Je ne considère pas encore la version de l'idiotie, telle que suggérée par l'auteur du fil pour expliquer ce phénomène)).