Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1301

 
Igor Makanu:

tout doit être réparé.

Votre code recherche la première commande de l'historique des commandes avec le symbole et le magicien donnés.

puis compter le nombre d'ordres non rentables trouvés et multiplier à la puissance 2 ce nombre d'ordres

recherchez sur le forum"fonctions utiles de la MMT" et faites quelque chose comme ceci

- trouver le billet de la dernière commande pour notre symbole et notre magik

- obtenir OrderProfit() et OrderLots() à partir du ticket trouvé et multiplier par votre coefficient de martingale, si nécessaire

ZS : il existe peut-être une solution toute prête

Le problème est un peu différent, j'ai un lot flottant à chaque ouverture et je dois le multiplier par le coefficient.
Le lot du premier genou par exemple 0,07, et le deuxième peut être 0,04, après une perte le lot du troisième genou 0,05 et voici ce lot et besoin d'être multiplié par le coefficient 4.
Ma fonction calcule un lot flottant, il doit être multiplié par LotSize() * 2,4,8,16 etc.
 
Denis Pershin:
La tâche est un peu différente, j'ai un lot flottant à chaque ouverture et je dois le multiplier par un coefficient.
Le lot du premier genou est par exemple de 0,07, et le deuxième peut être de 0,04, après une perte le lot du troisième genou est de 0,05 et ce lot doit être multiplié par le coefficient 4.
Ma fonction calcule un lot flottant, il doit être multiplié par LotSize() * 2,4,8,16 etc.

tel

Si vous connaissez le lot de départ, vous pouvez utiliser le dernier ordre perdant pour vérifier son lot et calculer le nombre de genoux, et si l'ordre est bénéficiaire, vous recommencez avec le lot de départ.

apprenez à trouver le dernier ordre fermé avec votre magicien

Si le système de calcul des lots est très complexe - l'option d'un magicien + le numéro de genou pour les nouvelles commandes, vous pouvez également utiliser des commentaires, mais pas très fiable, mieux vaut utiliser plusieurs magiciens.


Votre code ne fait que passer les commandes - il ne voit rien, c'est pourquoi j'y ai prêté attention.

 
Igor Makanu:

comme ceci

Si vous connaissez le lot de départ, vous pouvez alors utiliser le dernier ordre perdant pour vérifier son lot et calculer le nombre de genoux, et si l'ordre est bénéficiaire, vous recommencez avec le lot de départ.

apprenez à trouver le dernier ordre fermé avec votre magicien

Si le système de calcul des lots est assez complexe - l'option d'un magicien + le numéro de genou pour les nouvelles commandes, vous pouvez également utiliser des commentaires, mais pas de manière fiable, mieux vaut utiliser plusieurs magiciens.


Votre code ne fait que passer les commandes - il ne voit rien, c'est pourquoi j'y ai prêté attention.

C'est là toute la difficulté : le lot de départ est inconnu et est calculé sur la base de n% des fonds propres.
Je ne voudrais pas utiliser le commentaire.
Maintenant le nombre de pertes successives est calculé dans le code et il est considéré comme correct mais je ne peux pas décider comment l'améliorer en utilisant des coefficients de multiplication de 2,4,8,16.
 
Denis Pershin:
Le code compte maintenant le nombre de pertes consécutives et compte correctement, mais je n'arrive pas à comprendre comment le faire avec un facteur de multiplication de 2,4,8,16.

pas bien

Mais si cela vous convient, essayez de corriger votre code de cette façon.

int c=1;
....
c*=2; // 1,2,4,8....
 
Igor Makanu:

mauvais

mais si cela vous convient, essayez de corriger votre code comme ceci

Il arrivera à la troisième multiplication : 3*2=6, et il lui faut déjà 8, et la quatrième sera 8, et il lui faut 16.

 

k = {1,2,4,8,16,......}

cn = k[c]

 
Vitaly Muzichenko:

Il obtiendra à la troisième multiplication : 3*2=6, et il a déjà besoin de 8, et à la quatrième multiplication il obtiendra 8, et il a besoin de 16.


void OnStart()
{
   int c = 1;
   for(int i = 1; i <= 5; i++)
   {
      c *= 2;
      printf("i = %i, c = %i",i,c);
   }
}

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 1, c = 2

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 2, c = 4

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 3, c = 8

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 4, c = 16

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 5, c = 32

Où est le 6 ?

ou qu'est-ce que c'est ?

 
Igor Makanu:


2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 1, c = 2

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 2, c = 4

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 3, c = 8

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 4, c = 16

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 5, c = 32

Où est le 6 ?

ou qu'est-ce que c'est ?

Oui, je me suis trompé.

 
MQ prévoit-il d'ajouter des indicateurs personnalisés à la plate-forme mobile ?
 
Igor Makanu:


2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 1, c = 2

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 2, c = 4

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 3, c = 8

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 4, c = 16

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 5, c = 32

Où est le 6 ?

ou ce qui est nécessaire ?

Merci, très utile)