错误、漏洞、问题 - 页 949

 
Renat:
你对终端和资源的态度很奇怪。

交易终端 的主要任务是有效处理海量数据时,它就没有节省资源的任务。此外,你不能抱怨四份数字运算器在VPS中没有足够的千兆字节内存。

这不是问题,而是在Win2003x64服务器(VPS)和Win7x64家庭上的不同行为。

http://file.karelia.ru/6v55j5/ 链接上的视频说,当启动终端时,它消耗的分配内存比操作系统显示的这个进程多得多。

 
olyakish:

这不是问题,而是在Win2003x64服务器(VPS)和Win7x64家庭上的不同行为。

http://file.karelia.ru/6v55j5/ 链接上的视频说,当启动终端时,它消耗的分配内存比操作系统显示的这个进程多得多。

哦,一切都在运行。

解释起来太长了,而且与终端没有关系。忘了它吧,不要在VPS上吝啬。

 
Renat:

哦,这是多么混乱的事情。

解释起来太长了,而且与终端没有关系。忘了它吧,不要在VPS上吝啬。

也许没有那么多。

例如,可能是终端接了第三方服务,比终端本身吃得更多。而在我的笔记本电脑上,它们只是在启动时才开始。

那么为什么内存的消耗与终端的 第一次运行 相似--服务只需要运行一次。(尽管该服务是否能够为终端的每个副本运行线程是值得商榷的)

好吧,我换个问法,如果服务器是2008年在VPN上,就不会有这种效果,如果太长了,就不解释了。

 
olyakish:

也许没有那么多。

例如,可能是终端接了第三方服务,比终端本身吃得更多。在我的笔记本电脑上,它们只是在启动时才开始。

那么为什么内存消耗与终端的 第一次运行 相似--服务只需要运行一次。(尽管该服务是否能为每份终端启动线程是个问题)

好吧,我换个问法,如果服务器是2008年的pps,就不会有这样的效果,如果太长,就不解释了。

我在VPS(Win XP)上有大约200MB的MT4终端消耗。
 
为什么不允许(在设置中打勾)终端使用缓存互换?将有一个用户可选择的速度/记忆加载权衡。
 

...似乎是一个简单的操作,但无法获得正确的整数点值。以下是该脚本的代码。

void OnStart() {
//---
   double max_price = NormalizeDouble(ChartGetDouble(0, CHART_PRICE_MAX), _Digits);
   double min_price = NormalizeDouble(ChartGetDouble(0, CHART_PRICE_MIN), _Digits);
   
   double entry_price, stop_price, profit_price;
   entry_price = NormalizeDouble((max_price+min_price)/2, _Digits);
   stop_price = NormalizeDouble(entry_price-(entry_price-min_price)/2, _Digits);
   profit_price = NormalizeDouble(max_price-(max_price-entry_price)/2, _Digits);
   
   int stop_pips = int((entry_price - stop_price)/_Point);
   int profit_pips = int((profit_price - entry_price)/_Point);
   
   Print("Entry: ", entry_price, ", Stop: ", stop_price, ", Profit: ", profit_price,
         ", Stop pips: ", stop_pips, ", Profit pips: ", profit_pips);
//---   
}

以下是跑步的结果。

2013.03.29 16:42:03 Experiment_Script (EURUSD,H4) 进场:1.29445,止损:1.28453,盈利:1.30438,止损点:991,盈利点:993
2013.03.29 16:41:57 Experiment_Script (GBPUSD,H4) 进场:1.50465,止损:1.49348,盈利:1.51583,止损点:1117,盈利点:1117

它应该是992和993(对于欧元兑美元),1117和1118(对于英镑兑美元)。你能告诉我如何得到一个正确的结果吗?

 
Rone:

...

试着除以2.0 而不是只除以2

整数运算的结果是一个整数,并不影响结果写成双数。

 
muallch: 为什么不允许(在设置中打勾)终端使用缓存互换?将有一个用户可选择的速度/内存负载折衷方案。
有这样的问题最好直接去找服务台。否则他们会迷路。
 
fyords: 试着除以2.0 而不是只除以2

不,这不是问题所在。被除数是一个双数

这个问题很可能是由这些线路引起的。

   int stop_pips = int((entry_price - stop_price)/_Point);
   int profit_pips = int((profit_price - entry_price)/_Point);
罗内
试着打印"(entry_price - stop_price)/_Point"的 数值,不进行四舍五入
 

如果有人遇到过这样的事情,请告知。

有一个代码。

//+------------------------------------------------------------------+
double date[];
//+------------------------------------------------------------------+
void OnInit()
{
   ArrayResize(date,3);
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   Print("ArraySize(date)=",ArraySize(date));
}
//+------------------------------------------------------------------+
它在终端中实时工作。
DH      0       12:39:43        test (EURGBP.m,M5)      ArraySize(date)=3
LN      0       12:39:43        test (EURGBP.m,M5)      ArraySize(date)=3
DG      0       12:39:43        test (EURGBP.m,M5)      ArraySize(date)=3
但在测试器中,同样的代码却得到了不同的结果。
MN      0       12:34:21        test (EURGBP.m,M15)     2013.01.02 07:59:59   ArraySize(date)=0
OG      0       12:34:21        test (EURGBP.m,M15)     2013.01.02 07:59:59   ArraySize(date)=0
IM      0       12:34:21        test (EURGBP.m,M15)     2013.01.02 07:59:59   ArraySize(date)=0