Erreurs, bugs, questions - page 1738

 
Karputov Vladimir:

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.
 
SergeySarkisyan:
Bonjour à tous. Cette obscure indentation en bas est apparue et je n'arrive pas à la faire disparaître.
Vous pourriez écrire un indicateur d' échelle automatique. Ainsi, tout le monde aurait ce qu'il veut.
 
Alexey Viktorov:
))))))) et promouvoir votre blog ))))))))
Les articles du blog sont affichés dans le fil d'actualité et vous pouvez les épingler à votre profil.
 
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...

 
Karputov Vladimir:

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?

 
Alexey Kozitsyn:

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à.

 
Alexey Kozitsyn:

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. :)
 
SergeySarkisyan:

Je tire aussi fort que je peux) L'écart est toujours là.

Non, non, la réponse n'est pas pour vous... Ça ne vous aidera pas...
 

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.

void OnChartEvent(const int id,
                  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.

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); // хэндл активного окна


 

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é.

Raison: