Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 383

 
clubsmi:

Comment calculer les pourcentages dans MQL4 ?

par exemple x=10+3% comment l'écrire de manière programmatique ?

Je ne le trouve pas dans le livre de référence.



x=10*1.03
 
r772ra:


x=10*1.03



ok ! mais je ne vais pas les recalculer à chaque fois, j'ai besoin d'une fonction qui calcule les pourcentages par elle-même

y=3 ; //le nombre change à chaque tic.

x=10+yP ; // au lieu de P vous avez besoin d'un pourcentage. je ne peux pas l'écrire en mql

 
if(Line_7 > Lines_1 && Lines_1 > Line_6)
{
OrderSend(Symbol(),OP_BUY,Lots_Typ,Ask,5,0,0);
}
if(AccountProfit() > 50)
{ 
OrderClose(Symbol(),5,Ask,0);
}
Chaîne de codes logiques :

1 Si la ligne 7 est au-dessus de la ligne 1, avec la ligne 1 au-dessus de la ligne 6,
2 puis
3 un ordre d'achat avec Lots_Typ volume, slippage possible de 5 pips, sans SL et TP, au prix de clôture est ouvert.

1 Si le bénéfice potentiel de ce compte est supérieur à 50 $,
2 puis
3 tous les ordres sont fermés, quelles que soient leurs propriétés (volume, achat/vente, ...).

La chaîne logique est correctement alignée, mais le code de la chaîne logique ne l'est pas.

OrderClose(Symbol(),5,Ask,0);
L'erreur se situe ici.
Si nous construisons une chaîne logique, par rapport au code ci-dessus, nous obtenons :
Clôture de 5 lots d'un ordre avec un prix de clôture et un slippage possible de 0 pips.

Comment le corriger ? Veuillez me conseiller.
 
clubsmi:



ok ! je ne peux pas les recalculer à chaque fois, j'ai besoin d'une fonction qui calcule les pourcentages par elle-même

y=3 ; // le nombre change constamment à chaque tic.

x=10+yP ; // nous avons besoin de pourcentage au lieu de P. Je ne peux pas l'écrire en mql.

par rapport à quoi ?
 
clubsmi:



ok ! je ne peux pas les recalculer à chaque fois, j'ai besoin d'une fonction qui calcule les pourcentages par elle-même

y=3 ; // le nombre change constamment à chaque tic.

x=10+yP ; // au lieu de P nous avons besoin de pourcentage.

//+----------------------------------------------------------------------------+
double Percent(double x, double y) {return(x*0.01*y);}
//+----------------------------------------------------------------------------+

x - nombre, y - pourcentage nécessaire

passer le nombre x et le pourcentage souhaité de celui-ci à y, la sortie est le pourcentage y du nombre x

 
Link_x:
Chaîne de codes logiques :

1 Si la ligne 7 est au-dessus de la ligne 1, avec la ligne 1 au-dessus de la ligne 6,
2 puis
3 un ordre d'achat est ouvert avec le volume Lots_Typ, slippage possible de 5 points, sans SL et TP, au prix de clôture.

1 Si le profit potentiel de ce compte est supérieur à 50 $,
2 puis
3 tous les ordres seront fermés, quelles que soient leurs propriétés (volume, achat/vente, ...).

La chaîne logique est correcte, mais le code par chaîne logique ne l'est pas.

L'erreur se situe ici.
Si nous construisons une chaîne logique, par rapport au code ci-dessus, nous obtenons :
Clôture de 5 lots d'un ordre avec un prix de clôture et un slippage possible de 0 pips.

Comment le corriger ? Veuillez me conseiller.

Cher Monsieur, lisez attentivement la documentation,

Plus précisément

Le bool OrderClose( int ticket, double lots, double prix, int slippage, couleur Color=CLR_NONE)
Fermeture du poste. Renvoie VRAI si la fonction s'est terminée avec succès. Renvoie FALSE si la fonction échoue. Pour obtenir des informations sur l'erreur, appelez la fonction GetLastError().
Paramètres :
billet - Numéro de série unique de la commande.
lots - Nombre de lots à fermer.
prix - Le prix de clôture.
glissement - La valeur du slippage maximum en pips.
Couleur - Couleur de la flèche de fermeture sur le graphique. Si le paramètre est absent ou si sa valeur est CLR_NONE, la flèche n'apparaît pas sur le graphique.
Exemple :
 si(iRSI(NULL,0,14,PRICE_CLOSE,0)>75) { OrderClose(order_id,1,Ask,3,Red) ; return(0) ; }

 
r772ra:

Cher Monsieur, lisez attentivement la documentation,

spécifiquement

Le bool OrderClose( int ticket, double lots, double prix, int slippage, couleur Color=CLR_NONE)
Fermeture du poste. Renvoie VRAI si la fonction s'est terminée avec succès. Renvoie FALSE si la fonction échoue. Pour obtenir des informations sur l'erreur, appelez la fonction GetLastError().
Paramètres :
billet - Numéro de série unique de la commande.
lots - Nombre de lots à fermer.
prix - Le prix de clôture.
glissement - La valeur du slippage maximum en pips.
Couleur - Couleur de la flèche de fermeture sur le graphique. Si le paramètre est absent ou si sa valeur est CLR_NONE, la flèche n'apparaît pas sur le graphique.
Exemple :

Je sais tout ça.
Comment faire en sorte que tous les ordres soient fermés, quelles que soient leurs caractéristiques ?
 
Link_x:
Je sais tout ça.
Comment faire en sorte que tous les ordres soient fermés, quelles que soient leurs caractéristiques ?

Tu sais, tant mieux pour toi,

OrderClose(Symbol(),5,Ask,0) //зто твое

OrderClose(order_id,1,Ask,3,Red); // А зто пример из документации

// Найди отличие
 
artmedia70:

x - nombre, y - pourcentage requis

passer le nombre x et le pourcentage souhaité y, la sortie est le pourcentage y du nombre x



Juste ce dont j'avais besoin, merci beaucoup... C'est si facile, j'y ai pensé pendant une demi-journée ! Merci encore !

 
r772ra:

Tu sais, tant mieux pour toi,


Dans mon exemple : numéro d'ordre aléatoire, volume 5, au prix de clôture, avec slippage 0, sans flèche.
Dans l'exemple du document : calcul du numéro d'ordre par order_id, le volume est de 1, par le prix de clôture, avec slippage 3, la flèche est rouge.

1 il y a un calcul d'order_id - pas de calcul d'order_number
2 volume (1) - volume (5)
3 slippage (3) - slippage (0)
4 flèche rouge - pas de flèche

Différences trouvées.
Maintenant, revenons à la tâche.

Tâche 1
Écrivez un code qui fermera tous les ordres ouverts sans exception.

Mon raisonnement.
Il est possible d'écrire ce code, mais la question se pose : "Comment ?
1 - créer un code qui garde la trace de tous les ordres ouverts (volume total, numéro de groupe d'ordres, achat/vente, slippage autorisé).
2 - Créer un code qui ouvre les commandes et envoie des données au code qui surveille toutes ces commandes (une sorte de base de données est créée).
3 - Créez un code qui ferme tous les ordres sous certaines conditions et ne prend que les données inutilisées de la "base de données particulière".
Les données ne sont pas réutilisées.

Nous pourrions le faire de cette façon, mais je pense qu'il existe une autre variante, moins encombrante.
C'est pourquoi je demande "comment ?".
Raison: