[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 389

 
Snegovik:


Il existe des scripts qui ouvrent simultanément la vente d'un symbole sur le second achat.

Je suis intéressé par un script qui peut ouvrir simultanément une vente/achat sur 7-10 symboles, avec un volume spécifié pour chaque symbole, aux prix actuels.

Exemple :

vendre EURUSD 1

acheter GBPUSD 1.5

vendre USDCAD 1.2

acheter AUDUSD 1.1

acheter NZDUSD 2

acheter USDCHF 3

Le script MultiOrders est presque parfait, seulement il y a 5 champs pour les symboles.

De même. Comprenez ce script et vous, dans votre script, vous en sortirez encore mieux, et vous pourrez même ajouter des fonctionnalités supplémentaires.
 
snail09_1:
Est-ce difficile à vérifier, ou paresseux ? C'est plus facile de poser la question. Le prix de l'offre peut-il être nul ? C'est possible, si rien n'est vendu8-(
la question n'est pas de savoir si le terminal peut réinitialiser l'offre à un moment donné (l'expérience personnelle est intéressante)
 
YOUNGA:
Il ne s'agit pas de savoir si le terminal peut réinitialiser l'offre à un moment donné (l'expérience personnelle est intéressante).

Je n'en ai jamais vu. Avez-vous vu le zéro absolu sur le thermomètre ?

Eh bien, ça ne peut pas être le problème. Peut-être n'avez-vous personne à qui parler ?

 
snail09_1:
De même. Comprenez ce script et votre script sera encore meilleur, et vous pourrez même ajouter des fonctionnalités supplémentaires.


Je ne comprends pas bien comment écrire un fichier .dll.

si je comprends bien, la base du script se trouve dans ce fichier.

 
Les gars ! Dans le testeur de stratégie sur l'historique, le conseiller expert n'envoie pas d'informations au fichier, uniquement lors du trading en ligne. Quelle en est la raison et comment puis-je y remédier ? Je ne sais pas comment y remédier. Merci.
 
net:
Les gars ! Dans le testeur de stratégie sur l'historique, le conseiller expert n'envoie pas d'informations au fichier, uniquement lors du trading en ligne. Quelle en est la raison et comment puis-je y remédier ? Je ne sais pas comment y remédier. Merci.
Il l'enregistre uniquement dans le répertoire \MetaTrader 4 \Ntester \Nexperts \Nfiles.
 
Snegovik:


Je ne comprends pas bien comment écrire un fichier .dll.

Si je comprends bien, la base du script se trouve dans ce fichier.


Aucun script ne peut envoyer un ordre au serveur pour ouvrir plusieurs commandes à la fois. Vous devez en ouvrir un à la fois. La DLL qui vous est proposée crée simplement une fenêtre visuelle et fonctionne avec elle. Les outils MQL4 peuvent être suffisants pour votre tâche.
 

Voici ma fonction de calcul du lot (martin) :

double Lots()
 {
 //  double LotsArray[]={mode_1,mode_2,mode_3,mode_4,mode_5,mode_6};
 //  double LotsArray[]= {0.1,0.2,0.3,0.4,0.5,0.6};
   int LossCount = 0;
   double LotM=Lot;
   int total = OrdersHistoryTotal();
   for (int i = total-1; i >= 0; i--)
    {
      OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
       {
         if (OrderProfit() > 0)
          {
            LotM=LotsArray[0];
          }         
          else
           {
            LotM=LotsArray[LossCount+1];
            LossCount++;
           }
       }
    }
   return(LotM);
}

Ce sont les variables globales de cette fonction :

double Lot = 0.1;
extern double mode_1 = 0.1;
extern double mode_2 = 0.2;
extern double mode_3 = 0.4;
extern double mode_4 = 0.8;
extern double mode_5 = 1.6;
extern double mode_6 = 3.2;
double LotsArray[5];

Voici ce qui se passe dans int init()

 LotsArray[0] = mode_1;
 LotsArray[1] = mode_2;
 LotsArray[2] = mode_3;
 LotsArray[3] = mode_4;
 LotsArray[4] = mode_5;
 LotsArray[5] = mode_6;

Lors du test du conseiller expert, les erreurs suivantes sont affichées dans le journal du conseiller expert :

2012.09.19 23:14:22     2012.07.19 16:19  mmm2.1.1~ EURUSD.5,M5: ERROR BUYSTOP : 1.22443 SL:1.22377 TP:1.22506
2012.09.19 23:14:22     2012.07.19 16:19  mmm2.1.1~ EURUSD.5,M5: OrderSend error 4051
2012.09.19 23:14:22     2012.07.19 16:19  mmm2.1.1~ EURUSD.5,M5: invalid lots amount for OrderSend function
2012.09.19 23:14:22     2012.07.19 16:19  mmm2.1.1~ EURUSD.5,M5: Bid:1.22432 Ask:1.22438 avgSpread:0.00006  Commission rate:0.00003  Real avg. spread:0.00009  Lots:1.00   HIGH SPEED   MAX
2012.09.19 23:14:22     2012.07.19 16:19  mmm2.1.1~ EURUSD.5,M5: 2012.07.19 16:19 tick:514
2012.09.19 23:14:22     2012.07.19 16:19  mmm2.1.1~ EURUSD.5,M5: ERROR BUYSTOP : 1.22442 SL:1.22376 TP:1.22505
2012.09.19 23:14:22     2012.07.19 16:19  mmm2.1.1~ EURUSD.5,M5: OrderSend error 4051
2012.09.19 23:14:22     2012.07.19 16:19  mmm2.1.1~ EURUSD.5,M5: invalid lots amount for OrderSend function
2012.09.19 23:14:22     2012.07.19 16:19  mmm2.1.1~ EURUSD.5,M5: Bid:1.22431 Ask:1.22437 avgSpread:0.00006  Commission rate:0.00003  Real avg. spread:0.00009  Lots:1.00   HIGH SPEED   MAX
2012.09.19 23:14:22     2012.07.19 16:19  mmm2.1.1~ EURUSD.5,M5: 2012.07.19 16:19 tick:513

Y a-t-il un problème avec le code ? Ce que cela peut signifier ?

Ici https://docs.mql4.com/ru/runtime/errors je vois qu'il s'agit d'une erreur :

ERR_INVALID_FUNCTION_PARAMVALUE (4051)

C'est-à-dire que l'erreur est due à des paramètres erronés. Comme j'ai compris le mauvais lot. Mais je ne comprends pas ce qui ne va pas ici.

 
hoz:

Voici ma fonction de calcul du lot (martin) :

Ce sont les variables globales de cette fonction :

Voici ce qui se passe dans int init()

Lors du test du conseiller expert, les erreurs suivantes sont affichées dans le journal du conseiller expert :

Y a-t-il un problème avec le code ? Ce que cela peut signifier ?

Ici https://docs.mql4.com/ru/runtime/errors je vois qu'il s'agit d'une erreur :

ERR_INVALID_FUNCTION_PARAMVALUE (4051)

C'est-à-dire que l'erreur est due à des paramètres erronés. Comme j'ai compris le mauvais lot. Mais je ne comprends pas ce qui ne va pas ici.


double LotsArray[5] ; 5 à 6 correctes.
 
bonjour ! est-il possible de modifier un ordre une seule fois ? actuellement je modifie un ordre à chaque tick! je ne pense pas que cela soit correct ....
Raison: