Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 75
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
SELL_Lvl est le nombre de genoux (ordres) de la grille de vente etSELL_NoLossLevel est le niveau total (prix) de l'UC de ces ordres. Eh bien, l'idée est la suivante : nous avons besoin d'une ligne tracée au niveau d'une ligne d'achat et redessinée respectivement lorsque de nouvelles lignes sont ouvertes. Je ne sais pas comment faire.
Vous ne comprenez pas comment déterminer la ligne BU de toutes les commandes ?
Pouvez-vous me dire comment l'écrire pour économiser des ressources et obtenir des prix actualisés ?
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
if(OrderSymbol()==symb) {
if(OrderType()==OP_BUY) {
tk=OrderTicket();
SymbolInfoTick(OrderSymbol(),Last_Tick); <<<
ask=Last_Tick.ask;
bid=Last_Tick.bid;
...
ou comme ça ?
for(int i=OrdersTotal(); i>=0; i--) {
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
if(OrderSymbol()==symb) {
if(OrderType()==OP_BUY) {
tk=OrderTicket();
ask=Last_Tick.ask;
bid=Last_Tick.bid;
...
Pouvez-vous me dire comment l'écrire pour économiser des ressources et obtenir des prix actualisés ?
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
if(OrderSymbol()==symb) {
if(OrderType()==OP_BUY) {
tk=OrderTicket();
SymbolInfoTick(OrderSymbol(),Last_Tick); <<<
ask=Last_Tick.ask;
bid=Last_Tick.bid;
...
ou comme ça ?
for(int i=OrdersTotal(); i>=0; i--) {
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
if(OrderSymbol()==symb) {
if(OrderType()==OP_BUY) {
tk=OrderTicket();
ask=Last_Tick.ask;
bid=Last_Tick.bid;
...
Pouvez-vous me dire comment l'écrire pour économiser des ressources et obtenir des prix actualisés ?
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
if(OrderSymbol()==symb) {
if(OrderType()==OP_BUY) {
tk=OrderTicket();
SymbolInfoTick(OrderSymbol(),Last_Tick); <<<
ask=Last_Tick.ask;
bid=Last_Tick.bid;
...
ou comme ça ?
for(int i=OrdersTotal(); i>=0; i--) {
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
if(OrderSymbol()==symb) {
if(OrderType()==OP_BUY) {
tk=OrderTicket();
ask=Last_Tick.ask;
bid=Last_Tick.bid;
...
Je dirais que cela dépend de la taille de OrdersTotal() et de la probabilité de changements de prix pendant le cycle.
À mon avis, obtenir des données fraîches directement dans la boucle est plus correct.
Et je pense que les variables supplémentaires (mises en évidence dans le code) sont absolument inutiles.
Il existe un exemple dans la documentation.
Il serait probablement préférable de passer en revue les ordres dans la boucle et, à condition que l'ordre suivant soit inférieur au précédent, de le sélectionner pour continuer à travailler avec lui. Ainsi, lorsque nous sortons de la boucle, l 'ordre à supprimer est déjà sélectionné.
Ou bien, vous pouvez d'abord mémoriser sa position dans la liste des ordres, puis le sélectionner après avoir quitté la boucle en utilisant l'index mémorisé.
La première option est plus correcte. La deuxième devrait écrireSymbolInfoTick(symb,Last_Tick) ; <<<<.
Oui, je l'ai juste copié et je n'ai pas remarqué.
Je me demande siSymbolInfoTick est la bonne façon de le placer à l'intérieur de la boucle, s'il est nécessaire, ou s'il peut être placé avant la boucle. Il est utilisé en trailing stop, peut tirer une grille jusqu'à 50pc.
Oui, je l'ai juste copié et je n'ai pas remarqué.
Je me demande siSymbolInfoTick est la bonne façon de le placer à l'intérieur de la boucle, s'il est nécessaire, ou s'il peut être placé avant la boucle. Utilisé en trailing stop, peut tirer une grille jusqu'à 50pc.
Vous n'arrivez pas à trouver comment déterminer la ligne BU de toutes les commandes ?
Pour le trailing stop, il est bien sûr préférable de le faire une fois avant le cycle.
Je suis en train de le réécrire lentement pour 5. Je veux dire que le prix peut changer très rapidement et que le niveau peut être inférieur à la valeur stop-loss, ce qui entraînera une erreur. Je veux dire que le prix peut changer très rapidement et que le niveau sera inférieur au niveau d'arrêt autorisé, ce qui entraînera une erreur.
Je comprends que ce chapeau"SymbolInfoTick" est nécessaire pour obtenir les prix réels ?