[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 409
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
Lorsque vous ouvrez et mettez à jour le graphique, une demande de nouvelles données est envoyée au serveur. Certaines sociétés de courtage cupides préfèrent dépenser leur argent dans leur propre poche plutôt que dans des serveurs plus puissants et un canal plus large. Ils doivent limiter le nombre de requêtes provenant du terminal afin qu'un serveur faible ne soit pas "bloqué". MRC n'a que 2000 demandes par jour. C'est 10 fois moins que le nombre de leurs instruments multiplié par le nombre de TF, sans compter les demandes de transaction.
Les inclusions dans MQL4 aident à rationaliser le code. Par exemple, voici à quoi ressemble un indicateur pour 3000 lignes dans mon code.
Le fait est que j'ai vu des bibliothèques, et il est mentionné dans la documentation, que les inludes sont généralement placés tout en haut du code, là où les variables globales sont déclarées. S'il y a des fonctions dans les inludes, il semble étrange de penser qu'à un endroit où sont déclarées des variables globales, il y aura en fait une fonction à cet endroit, et alternativement, une sorte de variables. Ce n'est pas comme ça que le code est écrit. Si les variables utilisées dans le conseiller expert et les variables personnalisées externes sont déclarées en haut, personne ne met de fonctions à côté d'elles ! Mais ils placent des inludes avec des fonctions, et c'est considéré comme normal, d'après ce que je comprends. C'est ce qui me perturbe le plus ici.
Cela ne semble pas logique...
D'autre part, si un inline est placé, quelque part. à la place de plusieurs fonctions, qui sont responsables de l'obtention, disons, d'un signal de commerce pour un certain attribut, ce serait une chose logique et lisible.
Malheureusement, le compilateur ne permet pas à une inclusion d'être utilisée plus d'une fois dans un module. Il s'agit généralement d'un moyen d'économiser sur le code répétitif.
Bon après-midi à tous.
Étude des fonctions MarketInfo ( ) et Print( )
Voici un code simple utilisant ces fonctions
Testeur, TF 60 min.
La requête du graphique ressemble à la requête CopyRates ArrayCopySeries et non à la requête RefreshRates. CopyRates est la seule fonction non commerciale qui fait bouger le serveur.
Vérifié RefreshRates(). Si cet Expert Advisor est exécuté, par exemple, sur l'EURUSD, et qu'un autre outil dont la fenêtre n'a pas été ouverte depuis longtemps est inséré dans les paramètres (de sorte que l'historique ne soit pas là), l'historique apparaît.
Ainsi, RefreshRates() fait référence au serveur et télécharge l'historique. Par conséquent, il est nécessaire de contrôler l'arrivée de l'histoire.
Le support indique qu'aucune des fonctions ne fait directement référence au serveur. Tout se fait par le biais du terminal :-).
Si vous utilisez GetProfitFromDateInCurrency() (original - ceci est IMPORTANT : je ne sais pas ce que vous avez pu obtenir dans votre version), alors la fonction doit être appelée comme ceci :
et la fonction renverra les bénéfices sur les ordres fermés depuis le début de la journée en cours.
Et vous pouvez attraper toutes les choses stupides dans le code en utilisant Print().
ça ne marche pas. Il montre tous les bénéfices disponibles sur les transactions pour l'ensemble de l'historique.
Voici la fonction originale, dans laquelle je n'ai rien changé, bien sûr.
voici son appel et son impression
Vérifié RefreshRates(). Si cet Expert Advisor est exécuté, par exemple, sur l'EURUSD, et qu'un autre outil dont la fenêtre n'a pas été ouverte depuis longtemps est inséré dans les paramètres (de sorte que l'historique ne soit pas là), l'historique apparaît.
Ainsi, toujours RefreshRates() fait référence au serveur et remplit l'historique. Par conséquent, il est nécessaire de contrôler l'arrivée de l'histoire.
Le support indique qu'aucune des fonctions ne fait directement référence au serveur. Donc, tout se fait par le terminal :-)
Vadim, j'ai exécuté votre script sur un terminal sur lequel je n'ai jamais ouvert d'instruments à part les majors et les crosses avec le yen. Bref, voici une capture d'écran :
Rien n'est pompé car le tableau des données du marché est vide, à en juger par les commentaires...
Vadim, j'ai exécuté votre script sur un terminal sur lequel je n'ai jamais ouvert d'instruments à part les majors et les crosses avec le yen. Bref, voici une capture d'écran :
Rien n'est pompé, car le tableau des données du marché est vide, à en juger par les commentaires...
Oui. Il n'a pas non plus remarqué qu'il a MarketInfo() dans son Expert Advisor et pas seulement RefreshRates().
Vérifié RefreshRates(). Si cet Expert Advisor est exécuté, par exemple, sur l'EURUSD, et qu'un autre outil dont la fenêtre n'a pas été ouverte depuis longtemps est inséré dans les paramètres (de sorte que l'historique ne soit pas là), l'historique apparaît.
Ainsi, toujours RefreshRates() fait référence au serveur et remplit l'historique. Par conséquent, il est nécessaire de contrôler l'arrivée de l'histoire.
Le support indique qu'aucune des fonctions ne fait directement référence au serveur. Donc, tout se fait par le terminal :-)
Le niveau d'imagination est impressionnant. Pourquoi les données n'apparaissent-elles que pour certains symboles (qui n'ont pas été ouverts), et pas pour tous dans la revue de marché ? Comment la fonction RefreshRates() a-t-elle su que certains symboles devaient être mis à jour et d'autres non ?
Junko, arrête de divaguer.
ne fonctionne pas. Produit tous les profits disponibles sur les transactions dans l'ensemble de l'historique.
Voici la fonction originale et je n'y ai rien changé, bien sûr.
Voici son appel et son impression
Donc tout est correct. Vous "lisez" la fonction ligne par ligne et comprenez comment elle fonctionne, si vous êtes trop ennuyé pour l'écrire vous-même, et tout se met en place...
Vous avez un paramètre de fonction :
est l'heure d'ouverture de la dernière barre du jour, c'est-à-dire que toutes les positions qui sont fermées avant l'ouverture de la barre du jour actuel seront calculées et additionnées ! Est-ce que ça a un sens ? Donc, fixez une autre barre, qui est requise ou autre. Mais vous devez voir par vous-même.
Oui. Il n'a pas non plus remarqué qu'il a MarketInfo() dans son Expert Advisor, et pas seulement RefreshRates().
Ainsi que toutes les fonctions :
DoubleToStr(iOpen(sTool, 0, i), Digits), ",
DoubleToStr(iLow(sTool, 0, i), Digits), ",
DoubleToStr(iHigh(sTool, 0, i), Chiffres), " ",
DoubleToStr(iClose(sTool, 0, i), Chiffres), ",
DoubleToStr(iVolume(sTool, 0, i), 0), "\n") ;
Naturellement, les données seront mises à jour.
Je suis impressionné par le niveau de fantaisie. Pourquoi les données ne sont disponibles que pour certains personnages (qui n'ont pas été ouverts), et pas pour tous dans la revue de marché ? Comment la fonction RefreshRates() a-t-elle su que certains symboles devaient être mis à jour et d'autres non ?
Junko, arrête de délirer.
Dmitry, ne nous disputons pas entre nous. Il vaut mieux s'entraider, car vous et Vadim avez eu tellement de désaccords ces derniers temps. Je me suis ennuyé dans mes pensées pendant quelques jours, je n'ai pas visité le fil de discussion, et puis, comme d'habitude, je suis allé tout regarder. Pour être honnête, c'était drôle à lire, vraiment drôle ! Il y a une telle escarmouche, et de telles discussions et congrès que je me demande juste :) Des phrases et des mots parfois abscons, mais en fait complètement absurdes. Je ne jugerai personne, bien que je sois loin d'être un penseur avancé, moi-même devant encore apprendre à apprendre (dans certains endroits à nager), puis comprendre et voir clairement que le débat a atteint l'absurdité totale.
Il semble que ce soit un rassemblement de pros, sinon je ne le dirai pas. Je ne peux pas en dire autrement de vous, car je vois que chacun comprend ce qu'il fait. Mais ce qui est intéressant, c'est que les pros ont parfois de telles réactions excessives lorsqu'ils ne veulent pas admettre leurs erreurs. Mais nous apprenons de nos erreurs ! Il n'y a pas de quoi avoir honte. Ainsi, si quelqu'un a commis une erreur, il n'est pas nécessaire de s'écarter du sujet, mais plutôt d'avouer. Pour des dizaines de pages de déchets de programmeurs se transformant en personnalités, ce n'est en quelque sorte pas une option. Le but d'au moins cette branche ou ce forum n'est pas de se chier dessus de la tête aux pieds, mais de s'améliorer en programmation et de partager nos réflexions sur le sujet. Alors, vivons ensemble. Assez de chamailleries.