Ошибки, баги, вопросы - страница 1738

 
Alexey Viktorov:
))))))) и рекламить свой блог ))))))))
Из блога записи показываются в ленте новостей и их можно закрепить в профиле
[Удален]  
BlackTomcat:
Лучше бы зарезервировали место для показа меток новостей, а то они жесть как мешают нижнюю часть графика смотреть, особенно когда цена именно там и торгуется. А при удалении снова восстанавливаются через какое-то время. И как их отключить - не нашёл.

Можно ведь вручную изменить вертикальный масштаб: наведите указатель мыши на цены, ЛКМ и тяните...

 
Karputov Vladimir:

Это место зарезервировано для показа объёмов:

 

Я так и подумал. Это нехорошо. И других способов кроме как написать индикатор нет? 

 
Alexey Kozitsyn:

Можно ведь вручную изменить вертикальный масштаб: наведите указатель мыши на цены, ЛКМ и тяните...

Тяну изо всех сил) Зазор все равно остается

 
Alexey Kozitsyn:

Можно ведь вручную изменить вертикальный масштаб: наведите указатель мыши на цены, ЛКМ и тяните...

Спасибо, приду домой - попробую. Но вообще-то у меня ноутбук и я пользуюсь тачпадом. Поэтому некоторые манипуляции, которые легко выполняются с помощью мыши, на тачпаде превращаются в некий акробатический трюк. А есть ещё и планшеты...
В принципе, я могу через свойства графика выставить фиксированный масштаб и получить таким образом свободное поле снизу. Но автомасштабирование во многом удобнее, если, например, цена постоянно идёт вниз (вверх) и обновляет минимумы (максимумы) чуть ли не на каждом тике. А недавние события по фунту показывают, что такие движения могут быть очень глубокими и очень стремительными - не успеешь масштаб менять. :)
[Удален]  
SergeySarkisyan:

Тяну изо всех сил) Зазор все равно остается

Не-не, ответ не Вам... Вам это не поможет...
 

Кто знает, как можно получить параметры не текущего графика? Дело в том, что все работает отлично, пока текущий график активен. Но если перейти на другой, то события не приходят и через 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));
     }
  }

Выходит, рендерится только активный график, или все же можно как-то это обойти?

upd. Частично решил проблему принудительной перерисовкой, получается определить изменение размера графика, но ChartXYToTimePrice возвращает не совсем корректные данные – если открыть нужный график вручную, все работает как надо. Пока что не выяснил, почему.

long currChart=ChartFirst();
   while(currChart>=0)
     {
      ChartSetInteger(currChart,CHART_BRING_TO_TOP,true);
      ChartRedraw(currChart);
      currChart=ChartNext(currChart);
     }

upd.. Другой вопрос, как определить, что текущий график активный, то есть имеет фокус?

upd... Разобрался.

long hWnd = ChartGetInteger(0, CHART_WINDOW_HANDLE);
int parent = GetParent(GetParent(hWnd));

int active = SendMessageW(parent, WM_MDIGETACTIVE, 0, 0); // хэндл активного окна


 

 

Правильно ли я понимаю, что на бирже модификация ордеров через СБ работать не будет?

//+------------------------------------------------------------------+
//| 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));
  }

filling не задается.

 
СБ на всех торговых серверах
//+------------------------------------------------------------------+
//| Get the property value "ORDER_TYPE_FILLING"                      |
//+------------------------------------------------------------------+
ENUM_ORDER_TYPE_FILLING COrderInfo::TypeFilling(void) const
  {
   return((ENUM_ORDER_TYPE_FILLING)OrderGetInteger(ORDER_TYPE_FILLING));
  }

ВСЕГДА в тестере возвращает ENUM_ORDER_TYPE_FILLING::ORDER_FILLING_RETURN.

fxsaber:

filling не задается.

Поэтому если в OrderModify filling задать через COrderInfo::TypeFilling(), то на том же RoboForexEU-MetaTrader 5 будет логичная ошибка [Unsupported filling mode]. Однако, на MetaQuotes-Demo этой ошибки не возникает - криво настроен сервер разработчиков?


[Удален]  
fxsaber:

Правильно ли я понимаю, что на бирже модификация ордеров через СБ работать не будет?

//+------------------------------------------------------------------+
//| 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));
  }

filling не задается.

Без паники!

class CTrade : public CObject
  {
protected:
   MqlTradeRequest   m_request;         // request data
   MqlTradeResult    m_result;          // result data
   MqlTradeCheckResult m_check_result;  // result check data
   bool              m_async_mode;      // trade mode
   ulong             m_magic;           // expert magic number
   ulong             m_deviation;       // deviation default
   ENUM_ORDER_TYPE_FILLING m_type_filling;
   ENUM_ACCOUNT_MARGIN_MODE m_margin_mode;
   //---
   ENUM_LOG_LEVELS   m_log_level;

public: