Lpstock - Продолжение жизни

Всем привет,

В связи с тем, что сайт lpstock оставил нас, а аналоги немногочисленны и выглядят так, как будто содержат устаревшие данные, я решил сделать свой аналог без смс:

http://zcharboard.ru/lpstock

Нерешенные вопрос: как считается стоимость постройки по чертежу, насколько я смог понять -
Job cost = Estimated items value × System cost index × Structure bonuses,
то есть при сильном упрощении (превращая System cost index × Structure bonuses в константу) достаточно взять какой-то процент от стоимости требуемых материалов для стройки (если, например, считать, что стройка на Jita 4-4 идёт. Верно ли моё упрощение?

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

Формула Job cost взята со страницы Manufacturing - EVE University Wiki

Приветствую.

Во-первых нашел фичу. Открываешь олдскул версию, выбираешь любой сектор кроме average, тыкаешь на карандаш в столбце One item, ничего не меняя сохраняешь, цена в столбце Avg Isk/LP меняется.

Во-вторых зачем вообще нужно разделять isk/lp на два столбца? Первый имеет смысл только когда включен регион average а второй - при любом другом.

Оригинальный сток давал возможность выбрать регион закупки и регион продажи (отдельно) с пунктом “все регионы”. Тут это выглядит немного не так…
В текущей версии можно выбрать один из 4х основных регионов. Он же и регион закупки исходных материалов, и регион продажи. Это не всегда рационально, может быть гораздо выгоднее закупить материалы в тех секторах, которые даже не представлены в выборе, а продать в других, и в итоге выхлоп значительно больше, чем при закупке и продаже в одном секторе. Все равно ресурсы надо тараканить на станцию обмена и обратно. Надеюсь мысль мне донести удалось…

Выборка по всем секторам вроде бы есть, но она представлена в среднесуточных ценах, а не текущих ордерах. В таких условиях выбрать самый выгодный курс не предоставляется возможным. Да, есть возможность вручную изменить цену. Но все равно вверху таблицы должны представляться (таблица должна уметь такое упорядочивание) самые выгодные по курсу lp предметы на продажу. А после изменения цены со средней на текущие, по данным evemarketer, для инста продажи, верхняя часть таблицы оказывается вообще ни о чем. А переделывать все цены ручками, разве для этого создавалась электронная таблица чтобы все позиции вручную пересчитывать? Она кстати после этого даже не обновит порядок.

Ну и напоследок: было бы удобно если в строке с предметом где либо была информация о станции на которой можно продать этот предмет по максимальной цене.


Собственно необходимое решение(имхо): Объединить столбцы isk/lp. Добавить выборку по всему Новому Эдему, либо изменить сектор average на all, чем он по сути и является. Убрать среднесуточные цены из расчетов isk/lp в режиме продажи instant, использовать последние на момент обновления buy ордера.

Обращаю внимание: Такие глупости как ордер на покупку одного патрона по огромной цене(обмениваются в наградном отделе они пачками по 5000 штук), ради содержательности таблицы нужно отсеивать. Реализовано ли это в текущем исполнении мне не известно.

Опционально: Растянуть таблицу на всю страницу. Добавить информацию о месте продажи.

Привет,

сначала расскажу об интерфейсе:

Region: 
  • Avarage - это средние цены по предметам, которые отдаёт даёт esi: market/prices. У этих цен одно значение, которое не делится на sell и buy составляющую.
  • Jita и другие - это цены по регионам The Forge и другим, которые делятся по sell и buy ордерам.

 

Кнопка Region: 

Если навести курсор мыши на одну из этих кнопок, то можно заметить, что столбцы в таблице подсвечиваются прозрачно-зеленым, таким образом отображается на какие данные повлияет переключение региона.
Таким образом ценообразование в подсвеченных колонках идёт по выбранному региону:

  • Agerage - цены на необходимые предметы, на предметы для чертежа, на полученные товар берутся средние (как описано выше),
  • Jita и другие - цены на необходимые предметы, на предметы для чертежа берутся по sell ордерам по минимальным ценам, цены на продажу полученного предмета - это наиболее дорогой buy ордер в выбранном регионе.

 

Selling:

Если навести курсор мыши на одну из этих кнопок, то можно заметить, что столбцы в таблице подсвечиваются прозрачно-зеленым, таким образом отображается на какие данные повлияет переключение этой опции.
Эта опция по сути влияет только на цену продаваемого предмета (как следствие на колонку isk/lp по региону), при этом надо обратить внимание, что если выбран регион Average, то колонка Item не будет подсвечиваться, так как её ценообразование идет из средних цен (которые не делятся на sell/buy – значит нет разницы insta или order продажа).
Колонка Avg Isk/LP не будет подсвечиваться никогда, поскольку там одна цена (не делится на sell/buy).

 

Кнопка Selling:

Это выбор варианта продажи предмета:

  • Insta - выбор обозначающий немедленную продажу по наилучшему buy ордеру в выбранном регионе.
  • Order - Продажа полученного предмета по наименьшей цене sell ордера в выбранном регионе.

 

Кнопка View:

Влияет только на внешний вид таблицы с данными.

 

По вашим вопросам (по той же нумерации / по абзацам):
  1. Выбрав регион Jita в колонке One item вы видите цену этого предмета по Jita-региону, когда вы меняете эту цену, то она заменяет цену, которая так же используется для подсчета agerage isk/lp (то есть среднюю цену) (если переключить регион на average, то можно заметить, что One item цена там другая (не такая как в Jita), сейчас её заполняет среднее значение). Это корректное поведение, так и задумывалось.

  2. Наличие agerage isk/lp сложилось исторически, составить таблицу по средним значениям оказалось очень просто, после этого появился столбик с isk/lp по региону, которую мне показалось удобно сравнивать с “устоявшимся” (средним) значением колонки average.
    Я подумаю над тем как реализовать вашу идею, чтобы оставить один столбик.

  3. “выбрать регион закупки и регион продажи (отдельно)”.
    Я подумаю как можно реализовать разделение регионов закупки и продажи.

  4. “представлена в среднесуточных ценах”: это так только для региона Average, для регионов Jita и другие цены берутся по ордерам, как описано выше, ордера обновляются 3 раза в сутки.
    Я подумывал увеличить число обновлений ордеров в сутки.

    “вверху таблицы должны представляться самые выгодные по курсу lp предметы” - для этого есть сортировка по столбикам isk/lp.
    “А после изменения цены со средней на текущие” - я так понял здесь вы думаете, что цены везде средние, но это не так (ценообразование описано выше) (возможно у вас был выбран регион average или вы выбрали для проверки какой-то товар, цена которого очень сильно скачет, а обновление ордеров только 3 раза в сутки).
    “Она кстати после этого даже не обновит порядок” - когда вы меняете цену, то она меняется только у вас и только на той странце, на которой вы её меняли.

  5. “информация о станции”
    Подумаю над реализацией по добавлению информации о станции.

  6. “Убрать среднесуточные цены из расчетов isk/lp” - средние цены отображаются, если выбран регион average, чтобы было видно по каким ценам считается average isk/lp колонка. Если средние цены не нужны, то надо выбрать регион.

  7. “ордер на покупку одного патрона по огромной цене”
    Я подумаю, как можно реализовать решение проблемы по продаже патронов и других многочисленные предметов.

  8. “Растянуть таблицу на всю страницу” - вы считаете, что для отображения Modern, надо сделать такую же широкую версию, как для OldSchool?

Спасибо за предложения.

То что имеем сейчас тоже неплохо, но что ограничивает?

Обращаю внимание, я упомянул так-же пункт “все секторы”.

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

Так или ииначе, при включеной сортировке по isk/lp от большего к меньшему при обновлении цены на предмет вручную, он остается на прежнем положении а не уступает место предмету с большим значением. Это, конечно, позволяет увидеть получившийся курс, ведь строка сразу не перемещается вглубь таблицы, но она не делает это вообще. В результате параметр по которому происходит сортировка отображает всё вразнобой, делая анализ невозможным.

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

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

Вторая версия OldSchool, на данный момент равняется по левому краю страницы и ничем не ограничивается по сторонам, по этому целиком вмещается на всю страницу.

Спасибо за уточнения, местами стало гораздо понятнее.

Очень сильно – ничего. Но сейчас алгоритм работает в 1 поток и время обновления цен составляет 12 минут, я считаю это много, надо распараллелить.

Подытожу: 
  1. оставить один столбик для isk/lp
  2. разделить регионы закупки и продажи, плюс добавить кнопку “по всем регионам”
  3. увеличить число обновлений ордеров в сутки
  4. добавить информацию о станции
  5. решить проблему с продажей патронов и другие многочисленные предметов (проверять ордера на один предмет со странными ценами)
  6. сортировка после изменения цен

По сравнению с периодом в 8 часов вполне неплохо. Но все таки какой скорости(частоты) обновления вы хотите добиться?

Патроны я привел в качестве наиболее наглядного примера. Как правило такие ордера выглядят максимально привлекательно и быстро выполняются торговцами даже без привлечения lp. Вопрос в том, что если за тот, грубо говоря, час существования ордера lpstock успел обновить цены, то следующие 8 часов он будет мозолить глаза. Ваше решение увеличить частоту обновления частично решит эту проблему.

Размышления над этим вопросом привели меня к интересному решению(Простите за тавтологию): добавить сервис расчета наиболее эффективного, в плане затрат времени на логистику, плана вывода lp, в зависимости от указанной суммы lp под вывод. Чтобы в конечном итоге на руках был маршрут: купить, обменять, продать. Но необходимость в этом пока под вопросом. Пока предлагаю как концепт и пищу для размышлений, да и сам еще подумаю над целесообразностью этого предложения. Но всё-таки такого еще нигде нет.

Один цикл обновления длится 12 минут, но это не значит, что эти циклы идут нон-стоп. На данный момент обновления цен происходят 3 раза в сутки.

Сейчас алгоритм упирается в большое кол-во запросов к ESI. Если эти запросы распараллелить, то будет гораздо лучше, – и сколько получится времени столько и будет достаточно, хотелось бы получить не более 4 минут.

Я отметил это.

Это выглядит очень сложным, да и у каждого своё понимание об эффективности обмена. Я думал добавить информацию об объёме, который надо доставить и забрать у NPC-обменника. Это надо думать, спасибо за предложение.

как по мне первое что должен давать выбрать сайт про ЛП это корпу.
LP Store - Return on ISK имеет полезный столбец 5%. котоырй показывает 5% от объема рынка. это очень помогает в выборе айтимов.

То есть если на рынке покупается предмет пятью участниками, так что

  • первый покупает 1 предмет за 1000 иск
  • второй – 2 предмета по 90 иск
  • третий – 3 предмета по 85 иск
  • четвёртый – 4 предмета по 84 иск
  • а пятый – 90 предметов по 80 иск

(сумме 100 предметов)

То 5% volume это будет 5 предметов, а их средняя стоимость это (1000*1 + 90*2 + 85*2)/5 — то есть я взял эти верхние 5% ордеров и посчитал среднюю цену.

Я верно понял как работает «5% volume» столбик?

Это как раз решило бы ещё и проблему с «завышенными ордерами на патроны», которая описана в сообщениях выше.

5% смотрит на количество сыгравших ордеров. тоесть сколько ты можешь продать предметов покрыв 5% суточного спроса. если в день торгуется 100 предметов то ты можешь выводить 5 штук. это своего рода показатель спроса. потомучто в ЛП шопах очень много “мусора” который выгодный ,но при этом товар ты будешь продавать пол жизни.

Спасибо за уточнение, но я сделал иначе:

Если выбрана опция Selling Insta, то опция Volume 5% отображает 5% от кол-ва предметов, которые можно продать сразу (и по этим 5% считается средняя цена);

Если выбрана опция Selling Order, то опция Volume 5% отображает 5% от кол-ва предметов, которые продаются в магазине сейчас (и по этим 5% считается средняя цена).

Посмотрел на данные, которые доступны через ESI, касающиеся статистики Volume, там доступно только единое число (по каждому предмету), не разделенное на buy и sell ордера, это плохо, потому что нельзя понять были ли это buy или sell ордера реализованы.

Со временем добавлю эту статистическую информацию в таблицу.