Подымает расход памяти до 6G, связано с тем, что создаётся и удаляется около 3000шт графических объектов в цикле, они создаются и удаляются по требованию пользователя, это графический безбуферный индикатор. Одновременно может создаваться 5-8 пачек объектов, в каждой до 3000шт, и вот со временем работы терминал начинает подвисать, и приходиться перезагружать, не так часто, но раз в сутки точно. Хорошо, как только найду закономерность - сразу сделаю заявку.
А что за надобность создавать столько объектов ??? Конечно, если создавать сотни тысяч графических примитивов - память можно исчерпать, даже если с ней работать корректно.
Можно привести пример, когда бы пользователю реально столько потребовалось ?
По-моему, уже при сотне объектов - нормальный человек начинает большую часть из них игнорировать...
Почему
бы не добавить информацию о стакане (на глубину пусть 100 лотов хотя
бы) на первый тик? Если торгуем мало ликвидный актив, то это
может быть очень значимым показателем. Пусть не на каждой минуте, а начиная с
15 минутки.
А что за надобность создавать столько объектов ??? Конечно, если создавать сотни тысяч графических примитивов - память можно исчерпать, даже если с ней работать корректно.
Можно привести пример, когда бы пользователю реально столько потребовалось ?
По-моему, уже при сотне объектов - нормальный человек начинает большую часть из них игнорировать...
~1800 на кнопку при увеличенном графике, если уменьшить бары, то будет в два раза больше. На скрине нажато всего 2 кнопки (пачки) из 28, итого объектов = 3665шт. Тут игнорировать то нечего)
~1800 на кнопку при увеличенном графике, если уменьшить бары, то будет в два раза больше. На скрине нажато всего 2 кнопки (пачки) из 28, итого объектов = 3665шт. Тут игнорировать то нечего)
Renat Fatkhullin: У вас на 1 пиксель по объекту чтоли?
Рисуется трендовыми линиями, как нарисовать бары, другого решения не нашёл. Сейчас расставил флаги, то пока работает очень даже хорошо, вот только с удалением и первоначальным рисование тормоза, но это не важно, 1-2 секунда ничего не решает в этом случае.
А вот так паршиво рисует в пятом терминале - отправил просьбу в СД
Vitaly Muzichenko: Рисуется трендовыми линиями, как нарисовать бары, другого решения не нашёл. Сейчас расставил флаги, то пока работает очень даже хорошо, вот только с удалением и первоначальным рисование тормоза, но это не важно, 1 секунда ничего не решает в этом случае.
Так что вы рисуете? Бары или кнопки? Вы же постоянно повторяете про кнопка-кнопка-кнопка.
Если кнопки, то их эффективнее рисовать канвас объектами - всего один объект на кнопку. Сделали два битмапа в памяти для нажатой и отжатой кнопки и все.
Так что вы рисуете? Бары или кнопки? Вы же постоянно повторяете про кнопка-кнопка-кнопка.
Если кнопки, то их эффективнее рисовать канвас объектами - всего один объект на кнопку. Сделали два битмапа в памяти для нажатой и отжатой кнопки и все.
Рисуются кнопки единоразово в самом начале, ну а потом уже бары, свечи и линии через буфера.
Больше всего потребление идёт именно на рисование баров, так-ка там много маленьких объектов, и их нужно обновлять при прокрутке графика, поэтому идёт частое обращение к существованию объекта и изменения точек привязки.
Воспользуйтесь биржевой торговлей с постоянными переоткрытиями позиций между тоговыми сессиями, подержите позы пару недель и сразу станет понятно. Вместо десятков разрозненных ордеров и позиций вы увидите одну красивую и точную строку. Как и просили трейдеры.
Я трейдер и этого не просил. Более того, рациональность "одной строчки" если и прослеживается, то только в приведенном примере. Чтобы не быть голословным, привожу советник для тестера (выходные)
// Для Netting-счета
inputint Amount = 5; // Количество OrderSend inputint Interval = 10000; // Через сколько тиков делать очередной OrderSend
voidOnTick() { staticint i = 1; staticint Count = 0;
if ((Count < Amount) && (i % Interval == 0)) if (MyOrderSend((Count %2 == 0) ? -0.99 : 0.99)) // попеременно уменьшаем и увеличиваем BUY-позу на 0.99 лота Count++;
i++; }
Отчет
Ордера
Время открытия
Ордер
Символ
Тип
Объем
Цена
S / L
T / P
Время
Состояние
Комментарий
2017.01.27 00:00:00
2
EURUSD
buy
1.00 / 1.00
1.06817
2017.01.27 00:00:00
filled
2017.01.27 02:01:21
3
EURUSD
sell
0.99 / 0.99
1.06815
2017.01.27 02:01:21
filled
2017.01.27 03:14:27
4
EURUSD
buy
0.99 / 0.99
1.06811
2017.01.27 03:14:27
filled
2017.01.27 04:05:50
5
EURUSD
sell
0.99 / 0.99
1.06851
2017.01.27 04:05:50
filled
2017.01.27 05:18:01
6
EURUSD
buy
0.99 / 0.99
1.06803
2017.01.27 05:18:01
filled
2017.01.27 06:42:47
7
EURUSD
sell
0.99 / 0.99
1.06749
2017.01.27 06:42:47
filled
2017.01.27 23:59:59
8
EURUSD
sell
0.01 / 0.01
1.06968
2017.01.27 23:59:59
filled
end of test
Сделки
Время
Сделка
Символ
Тип
Направление
Объем
Цена
Ордер
Комиссия
Своп
Прибыль
Баланс
Комментарий
2017.01.27 00:00:00
1
balance
0.00
0.00
10 000 000.00
10 000 000.00
2017.01.27 00:00:00
2
EURUSD
buy
in
1.00
1.06817
2
0.00
0.00
0.00
10 000 000.00
2017.01.27 02:01:21
3
EURUSD
sell
out
0.99
1.06815
3
0.00
0.00
-1.85
9 999 998.15
2017.01.27 03:14:27
4
EURUSD
buy
in
0.99
1.06811
4
0.00
0.00
0.00
9 999 998.15
2017.01.27 04:05:50
5
EURUSD
sell
out
0.99
1.06851
5
0.00
0.00
37.00
10 000 035.15
2017.01.27 05:18:01
6
EURUSD
buy
in
0.99
1.06803
6
0.00
0.00
0.00
10 000 035.15
2017.01.27 06:42:47
7
EURUSD
sell
out
0.99
1.06749
7
0.00
0.00
-50.16
9 999 984.99
2017.01.27 23:59:59
8
EURUSD
sell
out
0.01
1.06968
8
0.00
0.00
1.54
9 999 986.53
end of test
0.00
0.00
-13.47
9 999 986.53
В тестере, к сожалению, новое представление не реализовано, но по отчету не сложно понять, что это будет в виде "одной строчки". Какую инфу и удобство несет эта одна строчка в данной ситуации - понять не могу. Можно месяцами очень активно торговать в режиме only BUY, при этом вместо полного закрытия позиции, оставлять мин. лот (0.01), который никакого риска не несет (копейки). И в итоге будет ОДНА строчка! Вместо того, чтобы показать, что здесь было куплено на 0.99, а здесь эти 0.99 были закрыты.
На форексе это тоже отлично помогает для компаний, кто использует ежедневное переоткрытие позиций вместо начисления свопа.
Именно так и нужно понимать смысл слияния - логическая цепочка состояний одной исходной позиции сворачивается в одну строку. Другая позиция по тому же символу, созданная по другой логике, будет отображаться отдельно.
Уберите тогда упоминание MT4-соответствия. Это все совсем из другой оперы, и на каком-нибудь ECN, где частичное исполнение на больших лотах случается в 90% случаев, такой стейт даже вреден.
Рисуется трендовыми линиями, как нарисовать бары, другого решения не нашёл.
А зачем рисовать график трендовыми линиями? Самый простой способ нарисовать график - через индикатор. Там можно и барами и свечами нарисовать. И будет это без создания кучи графических объектов! А самое главное - чтобы написать код такого индикатора не нужно много времени.
Подымает расход памяти до 6G, связано с тем, что создаётся и удаляется около 3000шт графических объектов в цикле, они создаются и удаляются по требованию пользователя, это графический безбуферный индикатор. Одновременно может создаваться 5-8 пачек объектов, в каждой до 3000шт, и вот со временем работы терминал начинает подвисать, и приходиться перезагружать, не так часто, но раз в сутки точно. Хорошо, как только найду закономерность - сразу сделаю заявку.
А что за надобность создавать столько объектов ??? Конечно, если создавать сотни тысяч графических примитивов - память можно исчерпать, даже если с ней работать корректно.
Можно привести пример, когда бы пользователю реально столько потребовалось ?
По-моему, уже при сотне объектов - нормальный человек начинает большую часть из них игнорировать...
Почему бы не добавить информацию о стакане (на глубину пусть 100 лотов хотя бы) на первый тик? Если торгуем мало ликвидный актив, то это может быть очень значимым показателем. Пусть не на каждой минуте, а начиная с 15 минутки.
А что за надобность создавать столько объектов ??? Конечно, если создавать сотни тысяч графических примитивов - память можно исчерпать, даже если с ней работать корректно.
Можно привести пример, когда бы пользователю реально столько потребовалось ?
По-моему, уже при сотне объектов - нормальный человек начинает большую часть из них игнорировать...
~1800 на кнопку при увеличенном графике, если уменьшить бары, то будет в два раза больше. На скрине нажато всего 2 кнопки (пачки) из 28, итого объектов = 3665шт. Тут игнорировать то нечего)
~1800 на кнопку при увеличенном графике, если уменьшить бары, то будет в два раза больше. На скрине нажато всего 2 кнопки (пачки) из 28, итого объектов = 3665шт. Тут игнорировать то нечего)
У вас на 1 пиксель по объекту чтоли?
Рисуется трендовыми линиями, как нарисовать бары, другого решения не нашёл. Сейчас расставил флаги, то пока работает очень даже хорошо, вот только с удалением и первоначальным рисование тормоза, но это не важно, 1-2 секунда ничего не решает в этом случае.
А вот так паршиво рисует в пятом терминале - отправил просьбу в СД
Рисуется трендовыми линиями, как нарисовать бары, другого решения не нашёл. Сейчас расставил флаги, то пока работает очень даже хорошо, вот только с удалением и первоначальным рисование тормоза, но это не важно, 1 секунда ничего не решает в этом случае.
Так что вы рисуете? Бары или кнопки? Вы же постоянно повторяете про кнопка-кнопка-кнопка.
Если кнопки, то их эффективнее рисовать канвас объектами - всего один объект на кнопку. Сделали два битмапа в памяти для нажатой и отжатой кнопки и все.
Так что вы рисуете? Бары или кнопки? Вы же постоянно повторяете про кнопка-кнопка-кнопка.
Если кнопки, то их эффективнее рисовать канвас объектами - всего один объект на кнопку. Сделали два битмапа в памяти для нажатой и отжатой кнопки и все.
Рисуются кнопки единоразово в самом начале, ну а потом уже бары, свечи и линии через буфера.
Больше всего потребление идёт именно на рисование баров, так-ка там много маленьких объектов, и их нужно обновлять при прокрутке графика, поэтому идёт частое обращение к существованию объекта и изменения точек привязки.
Возьмите один объект канвас на весь экран и сами в нем линии рисуйте.
Это категорически эффективнее попыток управлять тысячами мелких объектов.
Воспользуйтесь биржевой торговлей с постоянными переоткрытиями позиций между тоговыми сессиями, подержите позы пару недель и сразу станет понятно. Вместо десятков разрозненных ордеров и позиций вы увидите одну красивую и точную строку. Как и просили трейдеры.
Я трейдер и этого не просил. Более того, рациональность "одной строчки" если и прослеживается, то только в приведенном примере. Чтобы не быть голословным, привожу советник для тестера (выходные)
input int Amount = 5; // Количество OrderSend
input int Interval = 10000; // Через сколько тиков делать очередной OrderSend
bool MyOrderSend( double Lots )
{
MqlTick Tick;
SymbolInfoTick(_Symbol, Tick);
MqlTradeRequest Request = {0};
Request.action = TRADE_ACTION_DEAL;
Request.symbol = _Symbol;
if (Lots > 0)
{
Request.volume = Lots;
Request.price = Tick.ask;
Request.type = ORDER_TYPE_BUY;
}
else
{
Request.volume = -Lots;
Request.price = Tick.bid;
Request.type = ORDER_TYPE_SELL;
}
MqlTradeResult Result;
return(OrderSend(Request, Result));
}
void OnInit()
{
MyOrderSend(1); // Открываем начальную BUY-позицию
}
void OnTick()
{
static int i = 1;
static int Count = 0;
if ((Count < Amount) && (i % Interval == 0))
if (MyOrderSend((Count %2 == 0) ? -0.99 : 0.99)) // попеременно уменьшаем и увеличиваем BUY-позу на 0.99 лота
Count++;
i++;
}
Отчет
В тестере, к сожалению, новое представление не реализовано, но по отчету не сложно понять, что это будет в виде "одной строчки". Какую инфу и удобство несет эта одна строчка в данной ситуации - понять не могу. Можно месяцами очень активно торговать в режиме only BUY, при этом вместо полного закрытия позиции, оставлять мин. лот (0.01), который никакого риска не несет (копейки). И в итоге будет ОДНА строчка! Вместо того, чтобы показать, что здесь было куплено на 0.99, а здесь эти 0.99 были закрыты.
На форексе это тоже отлично помогает для компаний, кто использует ежедневное переоткрытие позиций вместо начисления свопа.
Именно так и нужно понимать смысл слияния - логическая цепочка состояний одной исходной позиции сворачивается в одну строку. Другая позиция по тому же символу, созданная по другой логике, будет отображаться отдельно.
Рисуется трендовыми линиями, как нарисовать бары, другого решения не нашёл.