新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1313

 
Valeriy Yastremskiy:

我不明白,也许我说的是错误的窗口。我是指图表窗口中的条形图。这些移动。在加载EA指标时也有对话窗口,提醒窗口,信息窗口,但它们都会移动。我们说的是哪个窗口?对话框与此无关。 我在4中也没有库。

这里是猫头鹰的窗口。


我想在我需要的时候在图表上移动它。

 
MakarFX:

这里是猫头鹰的窗口


这就是我想在需要的时候在时间表上移动的东西。

这不是一个窗口,是一个面板。你可以移动它,我甚至不能告诉你代码。我需要代码并重新绘制它的总体。我需要找到绘制面板的位置,并指定坐标 - 然后,使用事件,我点击移动它,删除它,并绘制一个新的面板。像这样。但我根本就不是一个绘图员。

 
Valeriy Yastremskiy:

在EA中删除时,你不需要清理评论,但在指标中你需要。它是这样设计的吗?

一个合格的程序员至少会写

void OnDeinit(const int reason)
{
     Comment( "" );
}
如果使用了评论,他就会自己清理。而许多初学者没有注意到这一点。这就是秘密所在。
 
你好。
你能告诉我(公式)如何计算某个级别的价格(考虑到未结头寸)?要计算在什么价格上会出现追加保证金和止损。
 
Konstantin Nikitin:

一个合格的程序员至少会写

如果使用了评论,他就会自己清理。而许多初学者并没有注意到这一点。这就是秘密所在。

他做到了,并在上面写到了)。问题是为什么在EA和指标中出现不同的行为。是否有隐藏的含义,还是历史上从不同的写作团队发展而来)

 
Konstantin Nikitin:

一个合格的程序员至少会写

如果使用了评论,他就会自己清理。而许多初学者并没有注意到这一点。这就是整个秘密。
实际上,在这方面没有明显的一般要求。
 
Andrey Sokolov:
实际上,在这方面没有明确的一般要求。

我是否谈到了要求?我只是说,有些人考虑到了这一点,有些人没有考虑到。

 
Konstantin Nikitin:

我是否谈到了要求?我只是说,有些人考虑到了这一点,有些人没有考虑到。

不是这样的。

 

EASY AND FAST https://www.mql5.com/ru/articles/3527 实现了通过加载文件 "SubWindow.mq5 "在指标子窗口中启动程序窗口的可能性,在mql5中一切正常,在mql4中内容也被编译,没有错误,但子窗口没有打开,该怎么办?


//+------------------------------------------------------------------+
//|                                                    SubWindow.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2016, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property indicator_separate_window
#property indicator_plots   0
#property indicator_buffers 0
#property indicator_minimum 0.0
#property indicator_maximum 0.0
//--- Имя программы
#define  PROGRAM_NAME ::MQLInfoString(MQL_PROGRAM_NAME)
//--- Идентификатор события для изменения высоты подокна эксперта
#define  ON_SUBWINDOW_CHANGE_HEIGHT (38)
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit(void)
  {
//--- Короткое имя индикатора
   ::IndicatorSetString(INDICATOR_SHORTNAME,PROGRAM_NAME);
//--- Инициализация прошла успешно
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Деинициализация                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int    rates_total,
                const int    prev_calculated,
                const int    begin,
                const double &price[])
  {
//--- Если инициализация прошла успешно
   if(prev_calculated<1)
      //--- Отправим сообщение эксперту, чтобы получить от него размер для подокна
      ::EventChartCustom(0,ON_SUBWINDOW_CHANGE_HEIGHT,0,0.0,PROGRAM_NAME);
//---
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int    id,
                  const long   &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- Обработка события изменения высоты подокна эксперта
   if(id==CHARTEVENT_CUSTOM+ON_SUBWINDOW_CHANGE_HEIGHT)
     {
      //--- Принимать сообщения только от имени эксперта
      if(sparam==PROGRAM_NAME)
         return;
      //--- Изменить высоту подокна
      ::IndicatorSetInteger(INDICATOR_HEIGHT,(int)lparam);
      //--- Обновить график
      ::ChartRedraw();
     }
  }
//+------------------------------------------------------------------+
 

大家好!

我想在(任何)指标上附加一个账户支票!请问是什么意思?

bool VerifityToSchet()
  {
   if(AccountNumber() != account)
     {
      Print("На данном счете индикатор работать не будет, вы его приобрели незаконным путем!!!");   
     }else
     {
     Print("На данном счете индикатор авторизован");
     }
   return(false);
  } 

当然,我在init()和start()中启用了它,但当我重新启动终端时,它说该账户是无效的!

我做错了什么?

原因: