ExpertRemove

函数停止 EA交易 并从图表中卸载。

void  ExpertRemove();

返回值

没有返回值。

注释

一旦调用ExpertRemove()函数,EA交易不会立即停止,设立一个停止EA操作的标志,任何事件都不能处理,调用 OnDeinit() ,然后EA交易就会卸载并且从图表中删除。

OnInit()处理程序内的策略测试中调用ExpertRemove()取消对当前参数集的测试。这种完成被认为是初始化错误。

当EA成功初始化之后在策略测试调用ExpertRemove()时,测试通常通过调用OnDeinit()OnTester()来正常完成。在这种情况下,获取整个交易统计数据和优化准则的值。

示例:

//+------------------------------------------------------------------+

//|                                            Test_ExpertRemove.mq5 |

//|                        Copyright 2009, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "2009, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

input int ticks_to_close=20;//  EA 卸载前的订单号

//+------------------------------------------------------------------+

//| 专家无法初始化函数                                                  |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

//--- 

   Print(TimeCurrent(),": " ,__FUNCTION__," reason code = ",reason);

//--- "清除" 注释

   Comment("");

//---

  }

//+------------------------------------------------------------------+

//| 专家订单号函数                                                     |

//+------------------------------------------------------------------+

void OnTick()

  {

   static int tick_counter=0;

//---

   tick_counter++;

   Comment("\nBefore unloading expert advisor ",__FILE__," left",

           (ticks_to_close-tick_counter)," ticks");

//--- 以前

   if(tick_counter>=ticks_to_close)

     {

      ExpertRemove();

      Print(TimeCurrent(),": ",__FUNCTION__," expert advisor will be unloaded");

     }

   Print("tick_counter =",tick_counter);

//---

  }

//+------------------------------------------------------------------+

另见

程序运行客户端事件