Questions des débutants MQL5 MT5 MetaTrader 5 - page 727
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
Pouvez-vous me dire comment sélectionner un objet lors de sa création, afin qu'il ne perde pas sa sélection et ne se sélectionne pas lui-même lorsque l'utilisateur le désélectionne. C'était facile dans le quatrième, mais ça ne marche pas dans le cinquième.
C'était le cas avant, et ça marchait très bien :
if(ObjectFind(chart_ID,nm)!=0) {
ObjectCreate(chart_ID,nm,OBJ_HLINE,0,0,0);
ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTED,sel);
...
}
ObjectSetDouble(chart_ID,nm,OBJPROP_PRICE,p);
}
Comme vous pouvez le voir, lors de la création, nous pouvons sélectionner ou non l'objet en cours de création à la fois et il ne changera plus et il n'y aura plus de référence à celui-ci, mais cela ne fonctionne pas dans le cinquième, il le crée sans sélection.
Comment faire pour que mql5 permette de sélectionner l'objet à la création puis de le gérer manuellement en cas de besoin - sélectionner/non sélectionner
C'est le cas, mais l'icône ne se démarque pas.
if(ObjectFind(0,nm)!=0) {
ObjectCreate(0,nm,type==0?OBJ_ARROW_BUY:OBJ_ARROW_SELL,0,0,0);
ObjectSetInteger(0,nm,OBJPROP_COLOR,col);
ObjectSetInteger(0,nm,OBJPROP_SELECTED,true);
ObjectSetInteger(0,nm,OBJPROP_SELECTABLE,true);
ObjectSetInteger(0,nm,OBJPROP_HIDDEN,false);
ObjectSetString(0,nm,OBJPROP_TOOLTIP,tooltxt);
}
ObjectSetDouble(0,nm,OBJPROP_PRICE,p);
ObjectSetInteger(0,nm,OBJPROP_TIME,t);
}
C'est le cas, mais l'icône n'est pas mise en évidence.
if(ObjectFind(0,nm)!=0) {
ObjectCreate(0,nm,type==0?OBJ_ARROW_BUY:OBJ_ARROW_SELL,0,0,0);
ObjectSetInteger(0,nm,OBJPROP_COLOR,col);
ObjectSetInteger(0,nm,OBJPROP_SELECTED,true);
ObjectSetInteger(0,nm,OBJPROP_SELECTABLE,true);
ObjectSetInteger(0,nm,OBJPROP_HIDDEN,false);
ObjectSetString(0,nm,OBJPROP_TOOLTIP,tooltxt);
}
ObjectSetDouble(0,nm,OBJPROP_PRICE,p);
ObjectSetInteger(0,nm,OBJPROP_TIME,t);
}
Tout est mis en évidence :
Tout se démarque :
J'ai remarqué une caractéristique étrange, si vous le paramétrez de cette façon, les lignes ne sont pas mises en évidence lorsque vous créez
ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTABLE,true);
Mais si c'est l'inverse, il n'y a pas de problème de sélection :
ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTED,sel);
Pour une raison quelconque, le remplacement des sommets modifie la somme ?
J'ai remarqué une caractéristique étrange, si vous le configurez de cette façon, les lignes ne sont pas mises en évidence lorsque vous créez
ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTABLE,true);
Mais si vous faites le contraire, alors il n'y a pas de problème de sélection :
ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTED,sel);
Pour une raison quelconque, le remplacement des sommets modifie la somme ?
Apparemment, quand
ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTED,sel) ;
dernière commande, le graphique est mis à jour
J'ai remarqué une caractéristique étrange, si vous le paramétrez de cette façon, les lignes ne sont pas mises en évidence lorsque vous créez
ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTABLE,true);
Mais si vous faites le contraire, alors il n'y a pas de problème de sélection :
ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTED,sel);
Pour une raison quelconque, le remplacement des sommets modifie la somme ?
Ensuite, vous le sélectionnez (mais l'objet n'est pas sélectionnable), par conséquent, rien n'est sélectionné.
Ensuite, vous le définissez comme sélectionnable. Mais il est "trop tard pour boire le borjomi" ...
Voici donc le code complet :
string tooltxt="",bool sel=false,bool back=false) {
if(ObjectFind(chart_ID,nm)<0) {
ObjectCreate(chart_ID,nm,OBJ_VLINE,0,tm,0);
ObjectSetInteger(chart_ID,nm,OBJPROP_TIME,tm);
ObjectSetInteger(chart_ID,nm,OBJPROP_BACK,back);
ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTABLE,true);
ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTED,sel);
// ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTABLE,true);
ObjectSetString(chart_ID,nm,OBJPROP_TOOLTIP,tooltxt);
ObjectSetInteger(chart_ID,nm,OBJPROP_COLOR,cl);
ObjectSetInteger(chart_ID,nm,OBJPROP_WIDTH,wd);
ObjectSetInteger(chart_ID,nm,OBJPROP_STYLE,st);
}
}
Oui, j'ai vérifié deux fois sur tous les types d'objets, et vous devez mettre"SELECTABLE" d'abord et ensuite"SELECTED".
Merci pour votre participation et votre aide à la résolution de ce problème !
Puis-je suggérer 1. d'ajouter des indicateurs personnalisés dans 1 bloc ? Si oui, comment dois-je m'y prendre ?
2. est-il possible de corriger le code de manière à ce que les transactions soient ouvertes dans les deux sens (actuellement, par exemple, si une transaction d'achat est ouverte, la transaction de vente n'est pas ouverte tant que la transaction d'achat n'est pas fermée) ?