错误、漏洞、问题 - 页 2314

 

开发者同志们!

在MT4中,点击选定的图形对象会触发事件"CHARTEVENT_OBJECT_DRAG"。这是一个真正的错误。

在mt5中,没有这样的问题。

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
 {
  if(id==CHARTEVENT_OBJECT_DRAG)
    Print(id); // 2
 }
 
SuhanovDM94:

大家下午好!对不起,我的问题很愚蠢。伙计们,你们能不能告诉我如何使按钮的Pressed属性在左键单击时为真,在左键单击时为假。现在的情况是这样的,按下它不会发生任何事情,而松开它按下的时候,它的值就会变成相反的。

我知道我需要覆盖CButton::OnMouseUp和CButton::OnMouseDown事件处理程序,但我不知道该在哪里做。请给我一个提示。提前感谢!

如果有人能就同一主题提供帮助,将不胜感激。

 
Baruban:

如果有人能就同一主题提供帮助,将不胜感激。

该事件只在鼠标按钮被按下时产生,但在以下情况下不产生

 
Vitaly Muzichenko:

该事件只在鼠标按钮被按下时产生,而不是被点击时产生。

但是有一个点击处理程序,不是吗?所以一定有一个点击事件。

 
SuhanovDM94:

但是有一个新闻处理者,不是吗?因此,也必须有一个新闻活动。

你不感到困惑吗?有 CHARTEVENT_CLICK 事件 - 鼠标点击 图表;但没有点击...

 
Alexey Viktorov:

你不是在混淆视听吗?有一个 CHARTEVENT_CLICK 事件 -- 鼠标 在图表上的点击;但不是点击。

有,这就对了。只是,CButton类有两个内部事件处理程序:OnMouseDown()和OnMouseUp()。所以我想,也许也有相应的事件?

 
SuhanovDM94:

是的,这是正确的。只是,CButton类有两个内部事件处理程序:OnMouseDown()和OnMouseUp()。所以我想,也许也有相应的事件?

我没有看SB,但显然那里有一个按OBJPROP_STATE == true,另一个OBJPROP_STATE == false。也可能是我错了。

 
大家好,请帮助我,为什么在优化过程的最后,图表会下降?
附加的文件:
 
当把鼠标悬停在 "int i = func( 0, 1 ); "一行的 "func "上并选择 "转到定义 "选项(或按Alt+G)时,MT4和MT5编辑器都会崩溃。

MQL4 build 1910
MQL5 build 1931

template<typename type>  
type func( type a, type b = 1 ){ return ( 0 ); }

int i = func( 0, 1 );

void OnStart(){ }  

附加的文件:
altg.jpg  57 kb
 

关于交易、自动交易系统和测试交易策略的论坛

MQL相当于Python的None类型?

nicholi shen, 2018.10.28 21:52

在MQL中没有,反正现在没有了。实际上,在调试时,它比引用慢两倍,而在正常编译时,它的速度也很接近,所以真的无所谓。自己试试吧。

#define  ITERATIONS 1000000

void OnStart()
{
   {
      ulong time = GetMicrosecondCount();
      ulong sum = 0;
      for(int i=0; i<ITERATIONS; i++){
         string r = string(rand());
         sum += by_ref(r);
      }
      time = GetMicrosecondCount() - time;
      printf("%s took %.3f milliseconds: sum=%dll", "by_ref", time/1000.0, sum);
   }{
      ulong time = GetMicrosecondCount();
      ulong sum = 0;
      for(int i=0; i<ITERATIONS; i++)
         sum += by_val(string(rand()));
      time = GetMicrosecondCount() - time;
      printf("%s took %.3f milliseconds: sum=%dll", "by_val", time/1000.0, sum);
   }
}
//+------------------------------------------------------------------+

int by_ref(string &var){ return int(var) % 100; }
int by_val(string  var){ return int(var) % 100; }

为什么by_ref比by_val慢?