template< typename T >
class SeriesVolume
{
public:
T operator[]( constint i ) const
{
long val[1];
if( CopyTickVolume( Symbol(), Period(), i, 1, val ) == 1 ){
return (T)val[0];
}
return -1;
}
};
SeriesVolume< long > Volume;
如果你想让人一头雾水,你仍然可以这样做:
#define CVolume SeriesVolume< long >
CVolume Volume;
一种有趣且不显而易见的技术 )
它有缺陷(对无赖结构而言),也不是最佳的。
对于副本
必须声明外部变量并不明显。
"在模板上 "是指这个意思:
如果你想让人一头雾水,你仍然可以这样做:
其他都是多余的。
少写有时很方便
这只是一个可行性、可用性和性能的问题。
程序的性能不会受到影响。但将过多的细节隐藏起来,却能起到积极的作用。您应该记住并使用这个小窍门。
太贵了!如果你真的想通过结构来做,你至少应该做过。而且不知道为什么没有支票。
SymbolInfoDouble 完全符合 MT4 标准。
性能测量
结果
我完全错了!SymbolInfoDouble 的速度是 SymbolInfoTick 的两倍。
绩效衡量
结果
我完全错了!SymbolInfoDouble 的速度是 SymbolInfoTick 的两倍。
谢谢你的性能测量。
事实证明,SymbolInfoDouble 文档没有说谎:
注意
绩效衡量
结果
我完全错了!SymbolInfoDouble 的速度是 SymbolInfoTick 的两倍。
使用 static 会影响速度吗?很抱歉我没有亲自检查,但我想你已经比较过了。
使用静态数据会影响速度吗?很抱歉我没有亲自检查,但我认为您已经比较过了。
在这种情况下是不会的。我认为这是编译器的一个错误。
我完全错了!SymbolInfoDouble 的速度是 SymbolInfoTick 的两倍。
不称职。测试结果
在需要性能的地方(优化器),最好使用 SymbolInfoDouble。在现实世界中没有区别。
ZY 您应该在性能非常重要的环境中测量函数的速度 - 测试程序。