Новая версия платформы MetaTrader 5 build 2085: Интеграция с Python и массовые улучшения в тестере стратегий - страница 7

 
Konstantin:

я так же как и вы согласен, что бы на сервере делалось как можно больше операций, а в терминал приходила лишь прибыль, я просто мешок с деньгами у компа поставлю и лоток прикручу )))

вы сами то понимаете что у вас на сервер ляжет дополнительная нагрузка в расчетах по всем тикерам биржи и тем самым будет увеличение латенси сервера ? при чем если для вас это не важно, то для других это может быть важно, делайте на своей стороне этот расчет, тем более, что делать его вы будете не по всем доступным тикерам в отличии от работы сервера, а только по своим

Вы думаете при расчетах объемов это не делается? Данные уже подготовлены для расчета объемов, ничего дополнительного делать не нужно.

Я предлагаю к строке

Volume+=V(ask)+V(bid);
добавить еще одну строку
Delta+=V(ask)-V(bid);

Одна операция вычитания - это не нагрукза даже для самого примитивного калькулятора. И разумеется дельту нужно побарно хранить, как и Volume и передавать в дополнительном поле. А не считать ее каждый раз, как вы предполагаете (и как придется делать на клиенте). Клиенту придется скачивать и все тиковые данные, а можно обойтись барными.

И вы и я лишь предполагаем, что происходит там, так что пусть разработчики решат - большая это нагрузка или нет. Предлагаю прекратить спор о том - о чем не знаем.

 
elibrarius:

Вы думаете при расчетах объемов это не делается? Данные уже подготовлены для расчета объемов, ничего дополнительного делать не нужно.

Я предлагаю к строке

Volume+=V(ask)+V(bid);
добавить еще одну строку
Delta+=V(ask)-V(bid);

Одна операция вычитания - это не нагрукза даже для самого примитивного калькулятора. И разумеется дельту нужно побарно хранить, как и Volume и передавать в дополнительном поле. А не считать ее каждый раз, как вы предполагаете (и как придется делать на клиенте). Клиенту придется скачивать и все тиковые данные, а можно обойтись барными.

И вы и я лишь предполагаем, что происходит там, так что пусть разработчики решат - большая это нагрузка или нет. Предлагаю прекратить спор о том - о чем не знаем.

я не предполагаю в отличии от вас, т.к. по Plaza 2 дербаню поток и знаю какие там данные идут, так же знаю, что сервер по всем тикерам moex эти данные дербанит, для интереса возьмите список тикеров с moex, потом получите с того же сервера МТ5 тиковые данные по этому списку и посчитайте дельту для каждого, замерьте при этом потраченное время с подсчетом и без, думаю сами увидите есть нагрузка или нет

 
Konstantin:

я не предполагаю в отличии от вас, т.к. по Plaza 2 дербаню поток и знаю какие там данные идут, так же знаю, что сервер по всем тикерам moex эти данные дербанит, для интереса возьмите список тикеров с moex, потом получите с того же сервера МТ5 тиковые данные по этому списку и посчитайте дельту для каждого, замерьте при этом потраченное время с подсчетом и без, думаю сами увидите есть нагрузка или нет

Для расчета дельты берутся данные отличающиеся от данных для расчета объемов?
 

сегодня получил такой глюк на терминале, 

MT5 билд последний

Windows 7 64

При вводе неправильного пароля в MQL Community и переход в вкладку маркет получил следующее:


 
elibrarius:
Для расчета дельты берутся данные отличающиеся от данных для расчета объемов?

если вам тяжело сделать тест который я предложил выше, то говорить дальше не о чем

 

Просьба к разработчикам.  Добавить стандартный макрос __COUNTER__ ,  который выдаёт новое число при каждом обращении к нему.  Он используется для задания уникальных идентификаторов и типов (обычно внутри макросов),  например:

#define CONCAT(a,b) a##b
#define CONCAT2(a,b) CONCAT(a,b)

#define ARRAY(size)  struct CONCAT2(ARR, __COUNTER__)  { char data[size]; }

ARRAY(10) arr1;   ARRAY(10) arr2;

Сейчас вместо него приходится использовать __LINE__,  но в рассматриваемой ситуации он не поможет, когда оба вызова находятся в одной строке.  Либо же в другом включаемом файле может совпасть вызов в строке с тем же номером.

А также, неплохо было бы иметь возможность объявлять анонимные классы,  тогда всё станет вообще просто.

 
Konstantin:

если вам тяжело сделать тест который я предложил выше, то говорить дальше не о чем

Давно пора. Я же к разработчикам обращался.

По существу вопроса, от ответа на который вы уклонились.

Для расчета дельты берутся данные отличающиеся от данных для расчета объемов?

Одинаковые. И это дает возможность не писать новую функцию, как вы предлагаете. Т.к. она на 99% будет дублировать функцию расчета объемов. И будет отличаться одной строкой Delta+=V(ask)-V(bid); Новая дублирующая функция действительно увеличит нагрузку на сервер, и этого в моем предложении нет, но почему-то предлагаете вы. Зачем простую задачу представлять сложной?

Разумным и простым решением будет добавление этой строки в уже имеющийся код по расчету объема.

 

Баг компилятора.  Невозможно присвоить значение статическим полям шаблонного класса:

template<typename T>
class A
{
 public: 
  static int value;
};

template<typename T>
int A::value=0;

void OnStart()
{
  A<int>::value = 1;  // '=' - semicolon expected
}

На чтение работает нормально.

 
Alexey Navoykov:

Либо же в другом включаемом файле может совпасть вызов в строке с тем же номером.

Добавлять __FILE__.

 
fxsaber:

Добавлять __FILE__.

Имя файла содержит символы, несовместимые с именами типов/переменных.
Причина обращения: