假如一个条件成立,就退出或自动终止EA,应该怎么写啊,用哪个函数????

 
假如一个条件成立,就退出或自动终止EA,应该怎么写啊,或用哪个函数????
 
俺觉得:EA运行返回即可,  OnTick()函数最上方写入返回指令。
void OnTick()
  {
   if(......)  return;




  }
 

不行啊...

 好像都没有让EA自动停止的函数啊?

退出也可以啊,没个保险不安全呢

 

參考一下 ExpertRemove()

主要需要知道你是終止還是暫停的條件

 
xy45019980:
假如一个条件成立,就退出或自动终止EA,应该怎么写啊,或用哪个函数????

把on tick里面所有的内容都放在一个if下面就行。

 
xy45019980 #:

不行啊...

 好像都没有让EA自动停止的函数啊?

退出也可以啊,没个保险不安全呢

我不明白终止ea和安全有什么关系
你的ea有if() 做开单过滤就可以
退出了开了的单便变孤儿了
 
xy45019980:
假如一个条件成立,就退出或自动终止EA,应该怎么写啊,或用哪个函数????

将EA置入定时器内,满足条件后,EA自动关闭定时器。如果定时器不再启动,EA永远不再运行。

 
Hung Wen Lin #:

參考一下 ExpertRemove()

主要需要知道你是終止還是暫停的條件

 ExpertRemove()  正解。

 
Lin Luo #:

 ExpertRemove()  正解。

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+ 
int A=10;
int B=20;
void OnTick()
  {
//---
   if(B>A)
     ExpertRemove();
     
  }

簡單試驗一下 使用ExpertRemove()是終止EA

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+ 
int A=10;
int B=20;
void OnTick()
  {
//---
   if(B>A)
    {
     return;
     ExpertRemove();
    } 
  }

使用return是暫停EA

看一下報價表上面的EA在不在就知道了

這就是正確的用法

 

ExpertRemove 並不會立即終止 EA

而是在 OnTick / OnTimer 這類事件程序執行完之後,才去呼叫 OnDeinit

建議在呼叫 ExpertRemove 之後再加條 return 會比較保險