Le problème est
Je ne connais pratiquement pas la langue, j'ai besoin d'automatiser l'ouverture des ordres pour quelques vp, j'ai sorti ce code simple (fichier joint), mais il s'est avéré être maladroit,
Selon le plan devrait ouvrir 6 vp, mais n'ouvre que 3 vp, mais parfois ouvre les 6, mais là encore ne fonctionne plus comme il le devrait (je pense que cela peut être dû au nombre de chiffres après la virgule, comme dans le bloc, où il n'y a pas de JPY, tout fonctionne bien.
Veuillez aider à résoudre ce problème.
Si je ne suis pas dur, j'ai besoin d'aide pour l'écrire afin que je puisse changer les transactions en Achat ou Vente seulement.
fichier : DANGER FILE REMOVED
Le fichier doit être joint en utilisant le bouton .
Le problème est
Je ne connais pratiquement pas le langage, j'ai besoin d'automatiser l'ouverture des ordres pour quelques vp, j'ai sorti ce code simple (fichier joint), mais il s'est avéré être maladroit,
Selon le plan devrait ouvrir 6 vp, mais n'ouvre que 3 vp, mais parfois ouvre tous les 6, mais ensuite encore cesse de fonctionner comme il se doit (je pense que cela peut être dû au nombre de décimales, comme dans un bloc sans JPY, tout fonctionne bien.
Veuillez aider à résoudre ce problème.
Et aussi, si ce n'est pas difficile prompt comment prescrire, qu'il était possible de changer l'ouverture des trades seulement Achat ou Vente.
Il existe un certain nombre de raisons qui vous empêchent d'ouvrir une commande. Supposons que, sur le premier tick, 3 ordres sont ouverts
Au tick suivant, au tout début du programme, if(OrdersTotal() >= OrderCount) return ; ceci sera retourné puisque le nombre d'ordres est supérieur à OrderCount, qui = 1.
Le reste du programme sera ignoré.
A en juger par ces lignes :
//| Copyright 2021, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2021, MetaQuotes Software Corp." #property link "https://www.mql5.com"
Ce programme a été développé par MetaQuotes Software Corp. Demandez-leur des conseils !
![Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5 Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5](https://c.mql5.com/36/50/otkroy-novie-vozmozhnosti-v-metatrader__7.png)
- www.mql5.com
Il existe un certain nombre de raisons qui empêchent l'ouverture d'une commande. Supposons qu'au premier tick, 3 ordres sont ouverts
Au tick suivant, au tout début du programme, if(OrdersTotal() >= OrderCount) return ; ceci sera retourné puisque le nombre d'ordres est supérieur à OrderCount, qui = 1.
Le reste du programme sera ignoré.
A en juger par ces lignes :
Le programme a été développé par MetaQuotes Software Corp. Veuillez les consulter !
Voulez-vous dire que des commandes supplémentaires sont ouvertes ?
Non, au contraire, vous avez besoin de 6 paires de devises différentes et seulement 3 sont ouvertes.
Et d'ailleurs, là où il n'y a pas de yen bullion, les 6 paires sont ouvertes, tant les principales que les croisées, là où il y a un yen bullion, seules 3 sont ouvertes
.
Non, au contraire, vous avez besoin de 6 paires de devises différentes et seulement 3 sont ouvertes.
Le plus simple est de mettre Sleep() après l'ouverture de chaque commande, le terminal n'a pas le temps de mettre à jour la quantité (pour des raisons de performance apparemment).
Essayez comme ça : plus court et plus précis. Si tu le découvres par toi-même, tu seras un coryphée de la programmation. Mettez votre curseur sur le mot et appuyez sur F1
//+------------------------------------------------------------------+ //| Test 3.mq4 | //+------------------------------------------------------------------+ #property strict extern double Lot = 0.01; extern int Slip = 3; extern int Magic = 777; string name[10]={"AUDJPY","CHFJPY","CADJPY","AUDCAD","AUDCHF","CADCHF"}; int cnt[6]; void OnTick() { ArrayInitialize(cnt, 0); // Обнуление счетчиков // Подсчет ордеров по каждому торговому инструменту for(int n=OrdersTotal()-1; n>=0; n--) { if(!OrderSelect(n,SELECT_BY_POS))continue; for(int k=0; k<6; k++) if(OrderSymbol()==name[k]) cnt[k]++; } // Открытие ордеров по каждому торговому инструменту for(int k=0; k<6; k++) if(!cnt[k]) int ticket = OrderSend(name[k],OP_BUY, Lot, MarketInfo(name[k],MODE_ASK), Slip, 0, 0, "", Magic); }
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Le problème est
Je ne connais pratiquement pas la langue, j'ai besoin d'automatiser l'ouverture des ordres pour quelques vp, j'ai sorti ce code simple (fichier joint), mais il s'est avéré être maladroit,
Selon le plan devrait ouvrir 6 vp, mais n'ouvre que 3 vp, mais parfois ouvre les 6, mais là encore ne fonctionne plus comme il le devrait (je pense que cela peut être dû au nombre de chiffres après la virgule, comme dans le bloc, où il n'y a pas de JPY, tout fonctionne bien.
Veuillez aider à résoudre ce problème.
Si je ne suis pas dur et que j'ai besoin de plus d'informations sur la façon de l'écrire, je peux changer les transactions en Achat ou Vente uniquement.
fichier : FICHIER DANGEREUX SUPPRIMÉ