Торговая панель глючит при смене таймфрейма.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Yulia Fedorova
645
Yulia Fedorova  

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

Подскажите, пожалуйста, в чем может быть дело?

MT4

Alexey Viktorov
27875
Alexey Viktorov  
Ах как жаль что я магический шар отдал во временное пользование на неделю... А то мог-бы и без кода подсказать...
Andrei Novichkov
8252
Andrei Novichkov  
По моему, тут ответ совершенно очевиден: панель работает не правильно!
Yulia Fedorova
645
Yulia Fedorova  

Первый раз создавала тему. Надо было сначала в поиск по форуму, есть решение  от Vitalii Ananev 

Если кому-то нужно, вот оно, все работает:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Почему съезжает панель при обновлении настроек эксперта?

Vitalii Ananev, 2016.03.09 07:26

Есть способ решить эту проблему.

class CTradePanel : public CAppDialog
{
private:

public:
                     CTradePanel();
                    ~CTradePanel();
bool isCreate;  //вводите переменную
.....
}

 В методе Create инициализируете ее

 

bool CTradePanel::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
{
  if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2)) return(false);
  isCreate = true;
  return(true);
}

 И в конструкторе и деструкторе

CTradePanel::CTradePanel()
{
   isCreate = false;
}

CTradePanel::~CTradePanel()
{
   isCreate = false;
}

 В самом эксперте или индикаторе в функции OnInit()

   if (!TradeDialog.isCreate)
   {
      if(!TradeDialog.Create(0,"Trade panel",0,10,10,250,150)) return(INIT_FAILED);
      if(!TradeDialog.Run()) return(INIT_FAILED);
   }

 В функции OnDeinit()

void OnDeinit(const int reason)
{
//--- destroy application dialog
   if ((reason != REASON_PARAMETERS) && (reason !=REASON_CHARTCHANGE) && (reason !=REASON_ACCOUNT)) TradeDialog.Destroy(reason);
   
}

Yulia Fedorova
645
Yulia Fedorova  
Alexey Viktorov:
Ах как жаль что я магический шар отдал во временное пользование на неделю... А то мог-бы и без кода подсказать...

Гадаете на хрустальном шаре в свободное от основной работы в аншлаге время?) 

Vitalii Ananev
11036
Vitalii Ananev  
Yulia Fedorova:

Первый раз создавала тему. Надо было сначала в поиск по форуму, есть решение  от Vitalii Ananev 

Если кому-то нужно, вот оно, все работает:


Это тоже не всегда срабатывает как надо. Нужно использовать указатели.

CPanelDialog *ExtDialog;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create application dialog
   ExtDialog = new CPanelDialog();
............
}
void OnDeinit(const int reason)
{
//--- destroy application dialog   
   ExtDialog.Destroy(reason);
   if (ExtDialog!=NULL) delete(ExtDialog);  
   
}
Yulia Fedorova
645
Yulia Fedorova  
Vitalii Ananev:

Это тоже не всегда срабатывает как надо. Нужно использовать указатели.

Спасибо!
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий