Questions des débutants MQL5 MT5 MetaTrader 5 - page 1317

 
Vladimir Karputov:

Voir les erreurs :

1. Toujours spécifier explicitement le symbole du graphique (oui, vous pouvez vous fier à la documentation, mais il est préférable de TOUJOURS le spécifier explicitement).

2. La chaîne n'a aucun sens - car preff+"hhh" ne sera jamais égal à Symbol()


Ajouté : c'est mieux d'avoir cette approche - toujours une ligne sur le graphique, il suffit de changer le prix de la ligne quand on change de graphique.

Si avertissement explicite : conversion implicite de 'string' en 'number'.

L'essence du problème est que la ligne n'est pas affichée là où elle a été créée.

Si je le crée sur l'outil au prix de 255, pourquoi est-il affiché à 255 lorsque je charge un autre outil avec le prix actuel de 310 ?

Veuillez m'indiquer comment sauvegarder la ligne et l'afficher à l'endroit où elle a été créée.
 
serg_V777:

S'il émet explicitement un avertissement : conversion implicite de 'chaîne' en 'nombre'.

L'essence du problème est que la ligne n'est pas affichée là où elle a été créée.

Si je le crée sur l'outil au prix de 255, pourquoi est-il affiché à 255 lorsque je charge un autre outil avec le prix actuel de 310 ?

Veuillez m'indiquer comment sauvegarder la ligne et l'afficher à l'endroit où elle a été créée.

Vous m'avez montré votre extrait de code - je vous ai donné votre extrait de code. Déclarez les variables et vous n'aurez pas d'erreurs.

Je ne comprends pas votre logique avec les lignes. Essayez de décrire vos actions en détail - et surtout POURQUOI vous devez le faire.


Dans votre code, je ne comprends pas pourquoiChartSymbol

 
Vladimir Karputov:

Vous m'avez montré un bout de code - je vous ai donné votre bout. Déclarez les variables et il n'y aura pas d'erreurs.

Je ne comprends pas votre logique avec les lignes. Essayez de décrire vos actions en détail - et surtout POURQUOI vous devez le faire.


Dans votre code, je ne comprends pas pourquoi j'ai besoin deChartSymbol.

void OnChartEvent(const int id,           // идентификатор события   
                  const long& lparam,     // параметр события типа long 
                  const double& dparam,   // параметр события типа double 
                  const string& sparam) { // параметр события типа string 
 
 
  preff=ChartSymbol( NULL);
  price=SymbolInfoDouble(Symbol(),SYMBOL_BIDLOW); 
 if(id == CHARTEVENT_OBJECT_CLICK && sparam == "dz_draw")// Нажатие кнопки   
  {   
   ObjectCreate(0,preff+"hhh",OBJ_HLINE,0,0,price) ;    
 ObjectSetInteger(0,preff+"hhh",OBJPROP_COLOR,clrBlack); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_STYLE,0); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_WIDTH,3); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_BACK,false); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_SELECTABLE,true); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_SELECTED,true); 
   ObjectSetInteger(0,"dz_draw"   ,OBJPROP_STATE,false);
   }
}

Je crée donc une ligne au prix de 277 sur le graphique Gazp.

Lorsque je le modifie dans la même fenêtre sur Sber, la ligne créée sur Gazp à 277 s'affiche...

Si je crée une ligne Sber à 310, j'obtiens deux lignes sur le graphique - l'une correcte (créée là où il le faut et ce qu'elle coûte) et la seconde fausse - ne provenant pas de ce graphique .....

En changeant d'outil et en créant des lignes dans la fourchette de prix de 200 à 400 et en revenant au graphique Gazp, je mélange les personnes et les chevaux :),

Mais j'ai besoin d'un seul (peut-être deux lignes horizontales), créé où et quand j'en ai besoin.

 
serg_V777:

Je crée donc une ligne à 277 sur le graphique Gazp...

Lorsque l'on change dans la même fenêtre sur Sber, la ligne créée sur Gazp à 277 s'affiche...

Si je crée également une ligne sur Sber à 310, j'obtiens deux lignes sur le graphique - une correcte (créée là où il faut et à ce qu'il faut) et la seconde incorrecte - ne provenant pas de ce graphique.....

En changeant d'outil et en créant des lignes dans la fourchette de prix de 200 à 400 et en revenant au graphique Gazp, je mélange les personnes et les chevaux :),

Mais c'est la seule dont j'ai besoin (peut-être quelques lignes horizontales supplémentaires), créée où et quand j'en ai besoin.

ChartSymbol

Lisez l'aide. Après l'aide, n'utilisez pas cet opérateur - vous n'en avez pas besoin.


Vous avez besoin de l'algorithme suivant : pour chaque caractère, enregistrer le prix. Le prix est stocké dans les variables globales du terminal (le nom de la variable globale est le nom du symbole). Ensuite, vous devez assurer le service de "CHARTEVENT_OBJECT_CHANGE" et"CHARTEVENT_OBJECT_DRAG" - et réenregistrer le prix dans des variables globales.

Il y a aussi beaucoup de nuances à résoudre : par exemple - il y a une variable globale et pas de ligne sur le graphique...

 
User_mt5:
Merci beaucoup. Vous m'avez vraiment aidé.

Et bien sûr, où cette fonctionnalité pourrait-elle se trouver sinon au milieu de la liste des indicateurs techniques).

Tu ne peux pas le faire sans être sarcastique ?

Vous ne semblez pas lire la documentation du tout... Mais tu réponds aux conseils comme si tu étais le centre de l'univers... Seul un nombriliste analphabète et impuissant...

 
Vitaly Muzichenko:

Merci !

Il n'y a aucun moyen de le faire avec des outils standards.

Vous ne pouvez pas le faire sans utiliser les DLL du système.

J'ai publié une bibliothèque entière à cet effet ;)

Pour les 5 séparément.
CDir (MT4) - класс для получения оглавления каталога
CDir (MT4) - класс для получения оглавления каталога
  • www.mql5.com
Класс CDir предназначен для получения сведений о файлах и папках вне "песочницы" MQL4 подобно команде MS-DOS Dir. Задействован вызов системных DLL, поэтому следует разрешить их использование.
 
Vladimir Karputov:

Lisez l'aide. Après l'aide, n'utilisez pas cet opérateur - vous n'en avez pas besoin.


Vous avez besoin de cet algorithme : pour chaque symbole, vous devez enregistrer un prix. Le prix est stocké dans des variables globales du terminal (le nom de la variable globale est juste le nom du symbole). Ensuite, vous devez mettre à jour "CHARTEVENT_OBJECT_CHANGE" et"CHARTEVENT_OBJECT_DRAG" - et réenregistrer le prix dans des variables globales.

Il y a encore beaucoup de nuances à résoudre : par exemple - il y a une variable globale et pas de ligne sur le graphique...

Merci pour l'algorithme.

Question : pourquoi la ligne est-elle trouvée et décolorée dans ce code ?

if(preff+"hhh" == ChartSymbol(0) ){
ObjectSetInteger(0,preff+"hhh",OBJPROP_COLOR,clrNONE); }

mais pour le faire de la façon dont il devrait être fait, il faut aller dans une forêt sombre.....

 
Mikhail Dovbakh:

Vous ne pouvez pas le faire sans utiliser les DLL du système.

J'ai publié une bibliothèque entière à cet effet ;)

Pour 5 séparément.

Super, c'est exactement ce dont j'ai besoin !

 
Сергей Таболин:

Tu ne peux pas le faire sans être sarcastique ?

Vous ne semblez pas lire la documentation du tout... Mais tu réponds aux conseils comme si tu étais le centre de l'univers... Seul un nombriliste analphabète et impuissant...

Au lieu d'être grossier, vous feriez quelque chose d'utile, pour l'amour de Dieu !

Et ne vous donnez pas la peine de répondre et de réagir ! Votre opinion, hélas, ne m'intéresse pas !).

 

S'il vous plaît, dites-moi de quelle classe vous devez hériter pour utiliser toutes les méthodes de ces classes.

d'utiliser toutes les méthodes de ces classes à l'intérieur de votre classe, sans créer d'objets à l'intérieur de votre classe ?



Raison: