对象可以使用在类之外声明的全局变量吗?

时间:2018-02-22 20:46:32

标签: mql5

我需要一个止损对象的功能,包括一个乘数,它在每次调用时(即在每个时间间隔)增加,但在第一次调用之前(即在打开一个位置时)它必须重置为0(重置它在SL对象的末尾是不可能的,因为当SL被击中时将不会调用该对象)。当我尝试使用在SL类之外声明的全局变量时,我得到了编译错误(“缺少声明”;如果信息很重要,则将该类放在包含文件中)。

还有另一种方法,而不是让我的SL对象成为一个函数(可以访问全局变量)吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

int  stoplossMultiplier,
     lastOpenedTicket;

void OnInit(){
     stoplossMultiplier = 0;
     lastOpenedTicket   = 0;                // also possible to find among open
}

int  TradeSend(){
  // do what you need here, include ticket = OrderSend(); function
  // compute lot based on stoplossMultiplier
     lastOpenedTicket = ticket;
}

void OnTick(){
     if ( lastOpenedTicket >  0 ){
          if ( !isTicketExist( lastOpenedTicket() ){
                if (  isClosedByStopLoss( lastOpenedTicket() ) ){
                      stoplossMultiplier = 0;
                }else{
                      stoplossMultiplier++;
                }
          }
     }
}

bool isTicketExist(      int ticket ){ /* make sure order is open        */ }
bool isClosedByStopLoss( int ticket ){ /* loop over OrdersHistoryTotal() */ }