错误、漏洞、问题 - 页 2148

 
Andrey Khatimlianskii:

证实了吗?

不,当然不是。这里所写的一切是独立的结论。

我记得Renat或Slava说过,指标是不重复的,即使是手动运行。参数的哈希值匹配--使用相同的计算部分。

这是不正确的。最重要的是,这甚至不可能是真的。

在两个相同的图表上手动运行该指标

int OnCalculate( const int, const int, const int, const double &[] )
{
  Print(ChartID());
  
  return(0);
}

如果计算部分是一样的,就不会有不同的重播。我认为90%的结论都是正确的。

 
Nexxtor:

帮助作者,或MQL5语言,取决于谁的手不在***,你太烦人了!!!。

IndicatorCreate()说。

参数_cnt

[in] parameters_array[] 数组中传递的参数数量。数组中的元素有一种特殊的结构类型MqlParam。默认值为零 - 不传递参数。如果指定了非零数量的参数,参数_数组参数是强制性的你最多可以传递256个参数。


告诉我,你亲自检查过吗?有256个参数的指标将被调用?


修复它!!!。

它不运行吗?给我看看那些不能运行的代码。

还有,请少一点感情色彩,多一点业务。

 
fxsaber:

这不是真的。更重要的是,这甚至不可能是真的。

在两个相同的图表上手动运行该指标

如果计算的部分是相同的,就不会有不同的打印结果。

对我来说,这是一个非常困难的结论。

为什么指标要看到相同的图表?因为可以根据ChartID 建立一个指标算法吗?

 
fxsaber:

OBJ_CHART上的EA当然不会运行(或者说,不会工作)。所以通过定时器,似乎是可以的。也许所有的活动在那里都不工作。

OBJ_CHART 上的专家顾问启动和工作正常。他们只处理OnChartEvent(自定义),可以为其他图表生成他们的自定义事件。

 
Andrey Khatimlianskii:

为什么指标要看到相同的图表?

iCustom指标没有自己的图表。即使在加入一些图表的时候。

因为可以根据ChartID建立一个指标算法吗?

是的,图表功能和应用于其图表的事件(手动/模板指标)可以用于任何行动。

 

文件 中的错误

ChartNavigate

将指定的图表相对于指定的图表位置移动指定的条数。

bool  ChartNavigate(
   long  chart_id,     // идентификатор графика
   int   position,     // позиция
   int   shift=0       // значение сдвига
   );

参数

图表_id

[in] 图表ID。0表示当前的图表。

位置

[in] 相对于图表的位置,图表将被移位。该值可以是enumENUM_CHART_POSITION的其中一个值。

 
Andrey Barinov:

OBJ_CHART 上的专家顾问运行和工作正常。他们只处理OnChartEvent(自定义),并可以为其他图表生成自己的自定义事件。

已检查。Expert/Test.mq5

class CUSTOM
{
public:  
  CUSTOM()
  {
    Print(__FUNCSIG__);
    
    Print(EventSetTimer(1) && EventChartCustom(0, 0, 0, 0, NULL) &&
          MarketBookAdd(_Symbol) && 
          ChartSetInteger(0, CHART_EVENT_MOUSE_WHEEL, true) &&
          ChartSetInteger(0, CHART_EVENT_MOUSE_MOVE, true) &&
          ChartSetInteger(0, CHART_EVENT_OBJECT_CREATE, true) &&
          ChartSetInteger(0, CHART_EVENT_OBJECT_DELETE, true) &&
          ChartNavigate(0, CHART_BEGIN, 100) &&
          ObjectCreate(0, __FILE__, OBJ_VLINE, 0, 0, 0) &&
          ObjectDelete(0, __FILE__));
    
  }
  ~CUSTOM() { Print(__FUNCSIG__); }
};

const CUSTOM InitDeinit;

void OnTick() { Print(__FUNCSIG__); }
void OnInit() { Print(__FUNCSIG__); }
void OnDeinit( const int ) { Print(__FUNCSIG__); }
void OnChartEvent( const int id, const long&, const double&, const string& ) { Print(__FUNCSIG__ + " " + (string)id) ; }
void OnTimer() { Print(__FUNCSIG__); }
void OnBookEvent( const string& ) { Print(__FUNCSIG__); }


脚本

#include <fxsaber\Expert.mqh>  // https://www.mql5.com/ru/code/19003

void OnStart()
{
  if (ObjectCreate(0, __FILE__, OBJ_CHART, 0, 0, 0))
  {
    MqlParam Params[1];
    Params[0].string_value = "Experts\\Test.ex5";

    Print(EXPERT::Run(ObjectGetInteger(0, __FILE__, OBJPROP_CHART_ID), Params));
  }
}


结果

Test3 (EURUSD,M1)       true
Test (EURUSD,M1)        void CUSTOM::CUSTOM()
Test (EURUSD,M1)        true
Test (EURUSD,M1)        void OnInit()
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 9
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 1000
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 9
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 9
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 9
Test (EURUSD,M1)        void OnDeinit(const int)
Test (EURUSD,M1)        void CUSTOM::~CUSTOM()


关于OBJ_CHART的专家顾问的结论

  • 将在Init、OnDeinit、全局构造器/解构器和OnChartEvent工作。
  • OnTimer、OnTick和OnBookEvent都不起作用。
  • 只有CHARTEVENT_CHART_CHANGE和自定义事件被捕获。
  • 通过OnChartEvent+EventChartCustom,EA可以为OnTimer和OnTick创建 "事件",但不包括OnBookEvent。
 
在glucotrader 5中,当指定FILE_COMMON 时,#property tester_file不能正确工作,该文件在代理上没有打开。
 
Anton Ohmat:
在glucotrader 5中,当指定FILE_COMMON 时,属性tester_file不能正确工作,文件没有在代理上打开。

好吧,这个文件不是从Common文件夹(终端和本地代理的共同文件夹),而是从Sandbox。

 
fxsaber:

好吧,不是从公共文件夹(终端和本地代理共用),而是从沙盒。

我在我的远程服务器上进行了测试--它不起作用。只有在本地机器的MT目录下的谎言文件中才有可能运行,COMMON上的优化并没有走。


测试员文件

绳子

测试器的文件名,指定扩展名,用双引号括起来(作为一个常量字符串)。指定的文件将被传递给测试人员进行工作。如果需要,应始终指定用于测试的输入文件