[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 289
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
C'est ce qui se passe si le script est simplement déplacé dans le dossier des experts. Ça marche, mais pas comme ça devrait. Le script crée 8 ordres en attente, mais si vous le sauvegardez simplement dans le dossier des experts, il crée 8 ordres en attente après chaque tick. J'ai besoin qu'il passe 8 nouvelles commandes uniquement après la clôture des anciennes.
J'ai trouvé une erreur. Dans la bibliothèque de cette fonction, sur la ligne
doit supprimer le zéro dans chacun des numéros 13, 14 et 15.Maintenant, correctement
Bonjour les fonctions de la bibliothèque.
Нашел ошибку. В библиотеке для данной функции в строке
надо удалить по нулю в 13, 14 и 15 числе.
Теперь правильно
Fonctions de la bibliothèque Hello.
Avez-vous écrit seulement un "report" dans votre scénario ? Ensuite, il ne fera que tergiverser : autant de tics rentrés qu'il en faut... Oups... .........
Vous devez mettre un contrôleur d'interdiction là-dedans aussi...
))))) Impossible de résister)))))
Très bien, passons aux choses sérieuses. Je travaille sur l'optimisation du code de la deuxième TF, j'ai décidé de traduire double en int[2] pour écrire la structure RateInfo en un seul bloc. J'y ai réfléchi et j'ai décidé de décrire tous les moyens possibles, y comprisceux qui sont irréalisables, afin que quelqu'un puisse être prévenu contre les erreurs.
1. WinAPI (msdn). D'une manière générale, il n'y a pas grand-chose à faire en termes de fonctions de conversion. Cela est dû au fait que la conversion fait un usage intensif de la traduction de type c, qui est quelque chose comme
dans l'avant-dernière ligne,int i1 est converti en char et dans la dernière ligne, char s2 est converti en int. Par conséquent, tous ces éléments sont utilisés dans des "fonctions de conversion" qui, en fait, ne se trouvent dans aucune dll WinAPI, mais sont déclarées dans les fichiers .h de l'en-tête à l'aide de macros telles que
qu'au moment de la compilation le préprocesseur déroule en chaîne de caractères comme dans le premier code. Et les fichiers d'en-tête .h ne sont pas des dll et ne sont utilisés que dans l'environnement de développement (Studio, Borland, gcc, etc.). Par conséquent, ce n'est ni bon ni mauvais pour MQL4. Cependant, vous pouvez toujours vérifier si la fonction est déclarée uniquement dans le fichier .h de l'en-tête ou dans les fonctions exportées et cachées des yeux indiscrets d'une dll de System32.
2) WinAPI (dll CRT). Ces dlls sont nommées msvcp*, msvcr*, msvcrt*, msvci*, msvcirt. Ici le choix est plus large : _atodbl, _atoi64, _atoldbl, _ftol, _i64toa, _itoa, _ltoa, _strtoi64, _strtoui64 _ui64toa, _ultoa, atof, atoi, atol, strtod, strtol, strtoul. Les symboles du nom ont la signification suivante :
Mais le _dtoi64/_dtoui64 attendu est toujours absent. En utilisant les définitions de msvcrt*, msvci*, msvcirt.dll, par contre
n'est disponible, même si vous êtes tordu, qu'en tant qu'opération de fichier (ce sont des opérations de console).
Vous pouvez effectuer des recherches, en dehors de msdn, surce site, voici la barre de recherche du site. Une chaîne de recherche msdn similaire "pratique" est ici. En quoi diffèrent-ils ? La msdn a une bonne description des fonctions, mais certaines n'y sont pas du tout (NativeAPI, par exemple). Dans l'alternative, en revanche, il existe un tableau d'exportation de dll système, mais pas de description. En fait, il est plus facile d'obtenir un ensemble de tableaux d'exportation sur le site web que de tirer soi-même des tableaux d'exportation à partir du DLL (IDA, PE Explorer, etc.).
3. les insertions en assembleur (plus précisément, les insertions en code machine). Je vais vous expliquer dans un instant, car la documentation officielle est très vague à cet égard. Les insertions C++ dans MQL4
asm/_asm n'est pas une fonction, mais une directive du préprocesseur, et n'est définie nulle part dans system32/*.dll (voir la recherche sur le site). En d'autres termes, cela n'existe pas.
Vous pouvez écrire du code machine pur en MQL4, mais seulement dans un cas : lorsque, selon la définition de la fonction WinAPI dans le msdn, il devrait passer un pointeur à la fonction/procédure commelpTimerFunc (exemple complet ici sur le forum), dans le msdn il est déclaré comme :
UINT_PTR SetTimer( HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc//<- );
oulpfnWndProc (exempleinachevé ici sur le forum, déclaration msdn et tentative de déclaration de structure mql4). Il n'y a pas d'autre moyen, MQL4 est un interprète, l'adresse de la fonction n'existe pas, il n'y a rien à passer, seulement si le code est écrit en code machine. Ils sont ensuite emballés dans un tableau d'int et passés à la fonction par référence.
Les insertions en assembleur compilé (c'est-à-dire le code machine) ne sont donc pas applicables à cette tâche - elles ont une portée complètement différente. Le mieux que l'on puisse faire est d'exécuter un tel tableau d'int via debug dans cmd via shell32.dll. Il semble que la ligne de commande ne puisse pas y être passée, mais elle peut être écrite en utilisant les touches virtuelles via keybd_event.
4. J'écris ma propre fonction pour convertir un double en int[2] en MQL4 pur sans inserts. Mais j'ai estimé la taille du code et ses performances, et j'ai abandonné. Je n'ai pas encore écrit le module lui-même, mais je crois que l'algorithme est le suivant :
Il faudrait beaucoup de temps pour l'exécuter. J'ai donc trouvé la solution la plus évidente et la plus simple.
5. Utilisation d'un dll auto-écrit en C++. Le code est le suivant :
Dans le script.
Int upper[0] est inversé car nous le passons par référence. Nous avons :
...ça a marché, les lignes dans la décharge sont identiques. Dossier attaché, dans celui-ci dans les bibliothèques se trouve double.dll, dans les échantillons - source dll, dans les scripts - script.
Soirée : j'ai retéléchargé l'archive et modifié un peu le code du script et de la dll.
Je ne comprends pas ce que j'ai fait de mal. Pour une raison quelconque, la position ne se ferme pas comme je l'avais prévu ?
Voici le critère d'ouverture d'une position
Voici le critère pour clôturer une position
et voilà ce qu'on obtient :
Non ! Vous ne pouvez pas toucher aux fonctions de la bibliothèque standard ! Dima interdit :-))
Pourquoi faites-vous une blague ici ? S'il y a une erreur, vous devez soit la signaler à Servicedesk, soit faire votre propre copie du fichier.
Je ne comprends pas ce que j'ai fait de mal. Pour une raison quelconque, la position ne se ferme pas comme je l'avais prévu ?
Voici le critère d'ouverture d'une position
Voici le critère pour clôturer une position
et voilà ce qu'on obtient :
Et à quelle fréquence le critère de fermeture est-il vérifié ? Pas par le bar par hasard ?
Et à quelle fréquence le critère de fermeture est-il vérifié ? Pas par des bars par hasard ?
Je ne comprends pas bien l'essentiel de la question. Modèle de test du cours d'ouverture (méthode rapide sur barres formées)
J'ai besoin de retirer de l'argent de WMZ à QIWI. Je cherche des personnes pour coopérer. Je suis prêt à prendre une commission d'environ 5%.