错误、漏洞、问题 - 页 621

 
sergey1294:
首先你除以整数,所以你得到的是一个整数,请阅读类型转换 https://www.mql5.com/ru/docs/basis/types/casting
的确如此,但以前不是这样的。我甚至懒得理会。
 
ivandurak:
确实如此,但之前不是这样的。我甚至懒得理会。

因为在5中,它从一开始就是这样,并将永远是这样(1/2=0;1./2.=0.5)。

如果你想明确地指定重复的内容,则要添加一个点。

// Script program start function                                    
void OnStart()
  {
   int i;
   double   a,b ;
   for(i=0;i<10;i++)
      {
         a=1./2.;
         b=1./2.;
         Print("a=",a," ","b=",b) ;
      }   
  }
 
Urain:

以前是以四为单位吗? 因为从一开始就是以五为单位。

如果你想明确地指定重复,请添加句号。

在第四和第五章中都没有出现过这种情况。

整数运算(甚至以纯整数常数的形式)是毫不含糊的。

 

我遇到了一个测试者和模拟账户之间的差异。

在成功的交易操作 后,价格字段在交易服务器的响应结构中被不同地填写。在模拟账户中,价格字段一切如常--交易的价格,在测试器中这个字段保持为0。

为了测试,我画了一个专家顾问的草图,它买入每个tick并在日志中显示返回代码和价格。

//+------------------------------------------------------------------+
//|                                                  test-expert.mq5 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
         MqlTradeRequest trade_request;
         MqlTradeResult  trade_result;
         ZeroMemory(trade_request);
         ZeroMemory(trade_result);
         trade_request.action=TRADE_ACTION_DEAL; 
         trade_request.volume=0.1; 
         trade_request.type=ORDER_TYPE_BUY; 
         trade_request.price=SymbolInfoDouble(_Symbol,SYMBOL_ASK); 
         trade_request.symbol=_Symbol;
         OrderSend(trade_request,trade_result);
         Print(trade_result.retcode, "купили по цене ",trade_result.price);
  }
//+------------------------------------------------------------------+

当我在一个模拟账户上运行它时,日志中包含以下字符串。

2012.01.16 12:48:29 test-expert (EURUSD,H1) 10009 在1.266买入

而当在visualizer中运行这些:

2012.01.16 12:49:12 2011.12.30 00:00:11 10009 以0.0的价格买入。

告诉我这是一个错误,一个错误,还是我做错了什么?
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 

有什么办法可以控制测试仪中的前史。

从2011年1月1日到今天,1小时的测试只加载了6000条。在设置中是--最大条数无限制。历史记录都是从1971年的一分钟内加载的。

 

这个问题的出现是出乎意料的。

当在专家顾问中通过iCustom 加载一个指标时,该指标被加载并正常工作--唯一的问题是它的OnTimer 函数没有被调用。

它应该是这样的,还是一个错误?

同样的指标只是附在图表上,工作正常。

574号建筑。

 
Dima_S:

这个问题的出现是出乎意料的。

当在专家顾问中通过iCustom 加载一个指标时,该指标被加载并正常工作--唯一的问题是它的OnTimer 函数没有被调用。

它应该是这样的,还是一个错误?

它是这样设计的。
 
antt:
这就是它的意义所在。
非常有创意)
 
Dima_S:
非常有创意)

计时器事件是为图形产生的,并从那里到运行在它上面的程序(扔在它上面)。这就是意识形态--程序执行

客户端将生成的事件发送到相应的开放图表中。另外,事件可以由图表(图表事件)或mql5-程序(自定义事件)产生。通过设置图表的CHART_EVENT_OBJECT_CREATECHART_EVENT_OBJECT_DELETE 属性,可以启用或禁用图表上创建和删除图形对象事件的生成。每个mql5程序和每个图表都有自己的事件队列,所有的新事件都存储在这里。

该程序只接收来自它所运行的图表的事件。所有的事件都按照收到的顺序一个接一个地处理。

因此,从专家顾问中调用的指标不会接收定时器事件。试着用专家顾问的ChartIndicatorAdd 函数将指标应用到图表上,会有什么变化吗?

 
Dima_S:
非常有创意)
该活动最初是为专家准备的,本质上是一个图表活动。在指标中使用该事件是后来增加的,而且有一个限制,即指标必须被添加到图表中。