Cet espace est réservé à l'affichage des volumes :
Il serait préférable de réserver de l'espace pour les étiquettes de nouvelles, car elles rendent vraiment difficile de voir le bas du graphique, surtout lorsque c'est là que le prix se négocie. Et lorsqu'ils sont retirés, ils sont restaurés après un certain temps. Et je n'ai pas trouvé comment les désactiver.
BlackTomcat: Il serait préférable de réserver de l'espace pour les marques de nouvelles, car elles sont vraiment gênantes à regarder dans la partie inférieure du graphique, surtout lorsque le prix s'y négocie. Et lorsqu'ils sont retirés, ils sont à nouveau restaurés après un certain temps. Et je n'ai pas trouvé comment les désactiver.
Vous pouvez modifier manuellement l'échelle verticale : passez le pointeur de la souris sur les prix, LKM et faites glisser...
Vous pouvez modifier manuellement l'échelle verticale : déplacez le pointeur de la souris sur les prix, LKM et faites glisser...
Merci, je vais essayer quand je serai chez moi. Mais en fait, j'ai un ordinateur portable et j'utilise le pavé tactile. Ainsi, certaines manipulations faciles à réaliser avec une souris, sur le pavé tactile se transforment en un tour de passe-passe acrobatique. Et puis il y a les tablettes...
En principe, je peux définir une échelle fixe via les propriétés du graphique et obtenir ainsi un champ libre en bas. Mais la mise à l'échelle automatique est beaucoup plus pratique si, par exemple, le prix descend (monte) constamment et met à jour les points bas (hauts) presque à chaque tick. Et les événements récents dans la livre montrent que ces mouvements peuvent être très profonds et très rapides - il n'y a pas le temps de changer d'échelle. :)
Qui sait comment obtenir les paramètres d'un tableau non courant ? Le problème est que tout fonctionne bien tant que le graphique actuel est actif. Mais si je passe à un autre, les événements n'apparaissent pas et je ne peux pas obtenir les informations actuelles via ChartGet.
Il s'avère que seul le graphique actif est rendu. Existe-t-il un moyen de contourner ce problème ?
Mise à jour : J'ai partiellement résolu le problème en forçant le redessin, il est possible de détecter le redimensionnement dugraphique, mais ChartXYToTimePrice renvoie des données pas tout à fait correctes - si j'ouvre le graphique requis manuellement, tout fonctionne comme il se doit. Je n'ai pas encore découvert pourquoi.
long currChart=ChartFirst(); while(currChart>=0) { ChartSetInteger(currChart,CHART_BRING_TO_TOP,true); ChartRedraw(currChart); currChart=ChartNext(currChart); }
upd. Autre question, comment déterminer si le graphique actuel est actif, c'est-à-dire s'il a un focus ?
upd... J'ai compris.
long hWnd = ChartGetInteger(0, CHART_WINDOW_HANDLE); int parent = GetParent(GetParent(hWnd));
int active = SendMessageW(parent, WM_MDIGETACTIVE, 0, 0); // хэндл активного окна
Cet espace est réservé à l'affichage des volumes :
Bonjour à tous. Cette obscure indentation en bas est apparue et je n'arrive pas à la faire disparaître.
))))))) et promouvoir votre blog ))))))))
Il serait préférable de réserver de l'espace pour les marques de nouvelles, car elles sont vraiment gênantes à regarder dans la partie inférieure du graphique, surtout lorsque le prix s'y négocie. Et lorsqu'ils sont retirés, ils sont à nouveau restaurés après un certain temps. Et je n'ai pas trouvé comment les désactiver.
Vous pouvez modifier manuellement l'échelle verticale : passez le pointeur de la souris sur les prix, LKM et faites glisser...
Cet espace est réservé à l'affichage des volumes :
C'est ce que je pensais. Ce n'est pas bon. Et il n'y a pas d'autre moyen que d'écrire un indicateur?
Vous pouvez modifier manuellement l'échelle verticale : passez la souris sur les prix, LKM et tirez...
Tirez aussi fort que possible) L'écart est toujours là.
Vous pouvez modifier manuellement l'échelle verticale : déplacez le pointeur de la souris sur les prix, LKM et faites glisser...
Je tire aussi fort que je peux) L'écart est toujours là.
Qui sait comment obtenir les paramètres d'un tableau non courant ? Le problème est que tout fonctionne bien tant que le graphique actuel est actif. Mais si je passe à un autre, les événements n'apparaissent pas et je ne peux pas obtenir les informations actuelles via ChartGet.
const long &lparam,
const double &dparam,
const string &sparam)
{
//---
if(id==CHARTEVENT_CHART_CHANGE)
{
printf("chart height: %i",ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS));
}
}
Il s'avère que seul le graphique actif est rendu. Existe-t-il un moyen de contourner ce problème ?
Mise à jour : J'ai partiellement résolu le problème en forçant le redessin, il est possible de détecter le redimensionnement dugraphique, mais ChartXYToTimePrice renvoie des données pas tout à fait correctes - si j'ouvre le graphique requis manuellement, tout fonctionne comme il se doit. Je n'ai pas encore découvert pourquoi.
while(currChart>=0)
{
ChartSetInteger(currChart,CHART_BRING_TO_TOP,true);
ChartRedraw(currChart);
currChart=ChartNext(currChart);
}
upd. Autre question, comment déterminer si le graphique actuel est actif, c'est-à-dire s'il a un focus ?
upd... J'ai compris.
int parent = GetParent(GetParent(hWnd));
int active = SendMessageW(parent, WM_MDIGETACTIVE, 0, 0); // хэндл активного окна
Ai-je bien compris que la modification des ordres par SB ne fonctionnera pas dans un échange ?
//| Modify specified pending order |
//+------------------------------------------------------------------+
bool CTrade::OrderModify(const ulong ticket,const double price,const double sl,const double tp,
const ENUM_ORDER_TYPE_TIME type_time,const datetime expiration,const double stoplimit)
{
//--- check stopped
if(IsStopped(__FUNCTION__))
return(false);
//--- clean
ClearStructures();
//--- setting request
m_request.action =TRADE_ACTION_MODIFY;
m_request.magic =m_magic;
m_request.order =ticket;
m_request.price =price;
m_request.stoplimit =stoplimit;
m_request.sl =sl;
m_request.tp =tp;
m_request.type_time =type_time;
m_request.expiration =expiration;
//--- action and return the result
return(OrderSend(m_request,m_result));
}
Il n'est pas fixé.