Честно ответить можете, какие доводы в пользу использования OHLC Bid + Spread, против OHLC Bid + OHLC Ask? Хранить 8 чисел, вместо 5-ти (формат бара и истории сложно поменять)? Это существенно скажется на объеме предоставляемой истории? Или, может, у вас просто нет истории Ask-цены? Логика тестера усложняется? Так во втором случае она даже проще - нет понятия спреда вообще. Что останавливает, честно скажите.
Размер структуры бара - самая значимая характеристика, пропорционально влияющая на объем потребляемых ресурсов терминалом.
Перед нами всегда стоит задача экономии ресурсов, поэтому расширение в таком виде не подходит.
structMqlRates
{
datetime time; // время начала периодаdouble open; // цена открытияdouble high; // наивысшая цена за периодdouble low; // наименьшая цена за периодdouble close; // цена закрытияlong tick_volume; // тиковый объемint spread; // спредlong real_volume; // биржевой объем
};
равен (если не ошибся) 46 байтам.
Размер альтернативной структуры:
structMqlRates
{
datetime time; // время начала периодаdouble openBid; // цена открытия Biddouble highBid; // наивысшая цена за период Biddouble lowBid; // наименьшая цена за период Biddouble closeBid // цена закрытия Biddouble openAsk; // цена открытия Askdouble highAsk; // наивысшая цена за период Askdouble lowAsk; // наименьшая цена за период Askdouble closeAsk // цена закрытия Asklong tick_volume; // тиковый объемlong real_volume; // биржевой объем
};
равен 76 байтам.
Т.е. речь идет об увеличении объема траффика при закачке истории и потребляемой памяти терминалом и тестером (включая агенты) в самом худшем случае на 65%. Понятно, что всего какие-то 65% не могут вас остановить. Причины явно другие.
Т.е. речь идет об увеличении объема траффика при закачке истории и потребляемой памяти терминалом и тестером (включая агенты) в самом худшем случае на 65%. Понятно, что всего какие-то 65% не могут вас остановить. Причины явно другие.
У меня 48 байт получилось:
structMqlRates
{
datetime time; // время начала периодаdouble Base; // базовая цена бара. Все остальные цены отсчитываются от базы в пипсах short openBid; // цена открытия Bidshort highBid; // наивысшая цена за период Bidshort lowBid; // наименьшая цена за период Bidshort closeBid // цена закрытия Bidshort openAsk; // цена открытия Askshort highAsk; // наивысшая цена за период Askshort lowAsk; // наименьшая цена за период Askshort closeAsk // цена закрытия Asklong tick_volume; // тиковый объемlong real_volume; // биржевой объем
};
Кто скажет, что шорта недостаточно - пусть первым кинет в меня хотя бы один пример (всё равно с биржи или форекса).
Размер структуры бара - самая значимая характеристика, пропорционально влияющая на объем потребляемых ресурсов терминалом.
Перед нами всегда стоит задача экономии ресурсов, поэтому расширение в таком виде не подходит.
Ренат, а были ли какие-нибудь попытки оптимизации структуры MqlRates? Например, зачем нужна double (8 байт) точность значениям OLHC, если точность сейчас ограничена максимум пятью знаками после запятой? Почему бы не хранить эти значения как нормализованные на 3 или 5 разрядов int, которые занимают в два раза меньше памяти?
Максимальное значение, которое можно записать при таком подходе - это 42949.67295.
Есть ли данные OLHC на форекс, которые выйдут за эту границу?
Кто скажет, что шорта недостаточно - пусть первым кинет в меня хотя бы один пример (всё равно с биржи или форекса).
hrenfx:
Т.е. речь идет об увеличении объема траффика при закачке истории и потребляемой памяти терминалом и тестером (включая агенты) в самом худшем случае на 65%.
Понятно, что разработчики перед компрессией данных для передачи истории используют подобное преобразование исходной структуры, за счет чего и получается огромный коэффициент сжатия. Но факт остается фактом, даже если ничего не хитрить, вообще ничего, то самое плохое, что можно получить - дополнительные 65%.
Честно ответить можете, какие доводы в пользу использования OHLC Bid + Spread, против OHLC Bid + OHLC Ask? Хранить 8 чисел, вместо 5-ти (формат бара и истории сложно поменять)? Это существенно скажется на объеме предоставляемой истории? Или, может, у вас просто нет истории Ask-цены? Логика тестера усложняется? Так во втором случае она даже проще - нет понятия спреда вообще. Что останавливает, честно скажите.
Размер структуры бара - самая значимая характеристика, пропорционально влияющая на объем потребляемых ресурсов терминалом.
Перед нами всегда стоит задача экономии ресурсов, поэтому расширение в таком виде не подходит.
Размер MqlRates:
равен (если не ошибся) 46 байтам.
Размер альтернативной структуры:
равен 76 байтам.
Т.е. речь идет об увеличении объема траффика при закачке истории и потребляемой памяти терминалом и тестером (включая агенты) в самом худшем случае на 65%. Понятно, что всего какие-то 65% не могут вас остановить. Причины явно другие.
Если вы не верите словам оппонента, какой смысл разговаривать?
Размер MqlRates:
равен (если не ошибся) 46 байтам.
Размер альтернативной структуры:
равен 76 байтам.
Т.е. речь идет об увеличении объема траффика при закачке истории и потребляемой памяти терминалом и тестером (включая агенты) в самом худшем случае на 65%. Понятно, что всего какие-то 65% не могут вас остановить. Причины явно другие.
У меня 48 байт получилось:
Кто скажет, что шорта недостаточно - пусть первым кинет в меня хотя бы один пример (всё равно с биржи или форекса).Размер структуры бара - самая значимая характеристика, пропорционально влияющая на объем потребляемых ресурсов терминалом.
Перед нами всегда стоит задача экономии ресурсов, поэтому расширение в таком виде не подходит.
Ренат, а были ли какие-нибудь попытки оптимизации структуры MqlRates? Например, зачем нужна double (8 байт) точность значениям OLHC, если точность сейчас ограничена максимум пятью знаками после запятой? Почему бы не хранить эти значения как нормализованные на 3 или 5 разрядов int, которые занимают в два раза меньше памяти?
Максимальное значение, которое можно записать при таком подходе - это 42949.67295.
Есть ли данные OLHC на форекс, которые выйдут за эту границу?
Есть ли данные OLHC на форекс, которые выйдут за эту границу?
У меня 48 байт получилось:
Кто скажет, что шорта недостаточно - пусть первым кинет в меня хотя бы один пример (всё равно с биржи или форекса).Т.е. речь идет об увеличении объема траффика при закачке истории и потребляемой памяти терминалом и тестером (включая агенты) в самом худшем случае на 65%.
Vladix:
Например, зачем нужна double (8 байт) точность значениям OLHC, если .....................
Вот ксати, ДА.
вполне можно заменить наи не будет НИ ОДНОГО пострадавшего. Тогда размер волшебным образом возвращается к 46 байтам. Здорово, правда? :)
У меня 48 байт получилось:
Кто скажет, что шорта недостаточно - пусть первым кинет в меня хотя бы один пример (всё равно с биржи или форекса).