Fonctions utiles de KimIV - page 3

 
KimIV:

Fonction ExistOrders().

Renvoie un indicateur de l'existence d'une commande. ...

J'ai fait (pour moi-même) "revenir" le nombre de commandes. Il fait d'emblée d'une pierre deux coups (pas besoin d'écrire 2 fonctions) - si > 0, l'ordre existe + on peut analyser ... S'il y a des "trous dans la grille", déclenchement de "renversements", etc. (Bien que la fonction soit trop longue à fonctionner. (Il est vrai que la fonction prend plus de temps à s'exécuter, ce qui n'est pas justifié dans le seul but d'énoncer).

De plus, il me semble que c'est visuellement plus intuitif et que, après avoir assigné une variable, vous pouvez l'utiliser plus loin.

... (ExistOrders("", OP_BUYLIMIT)+ExistOrders("", OP_SELLLIMIT)) > 0 ...

que ...

... (ExistOrders("", OP_BUYLIMIT) || ExistOrders("", OP_SELLLIMIT)) ...
 
SergNF писал (а):
J'ai fait (pour moi-même) un "retour" du nombre de commandes.
Il y aura une fonction NumberOfOrders() plus tard.
 
KimIV:
zhuki a écrit (a) :

Montrez votre version des délais entre les opérations commerciales

Je ne fais pas de délais entre les opérations commerciales. C'est-à-dire que si je dois passer deux ordres ou plus, j'effectue ces transactions sans pause entre elles. Cependant, entre les tentatives de transaction, qui doivent être répétées en cas d'erreur d'accès au serveur, je fais une pause selon les recommandations des développeurs de MT4. À titre d'exemple, vous pouvez voir comment ces pauses sont mises en œuvre dans ma fonction SetOrder() pour le trading en ligne. Des pauses différentes sont effectuées pour les différentes erreurs renvoyées par le serveur de négociation.



Cette fonction SetOrder() est utilisée pour définir les ordres en attente. Il est recommandé de l'utiliser pour le trading en ligne sur des comptes démo et réels.


Si plus de 20 EAs sont en train de négocier, l'erreur 146 se produit toujours. La fonction ne permet de résoudre le problème que pour quelques (2-4) EA, mais, en principe, un délai fixe ne résout pas le problème...
Lorsque l'on négocie avec 20 Expert Advisors ou plus, il est nécessaire de faire de l'arbitrage, au moins en utilisant le protocole Ethernet... Chaque conseiller expert pourra alors entrer sur le marché lorsqu'il recevra un signal.
 
Igor, s'il te plaît, "offre-moi" les fonctions de clôture et de modification des commandes. ;-)
 
Lukyanov:
Igor, s'il vous plaît, "traitez"-moi avec des fonctions pour fermer et modifier les ordres. ;-)

Oui, certainement... Mais je vais d'abord terminer avec la fonction SetOrder. J'attends maintenant l'ouverture des transactions pour donner plus d'exemples de l'utilisation de cette fonction avec les enregistrements du protocole. Le script de test est déjà prêt, mais il doit être testé en ligne.

Prévoyez de publier les fonctions par ordre alphabétique :
- Supprimer les commandes
- ExistOrdersByLot
- GetLotLastOrder
- GetOrderOpenPrice
- IndexByTicket
- Modifier la commande
- Nombre de commandes
- SelectByTicket
- SelectByTicketFromHistory (Sélection par billet)

Vous (visiteurs du fil) pouvez adapter la séquence de publication à vos souhaits. Mais je vais tout d'abord examiner l'utilisation logique des fonctions, car beaucoup d'entre elles sont liées les unes aux autres. En d'autres termes, les premières à être publiées seront les fonctions qui peuvent être utilisées pour appliquer d'autres fonctions, placées plus tard.

 

Igor, tu fais du bon travail !

Cependant... avec tant de bagages, et le forum et le livre, la référence et la kodobase.
J'ai encore des questions brûlantes qui sont parfois embarrassantes à poser.
(Heureusement, je suis une nunuche, et ne le cache pas ... mais j'apprends encore ... :))

Et les questions exactement dans ces bagatelles et nuances, qui vous permettent de connecter des morceaux de code
...plus précisément, de faire en sorte que les blocs (modules) du programme soient interconnectés...

Je comprends, et je pèche souvent moi-même quand la question comment ?
La réponse est au mieux : oui...
Par exemple, le trailing stop. Et quand on vous demande si vous pouvez utiliser votre propre TS
Lorsque vous demandez si vous pouvez utiliser votre propre TS, la réponse sera au mieux : dans 100% des cas oui, dans 90% des cas ajoutez votre propre TS, dans 80% des cas demandez lequel vous allez utiliser :))))
etc... dans l'ordre décroissant...
Et comment exactement, lettre par lettre, hélas, ce n'est pas toujours le cas.

J'attends donc avec impatience les messages décrivant les fonctions de modification,
et peut-être une application plus détaillée de ceux-ci dans la pratique...

 
klot писал (а):
Lorsque vous négociez avec 20 EA ou plus, vous devez faire de l'arbitrage, au moins en utilisant le protocole Ethernet... Ensuite, chaque conseiller expert peut entrer sur le marché lorsqu'il reçoit un signal.
Qu'entendez-vous par "arbitrage"?
 
kombat писал (а):
Et les questions sont dans ces bagatelles et ces nuances, qui vous permettent de connecter des morceaux de code
Plus précisément, assurer l'interconnexion des blocs (modules) du programme...

En ce qui concerne mes fonctions, je répondrai à toutes les questions. Si je peux :-) ... C'est le but de ce fil de discussion. C'est-à-dire que vous pouvez poser des questions ici à partir d'autres fils de discussion où j'ai affiché mes fonctions sans donner d'explications détaillées. N'hésitez donc pas à le faire. C'est un sujet que je compte garder longtemps. J'ai prévu 4 mois pour la seule publication des articles. Plus de réponses aux questions...

kombat a écrit (a) :
Donc moi aussi je vais attendre avec impatience les posts avec la description des fonctions de modification,
et peut-être une application plus détaillée de ceux-ci dans la pratique...
La fonction ModifyOrder est universelle. Elle s'applique aussi bien aux ordres qu'aux positions. Je vais penser à l'intégrer dans le thème dès que possible.
 
KimIV:
klot a écrit :

Lorsque vous tradez avec 20 Expert Advisors ou plus, vous devriez faire de l'arbitrage, au moins en utilisant le protocole Ethernet... Ensuite, chaque conseiller expert sera en mesure d'entrer sur le marché lorsqu'un signal est reçu.
Qu'entendez-vous par "arbitrage"?

Bonjour !
Par "arbitrage", j'entends la fourniture d'un accès garanti au flux de négociation à de nombreux conseillers experts travaillant simultanément. J'ai été confronté à ce problème il y a longtemps, et je suis arrivé à la conclusion qu'il est préférable d'utiliser l'accès multiple avec détection de collision du protocole Ethernet.
L'essentiel est simple. Nous vérifions si le flux commercial est occupé. Si le flux est occupé, nous générons une pause aléatoire (à partir de 1 seconde). Si le flux commercial est libre, nous "envoyons" un ordre immédiatement. Lorsque vous négociez en utilisant plusieurs conseillers experts, chaque conseiller expert aura sa propre pause aléatoire et les conseillers experts occuperont le fil de négociation à tour de rôle. Il n'y aura pas de conflits entre les experts.
Par exemple :
if( IsTradeContextBusy() )  Sleep(MathRand()+1000);
 
Si 10 experts attendent la libération d'un flux commercial (chacun dans son propre flux indépendant), que peut-il se passer si par hasard au moins 2 coïncident.
Je calcule et utilise d'autres principes. Si un fil de discussion est occupé par quelqu'un, les EA restantes ne fonctionnent tout simplement pas (retour) et ceci est vérifié au début d'une EA (pourquoi l'analyser si on ne peut rien faire de toute façon).
Je ne pense pas, merci.