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

Can objects use global variables declared outside of their class?

我需要一个止损对象的功能,包括一个每次调用时(即在每个时间间隔)递增的乘数,但在第一次调用之前(即开仓时)它必须重置为 0 (在 SL 对象的末尾重置它是不可能的,因为当 SL 被击中时该对象不会被调用)。当我尝试使用在 SL-class 之外声明的全局变量时,出现编译错误("missing declaration";如果信息很重要,class 会放在包含文件中)。

除了让我的 SL 对象成为函数(可以访问全局变量)之外,还有其他方法吗?

非常感谢!

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() */ }