对象可以使用在 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() */ }
我需要一个止损对象的功能,包括一个每次调用时(即在每个时间间隔)递增的乘数,但在第一次调用之前(即开仓时)它必须重置为 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() */ }