Субботник по наполнению FAQ (часто встречающиеся вопросы). Поможем товарищам! - страница 14

 
TheXpert:
А правильней всего, имхо, всегда просить максимально свежую информацию у терминала.

этот тезис никто не оспаривает. состояние ордеров (массив) запрашивается именно тогда, когда нужно с ними работать.

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

Но вы утверждаете, что массив тикетов - УГ. Обоснуйте почему.

-------------

Тарас предложил "ультра" вариант, когда в массив пишется вообще вся инфа про ордер. Могу согласится с этим только в положении, что это вся инфа не понадобится. И в упрощенном варианте по большому счету нужны только тикеты.

 
TheXpert:
Не предложу. Чаще всего массив тикетов вообще не нужен. А правильней всего, имхо, всегда просить максимально свежую информацию у терминала.
В массив Вы получаете инфу, живущую условно 1 тик. Какая более "свежая" информация Вам нужна? Я исхожу из своей практики, когда у меня на счёте могут работать одновременно 2-4 мультивалютника (я про демку) для которых просто не позволительно лишний раз "тревожить сервер по пустякам".

А вообще, это лично Ваши и моя точка зрения. А пользователю нужно всегда давать право выбора - чьи аргументы здравомыслее. ;)

P.S. И я всего лишь дал СВОЙ ответ на поставленный в FAQ вопрос. :)

 

Ок, ИМХО УГ, потому что ИМХО правильно иметь наиболее свежую информацию об ордерах. И без массива ордеров ИМХО можно обойтись в 95% случаев.

Хотите -- добавляйте, я просто высказал свое мнение.

 

Рассудим так:

- с точки зрения удобства и абстрации моделей - лучше использовать массивы.
- для ускорения работы - без массивов.

Актуальность информации здесь ни при чем. В обоих вариантах - с массивами или без - актуальность свежая на 100%

 
sergeev:

-------------

Тарас предложил "ультра" вариант, когда в массив пишется вообще вся инфа про ордер. Могу согласится с этим только в положении, что это вся инфа не понадобится. И в упрощенном варианте по большому счету нужны только тикеты.

Алексей! Я далёк от мысли, что вводя в FAQ этот вопрос (Получение массива тикетов «своих» ордеров), Вы подразумевали о "положении, что это вся инфа не понадобится" - типа поиграться?!
Или я что-то не правильно понял?
 
TarasBY:
Алексей! Я далёк от мысли, что вводя в FAQ этот вопрос (Получение массива тикетов «своих» ордеров), Вы подразумевали о "положении, что это вся инфа не понадобится" - типа поиграться?!
Или я что-то не правильно понял?

вы просто почему то в понятие "свой тикет" внесли кроме тикета и все его свойства.

но ваше предложение я обязательно внес, как расширяющую возможность "просто тикета".

В нем тоже есть частая потребность, особенно при анализе и сравнении исторических данных по ордерам.

 
sergeev:


Рассудим так:

- с точки зрения удобства и абстрации моделей - лучше использовать массивы.
- для ускорения работы - без массивов.

Актуальность информации здесь ни при чем. В обоих вариантах - с массивами или без - актуальность свежая на 100%

На счёт второго ("для ускорения работы - без массивов") я бы не спешил с безапелляционностью.
Простая логика подсказывает, что лишнее обращение к серверу за "свежей информацией" - это дополнительное время. И оно ни каким образом не может соперничать по времени с выборкой той же инфы из массива.
Есть эксперт по быстродействию работы кода - Виктор (Vinin), вот его бы мнение было интересно!
 
TarasBY:
На счёт второго ("для ускорения работы - без массивов") я бы не спешил с безапелляционностью.
Простая логика подсказывает, что лишнее обращение к серверу за "свежей информацией" - это дополнительное время. И оно ни каким образом не может соперничать по времени с выборкой той же инфы из массива.
Есть эксперт по быстродействию работы кода - Виктор (Vinin), вот его бы мнение было интересно!

еще раз напомню, что в работе со свойствами ордера - обращения к серверу не происходит!

В торговле самое главное правило - актуальность (чтоб не превратиться в УГ, про которое писал TheXpert).
Поэтому если вы на каждой функции будете обращаться к списку ордеров, и создавать массив заново, то это однозначно приведет к торможению. Из-за заполнения массива.

То есть можно сэкономить в общем только на актуализации массива и повторного OrdeSelect (уже по тикету).

Если у вас 1-2 рабочих ордера, то массив не критичен, но если 50-100, это уже существенно.

 
Скажу большее: исходя из озвученной мной ранее концепции "Уменьшить нагрузку на сервер" ( а я бы назвал, точнее для себя определяю, как "Оптимизация по быстродействию кода") я в начале Start() получаю и все цены в отдельный массив (если нужно по нескольким инструментам). А, уж, если понадобиться провести торговую операцию, делаю RefreshRates().

Я никому не навязываю такой подход, просто я вижу в нём рациональное зерно и использую этот принцип в своих разработках.

P.S. Это не для инициализации спора на эту тему, это просто аргумент к вышесказанному.

 
sergeev:

Поэтому если вы на каждой функции будете обращаться к списку ордеров, и создавать массив заново, то это однозначно приведет к торможению. Из-за заполнения массива.

А я разве такое утверждал? Массив тикетов заполняется один раз за тик, если советник работает на каждом тике. А потом вместо привычной выборки:
    for (int li_int = li_total - 1; li_int >= 0; li_int--)
    {
        if (OrderSelect (li_int, SELECT_BY_POS))
        {
        .......
        }
    }
я делаю выборку из
for (int li_TIC = 0; li_TIC < gi_cnt_Tickets; li_TIC++)
{

}

или:
    for (int li_SMB = 0; li_SMB < ArraySize (gsa_Symbols); li_SMB++)
    {
    }
в зависимости от того как мне удобнее для той или иной функции.
Должен согласиться, что рациональность такого подхода заметна больше в мультивалютных системах, которых меньшинство.