La fonction ObjectFind() renvoie le numéro de la fenêtre principale. Et ce nombre est 0. D'autre part, 0 == false, il s'ensuit que si la fonction renvoie 0, elle renvoie toujours false. Bien sûr, je ne l'utiliserais pas car si la fonction renvoie -1, c'est-à-dire une erreur, on peut considérer que l'emplacement de l'objet n'est pas dans la fenêtre principale. En plus de cela, vous ne savez jamais quelles corrections seront apportées...
Alors ne discutez pas et n'étudiez pas comment faire...
La fonction ObjectFind() ne renvoie pas le numéro de la fenêtre principale. Il retournera le numéro de la fenêtre où l'objet a été trouvé (0, 1, 2...) ou -1 si l'objet n'existe pas.
Je me demande si "-1" est faux ou vrai.
Letype bool est utilisé pour stocker les valeurs booléennes true ou false, avec une représentation numérique de 1 ou 0 respectivement .
La fonction ObjectFind() ne renvoie pas le numéro de la fenêtre principale. C'est le numéro de la fenêtre où l'objet est trouvé (0,1,2...) ou -1 s'il n'y a pas d'objet.
Je parlais du cas spécifique où l'objet est situé dans la fenêtre principale. Ne discutez pas et n'apprenez pas à le faire...
La fonction ObjectFind() renvoie le numéro de la fenêtre principale. Et ce nombre est 0. D'autre part, 0 == false, il s'ensuit que si la fonction renvoie 0, elle renvoie toujours false. Bien sûr, je ne l'utiliserais pas car si la fonction renvoie -1, c'est-à-dire une erreur, on peut considérer que l'emplacement de l'objet n'est pas dans la fenêtre principale. En plus de cela, on ne sait jamais quelles corrections seront apportées...
Alors ne discutez pas et n'apprenez pas à le faire...
Je sais que vous ne devriez pas le faire, mais j'ai dû le faire pour des raisons esthétiques (== 0 dans toutes les conditions, c'est laid). Et je n'ai besoin que de l'objet dans la fenêtre principale.
Je sais que je ne devrais pas faire ça, mais je devais le faire pour des raisons esthétiques (== 0 dans toutes les conditions, c'est laid). Et je n'ai besoin que de l'objet dans la fenêtre principale.
Problème : Les lignes jaunes et grises ("Stop Sell" et "not allowed") sont constamment créées et clignotent lorsque le bouton est pressé sur le graphique. Et ObjectCreate() renvoie constamment true au lieu de false, c'est-à-dire qu'il crée comme dans une autre fenêtre, ce qui pourrait expliquer le scintillement... Mais la fenêtre n'est que la fenêtre principale et il n'y a pas d'anomalies avec la ligne verte ("Buy Stop") ainsi qu'avec la ligne rouge ("Stop Loss").
voidOnChartEvent(constint id, constlong &lparam, constdouble &dparam, conststring &sparam)
{
datetimestatic dt = 0;
doublestatic price = 0;
intstatic window = 0;
stringstatic line_name;
if(id==CHARTEVENT_OBJECT_CLICK){
...
//Нажатие на SO в зависимоти от расположения панели создаёт линиюif(sparam=="Button Stop Order"){
if(panel_position == 1 || panel_position == 2){
line_name = "Buy Stop";
CreateLine(line_name, clrGreen);
}
if(panel_position == 3 || panel_position == 4){
line_name = "Sell Stop";
CreateLine(line_name, clrYellow);
}
}
//Нажатие на линию удаляет её и создаёт краснуюif(sparam=="Buy Stop" || sparam=="Sell Stop"){
ObjectDelete(line_name);
line_name = "Stop Loss";
CreateLine(line_name, clrRed);
}
//Нажатие на красной линии удаляет её и отжимает кнопкуif(sparam=="Stop Loss"){
ObjectDelete(line_name);
button_name = "Button Stop Order";
ms=GetMicrosecondCount();
}
}
//Если кнопка SO нажата, то линия будет следовать за курсоромif(ObjectGetInteger(0,"Button Stop Order",OBJPROP_STATE)){
int x = (int)lparam;
int y = (int)dparam;
//Переведём координаты X, Y в дату и времяif(ChartXYToTimePrice(0,x,y,window,dt,price)){
//Линия меняет цвет с зелёного на желтыйif(price < Bid){
if(ObjectFind("Buy Stop") == window || ObjectFind("not allowed") == window){
ObjectDelete(line_name);
line_name = "Sell Stop";
CreateLine(line_name, clrYellow);
}
}
//Линия меняет цвет с желтого на зелёныйif(price > Ask){
if(ObjectFind("Sell Stop") == window || ObjectFind("not allowed") == window){
ObjectDelete(line_name);
line_name = "Buy Stop";
CreateLine(line_name, clrGreen);
}
}
//Линия меняет цвет на серый если в зоне спредаif(price > Bid && price < Ask){
if(ObjectFind("Buy Stop") == window || ObjectFind("Sell Stop") == window){
ObjectDelete(line_name);
line_name = "not allowed";
CreateLine(line_name, clrGray);
}
}
//Прикрепляем линию к курсоруif(id == CHARTEVENT_MOUSE_MOVE)
if(ObjectMove(0,line_name,0,0,price))
ChartRedraw(0);
}
}elseif(ObjectFind(line_name) == window) Print(ObjectDelete(line_name));
//Если нажать Esc то удалится линия и кнопка отожметсяif(id == CHARTEVENT_KEYDOWN && lparam == 27){
button_name = "Button Stop Order";
ms=GetMicrosecondCount();
}
}
//----------------------------------------------------------------------void CreateLine(conststring name, constcolor clr)
{
Print(ObjectCreate(0, name, OBJ_HLINE, 0,0,0));
ObjectSetInteger(0, name, OBJPROP_COLOR, clr);
ObjectSetInteger(0, name, OBJPROP_STYLE, 3);
}
s'il n'y a pas d'objet, vous obtenez "-1", c'est-à-dire vrai
J'ai essayé, je dois juste changer les noms des objets (inverser) pour que l'exception fonctionne. Mais de cette façon, aucune ligne n'est créée du tout.
MakarFX #: Je l'ai créé et vous aussi, seulement le prix est "0".
Oui en effet 8 pièces, mais ce n'est pas visible sur le graphique, le fait que le prix soit à 0 n'a pas d'importance, la ligne s'accroche toujours au curseur (le suit)
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Non Makar, ça ressemble à ça :
La fonction ObjectFind() renvoie le numéro de la fenêtre principale. Et ce nombre est 0. D'autre part, 0 == false, il s'ensuit que si la fonction renvoie 0, elle renvoie toujours false. Bien sûr, je ne l'utiliserais pas car si la fonction renvoie -1, c'est-à-dire une erreur, on peut considérer que l'emplacement de l'objet n'est pas dans la fenêtre principale. En plus de cela, vous ne savez jamais quelles corrections seront apportées...
Alors ne discutez pas et n'étudiez pas comment faire...
La fonction ObjectFind() ne renvoie pas le numéro de la fenêtre principale. Il retournera le numéro de la fenêtre où l'objet a été trouvé (0, 1, 2...) ou -1 si l'objet n'existe pas.
Je me demande si "-1" est faux ou vrai.
Letype bool est utilisé pour stocker les valeurs booléennes true ou false, avec une représentation numérique de 1 ou 0 respectivement .La fonction ObjectFind() ne renvoie pas le numéro de la fenêtre principale. C'est le numéro de la fenêtre où l'objet est trouvé (0,1,2...) ou -1 s'il n'y a pas d'objet.
Je parlais du cas spécifique où l'objet est situé dans la fenêtre principale. Ne discutez pas et n'apprenez pas à le faire...
MakarFX #:
Je me demande si "-1" est faux ou vrai ?
Le type bool est destiné à stocker les valeurs logiques true ou false, dont la représentation numérique est 1 ou 0, respectivement .faux est seulement 0. Tout le reste est vrai
faux est seulement 0. Tout le reste est vrai
Non Makar, ça ressemble à ça :
La fonction ObjectFind() renvoie le numéro de la fenêtre principale. Et ce nombre est 0. D'autre part, 0 == false, il s'ensuit que si la fonction renvoie 0, elle renvoie toujours false. Bien sûr, je ne l'utiliserais pas car si la fonction renvoie -1, c'est-à-dire une erreur, on peut considérer que l'emplacement de l'objet n'est pas dans la fenêtre principale. En plus de cela, on ne sait jamais quelles corrections seront apportées...
Alors ne discutez pas et n'apprenez pas à le faire...
Je sais que vous ne devriez pas le faire, mais j'ai dû le faire pour des raisons esthétiques (== 0 dans toutes les conditions, c'est laid). Et je n'ai besoin que de l'objet dans la fenêtre principale.
Je sais que je ne devrais pas faire ça, mais je devais le faire pour des raisons esthétiques (== 0 dans toutes les conditions, c'est laid). Et je n'ai besoin que de l'objet dans la fenêtre principale.
Ensuite, faites ce qui suit
s'il n'y a pas d'objet, vous obtiendrez "-1", c'est-à-dire vrai.
Problème : Les lignes jaunes et grises ("Stop Sell" et "not allowed") sont constamment créées et clignotent lorsque le bouton est pressé sur le graphique. Et ObjectCreate() renvoie constamment true au lieu de false, c'est-à-dire qu'il crée comme dans une autre fenêtre, ce qui pourrait expliquer le scintillement... Mais la fenêtre n'est que la fenêtre principale et il n'y a pas d'anomalies avec la ligne verte ("Buy Stop") ainsi qu'avec la ligne rouge ("Stop Loss").
Ensuite, faites ce qui suit
s'il n'y a pas d'objet, vous obtenez "-1", c'est-à-dire vrai
J'ai essayé, je dois juste changer les noms des objets (inverser) pour que l'exception fonctionne. Mais de cette façon, aucune ligne n'est créée du tout.
J'ai essayé, seulement vous devez changer le nom des objets. Mais cela ne crée aucune ligne du tout.
Je l'ai créé et vous aussi, seulement le prix est "0".