初学者的问题 MQL5 MT5 MetaTrader 5 - 页 673

 
你好,我应该添加什么代码使任何指标的警报出现在EA中?

如何通过iCustom检测警报?

也许你知道已经存在的指标/顾问?
 
RichLux:

我正在编写一个在马丁格尔基础上工作的EA。

我怎样才能让它在某一货币对达到最大允许损失的点数时关闭所有未结订单?

如果你真的需要以点为单位而不是以钱为单位,这里有一个函数可以应用,就像上一个函数一样

//===============================================================================================
//------------------ Возвращает суммарный профит открытых позиций в пунктах --------------------+
//===============================================================================================
double GetProfitOpenPosInPoint(string symb="0", int type=-1, int mg=-1) {
double p=0, prb=0, prs=0, pr=0;
  if(symb=="0") { symb=Symbol();}
   for(int i=0; i<OrdersTotal(); i++) {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
     if((OrderSymbol()==symb||symb=="")&&(type<0||OrderType()==type)&&(mg<0||OrderMagicNumber()==mg)) {
       p=MarketInfo(OrderSymbol(), MODE_POINT)*Sign;
        if(OrderType()==OP_BUY) {
          prb+=((MarketInfo(OrderSymbol(), MODE_BID)-OrderOpenPrice())/p);
        }
        if(OrderType()==OP_SELL) {
          prs+=((OrderOpenPrice()-MarketInfo(OrderSymbol(), MODE_ASK))/p);
        }
       pr=prb+prs;
     }
}}
  return(pr);
}
 
greeng2016:
你好,我应该添加什么代码使任何指标的警报出现在EA中?

如何通过iCustom检测警报?

也许你知道已经存在的指标/顾问?
据我所知,警报窗口的出现是不能被追踪的。
 
你好,我想用mt4.exe打开.ex4文件,并将其设置为用于所有文件。我怎样才能找回 "windows通用shell库"? 由于某些原因,mt4现在不能看到这个专家(机器人)。
附加的文件:
pui_mqhrx2.png  40 kb
 
VSEVPOTOLKI:
你好,我想用mt4.exe打开.ex4文件,并将其设置为用于所有文件。我怎样才能恢复 "windows通用外壳库"? 由于某些原因,MT4现在看不到这个EA(机器人)。

你不会相信,但每个人!!!都想打开一个.ex4文件,问题是它从未被打开编辑过,无法打开。

可编辑的文件只有.mq4,可执行的文件是.ex4。

 

客户端事件

啟動

在客户终端加载一个程序(专家顾问或自定义指标)并开始初始化全局变量后,将立即发送一个Init事件,如果有的话,将使用OnInit() 处理。在证券和/或图表周期变化后,在MetaEditor中重新编译程序后,在改变专家顾问或自定义指标设置窗口的 输入参数后,也会产生这个事件。专家顾问在账户改变后也会被初始化。脚本不产生初始事件。


如果它不是 "窗外 "呢?例如,在策略测试器的优化模式中?在哪里可以读到这些信息?

 
Leo59:

客户端事件

啟動

在客户终端加载一个程序(专家顾问或自定义指标)并开始初始化全局变量后,将立即发送一个Init事件,如果有的话,将使用OnInit() 处理。在证券和/或图表周期变化后,在MetaEditor中重新编译程序后,在改变专家顾问或自定义指标设置窗口的 输入参数后,也会产生这个事件。专家顾问在账户改变后也会被初始化。脚本不产生初始事件。


如果它不是 "窗外 "呢?例如,在策略测试器的优化模式中?在哪里可以读到这些信息?

在优化模式下,每一次带有新参数的传递无非是一次新的程序启动。启动后,OnInit()事件会相应地执行。
 
Vladimir Karputov:
在优化模式下,每一次带有新参数的传递都不过是一次新的程序运行。因此,在启动后,OnInit()事件就会通过。
(谢谢你,弗拉基米尔!我理解))。但文件中哪里写了?如果我在init()中加入Print、Alert和Comment,在日志和屏幕上都没有显示。我们怎么能确定我们所知道的事情呢?
 
Leo59:
谢谢你,弗拉基米尔!我明白了))。但文件中哪里写了?如果我在init()中加入Print、Alert、Comment,那么无论是日记还是屏幕上都没有写任何东西。我们怎么能确定我们所知道的事情呢?

为了确保这一点--在历史上开始调试并在OnInit()中设置断点。

 

我不能让一些东西打印()到测试者的日志中。你是如何做到这一点的?