专家: 做货币对OnTick (string symbol) 事件句柄 - 页 3

 

再次饶有兴趣地阅读,嗯。

如果 MQ 默认开启!!!在 DC 服务器上广播玻璃,并且不允许 DC 将其关闭,那么所有这些手鼓舞就没有必要了。让它成为一个只有出价和要价的空赌注,但它应该被广播。

然后,通过订阅所需工具,就可以在 OnBookEvent 中轻松跟踪多币种勾选。

事实上,OnBookEvent 是一个标准的多币种勾选处理程序。

到目前为止,只有翻译玻璃的钻孔机可以做到这一点。

 
micle:

文章中的代码已经过时。

是的,该代码是在OnChartEvent 处理程序尚未在测试器中运行时编写的。

Urain:

饶有兴趣地重读了一遍,嗯。

如果 MQ 默认在 DC 服务器上启用烧杯广播,并且不允许 DC 将其关闭,那么这些手鼓舞就没有必要了。让它成为一个只有出价和要价的空赌注,但它应该被广播。

然后,通过订阅所需的工具,就可以在 OnBookEvent 中轻松跟踪多货币 tick。

事实上,OnBookEvent 是一个标准的多币种勾选处理程序。

到目前为止,它只能在翻译玻璃的滴定器中使用。

我玩了一次 OnBookEvent。对于专家来说,一般来说,它是可行的。不过我会删除 "广播 "功能,并为图表创建一个订阅。另一个缺点是:它在指标中不起作用。我还没有在测试器中尝试过。

自该主题首次发布以来,已有许多手鼓被销毁。现在出现了一些更容易接受的东西。也许有机会我会发布它。

 
Lizar:

是的,这段代码是在 OnChartEvent 处理程序还不能在测试器中正常工作时编写的。

我当时在玩 OnBookEvent。对于专家来说,一般来说,这样就可以了。不过我会删除 "广播",并为图表创建一个订阅。另一个缺点:它在指标中不起作用。我还没有在测试器中尝试过。

自从关于此主题的第一篇文章发表后,很多铃鼓都被扼杀了。现在出现了一些更容易接受的东西。也许有机会我会发表。

还有一种更微妙的方法:订阅的不是图表,而是特定的智能交易系统。

因此,如果没有订阅,您将无法收到图表信号。因此,广播的质量是相当高的。

在两个有堆栈的图表上运行附件中的猫头鹰。每只猫头鹰将只接收其订阅的信号。

附加的文件:
 

你好,利扎、

我想使用您的代码,但我的经纪商使用 mql4 语言(TradeMasterFX Meta,版本: 4.00 Build 890)、

有办法将我的终端升级到支持 mql5 的终端吗?

谢谢您的建议、

埃姆雷

 
Konstantin Gruzdev:

欢迎参与讨论)

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

mql5语言的特点、微妙之处和工作技巧

Andrey Khatimlianskii, 2018.10.09 23:18

在 50 种工具上使用 spy 运行空的智能交易系统时,信息开始涌入日志:

2018.10.09 22:49:24.730 Spy (AUDNZD,W1) indicator is too slow, 4281 ms. rewrite the indicator, please

如果在指标中添加一个过滤器,过滤在 500 毫秒内发送 kastum 事件的频率,错误就会减少,但不会消失。

是我的问题吗?


EA 代码:

#define  ForEach(index,array)   for(int index=0, max_##index=ArraySize(array);  index<max_##index;  index++)

string Symbols[];

int OnInit()
{
   ArrayResize( Symbols, SymbolsTotal(true) );

   ForEach( i, Symbols )
   {
      Symbols[i] = SymbolName(i,true);

      if( Symbols[i] != _Symbol )
         iCustom( Symbols[i], PERIOD_W1, "Spy.ex5", ChartID(), i );
   }
   return(INIT_SUCCEEDED);
}

void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{
   if( id == CHARTEVENT_CUSTOM )
      OnTickMS( Symbols[ (int)lparam ] );
}

void OnTick()
{
   CheckSignal( _Symbol );
}

void OnTickMS(const string &Symb)
{
   CheckSignal( Symb );
}

void CheckSignal(const string symbol)
{
   //Comment( symbol, ": "、
   // DoubleToString( SymbolInfoDouble( symbol, SYMBOL_BID ), 5 ), " / "、
   // DoubleToString( SymbolInfoDouble( symbol, SYMBOL_ASK ), 5 )));
   return;
}


Profiler 显示 95% 的时间 iCustom、OnChartEvent 几乎什么也没做。处理器(i5-3570)的负载为 75%。


Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2018.09.21
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 
Andrey Khatimlianskii:

欢迎讨论)


建议在 EA 的 OnDeinit() 中尝试使用 适当次数的IndicatorRelease() 和 IndicatorDelete()。
 
nra_:
我有一个建议,在 EA 的 OnDeinit() 中尝试使用 适当次数的IndicatorRelease() 和 IndicatorDelete()。

它不应该出现在 OnDeinit 中,我需要它全部发挥作用。

删除 EA 后一切正常,内存在一段时间后被释放。

 
Andrey Khatimlianskii:

不一定非要用到 OnDeinit,我需要它全部发挥作用。

删除智能交易系统后一切正常,内存在一段时间后被释放。

我建议对指标进行剖析,找出浪费4281 毫秒的具体原因。也许是信息发送 本身。

 
Stanislav Korotky:

对指示器进行剖析,找出浪费4281 毫秒的具体原因是合理的。可能是信息发送本身。

我们做到了

EventChartCustom 在某一时刻开始运行超过 3 秒。

 
我知道 EA 中的 OnDeinit 不应该调用 OnDeinit,但这是最理想的状态。您确定在 15 个小时的测试中,EA 只调用了一次 OnInit?