Besoin d'aide

 

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É

Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Информация об инструменте - Состояние окружения - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Sergey Korsunov:

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 Joindre le fichier.

 
ok
Dossiers :
Test_3.mq4  7 kb
 
Sergey Korsunov:

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
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
a007 #:

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 ?

 
Fast235 #:

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
.

 
Sergey Korsunov #:

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).

 
Fast235 #:

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é.

Je ne comprends pratiquement pas le langage (
J'ai écrit mon code purement sur les exemples du web
Aidez-moi à mettre Sleep() dans mon code

 
Sergey Korsunov #:

Je n'ai presque aucune connaissance du langage (
a écrit le code purement à partir d'exemples sur le web
Aide insérer Sleep() dans mon code

Après l'envoi de l'ordre et la mise en sommeil (50) ;

si cela n'aide pas 50 augmenter à 100-200

 
Fast235 #:

après OrderSend et mettre Sleep(50) ;

Si cela ne fonctionne pas, passez à 50, puis à 100-200.

n'a pas aidé ((

 
Sergey Korsunov #:

n'a pas aidé ((

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);
}