Ошибки, баги, вопросы - страница 949

 
Renat:
У вас странное отношение к терминалу и ресурсам.

У торгового терминала нет задачи экономить ресурсы, когда его главная задача - работать эффективно с огромным объемами данных. Тем более нельзя жаловаться на то, что четырем копиям числодробил не хватает гига памяти в VPS.

Тут не в этом вопрос а  в том что разное поведение на Win2003х64 сервер (VPS) и Win7x64 Home.

http://file.karelia.ru/6v55j5/ по ссылке видео о том что при запуске терминала расходуется выделенной памяти значительно больше, чем показывает операционная система для данного процесса.

 
olyakish:

Тут не в этом вопрос а  в том что разное поведение на Win2003х64 сервер (VPS) и Win7x64 Home.

http://file.karelia.ru/6v55j5/ по ссылке видео о том что при запуске терминала расходуется выделенной памяти значительно больше, чем показывает операционная система для данного процесса.

О как все запущено.

Слишком долго объяснять и это не имеет никакого отношения к терминалу. Забудьте и не экономьте на VPS.

 
Renat:

О как все запущено.

Слишком долго объяснять и это не имеет никакого отношения к терминалу. Забудьте и не экономьте на VPS.

Может и не так сильно.

К примеру может быть что терминал поднимает сторонние службы которые отъедают больше чем сам терминал. А у меня на ноуте они просто изначально  в старте,

тогда почему память потребляется аналогично первому запуску терминала - службу же достаточно 1  раз запустить. (хотя это спорно если служба может запускать потоки для каждой копии  терминала)

Хорошо спрошу по другому, если сервер 2008 на впс то такого эффекта не будет, раз долго объяснять.

 
olyakish:

Может и не так сильно.

К примеру может быть что терминал поднимает сторонние службы которые отъедают больше чем сам терминал. А у меня на ноуте они просто изначально  в старте,

тогда почему память потребляется аналогично первому запуску терминала - службу же достаточно 1  раз запустить. (хотя это спорно если служба может запускать потоки для каждой копии  терминала)

Хорошо спрошу по другому, если сервер 2008 на впс то такого эффекта не будет, раз долго объяснять.

У меня на VPS (Win XP) примерно по 200 MB терминал 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)    Entry: 1.29445, Stop: 1.28453, Profit: 1.30438, Stop pips: 991, Profit pips: 993
2013.03.29 16:41:57    Experiment_Script (GBPUSD,H4)    Entry: 1.50465, Stop: 1.49348, Profit: 1.51583, Stop pips: 1117, Profit pips: 1117

А должно быть 992 и 993 (по EURUSD), 1117 и 1118 (по GBPUSD). То бишь, подскажите, как получить корректный результат?

 
Rone:

...

Попробуйте делить на 2.0,  а не на просто на 2.

Результат целочисленной операции есть целое число, и не влияет что результат записан в double.

 
muallch:  А почему бы не разрешить (с галкой в настройках) терминалу использовать своп для кешей? Будет выбираемый пользователем компромисс скорострельность/загрузка памяти.
 Лучше с такими вопросами сразу в Сервисдеск. Иначе затеряются.
 
fyords: Попробуйте делить на 2.0,  а не на просто на 2

 Нет, проблема не в этом. Делимое ведь - типа double.

Проблема, скорее всего, вот из-за этих строчек:

   int stop_pips = int((entry_price - stop_price)/_Point);
   int profit_pips = int((profit_price - entry_price)/_Point);
 
Rone:
 Попробуйте вывести на печать значение "(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