Фондовый рынок все о скорости знаний. В отличие от предыдущих испытаний, текущая цена акций не случайна: она определяется теми, кто играет в игру. Если вы можете определить недооцененную акцию раньше, чем кто-либо другой, то вы написали себе программу для зарабатывания денег.
Цена относится к тому, за сколько люди торгуют акцией, а стоимость - к сумме, которую акция стоит в конце игры.
Каждый игрок начинает с 1000 каждой акции и 0 относительной чистой стоимостью. Каждая акция имеет секретное значение, и ваш счет в конце игры равен(stockValue for each ownedStock) + netWorth
. Ваш собственный капитал может быть отрицательным. В игре с N игроками есть N акций.
шаги:
Игра состоит из следующих шагов:
- Вам дана секретная стоимость одной акции.
- Вы делаете предложение продать акции X of Y за $ Z
- Все игроки получают предложения, и каждый может выбрать один из них, чтобы принять
- Все игроки проинформированы о принятых предложениях
- Вернитесь к шагу 2
Каждый из шагов подробно описан ниже:
void secretValue(int stockType, int value)
:- Значение, которое вы изучаете, не раскрывается ни одному другому игроку.
- Значение между
0
и1000
- Низкие значения чаще встречаются, чем высокие (квадратное равномерное распределение)
Offer makeOffer(List<Stock> currentStock)
- Вы можете вернуться,
null
чтобы не делать никаких предложений.
- Вы можете вернуться,
Offer acceptOffer(List<Offer> offers)
- Вы можете вернуться,
null
чтобы принять ни один из них - Если нет доступных предложений, это не будет называться
- Если вы согласитесь, ваш собственный капитал уменьшится на $ Z (может стать отрицательным) и вы получите X из Y акций. Противоположное происходит с продавцом.
- Если вы примете предложение, обмен произойдет немедленно, и предложение будет удалено, поэтому дополнительные игроки не смогут его принять.
- Вы можете вернуться,
void acceptedOffers(List<Offer> offers)
- Включает также ваши принятые предложения
Статические переменные или запись в файлы не допускаются. (Нет постоянных данных от игры к игре) Допускаются несерьезные соперники.
Интерфейсы:
public final class Stock {
public Stock(int stockType, int amount);
public int getType();
public int getAmount();
public Stock minus(Stock other);
public Stock plus(Stock other);
public Stock minus(int amount);
public Stock plus(int amount);
public Stock setAmount(int amount);
}
public class Offer {
public Offer(Stock offer, int payment);
public Stock getOffer();
public int getPayment();
}
Материалы не на Java:
- Все вызовы состоят из двух строк: Первая строка функция вызывается:
SecretValue
,MakeOffer
,AcceptOffer
,AcceptedOffers
,SetRandom
, и вторая строка , содержащая фактические данные. - Запасы отформатированы с
:
разделителем:stockType:stockAmount
. - Предложения форматируются с
@
разделителем:offer@price
- Списки отформатированы с
;
разделителем SecretValue
отформатирован с:
разделителем:stockType:value
RandomSeed
используется, чтобы сделать ваше представление детерминированным. Если ваше представление использует случайность, пожалуйста, используйте целочисленное значение, переданное в качестве начального числа!- Все вызовы функций требуют ответа. Если ответом является
null
илиvoid
, вернуть пустую строку. - Пожалуйста, включите,
command.txt
который дает аргументы командной строки для запуска вашего представления
счет
Игры, состоящие из 1000 ходов, будут запускаться несколько раз. Игроки будут забиты в соответствии с системой ELO , и в паре с игроками с аналогичным уровнем квалификации. Игрок с наибольшим итоговым результатом ELO побеждает! (Я модифицировал систему так, чтобы в каждой игре очки ELO обновлялись для каждого игрока в паре)
Контроллер включает в себя Autodownloader, поэтому , пожалуйста , начните представление с заголовком: Name, Language
. Если ваша заявка не на Java, каждый блок кода должен начинаться с имени файла. (исключая командный файл, который должен быть первым блоком в вашем посте)
Бег
Есть 2 способа запустить этот проект:
Скачайте исходный код, скомпилируйте и запустите. Вы можете найти источник на Github . Бег
git clone --recursive https://github.com/nathanmerrill/StockExchange.git
Загрузите исполняемый файл JAR. Материалы должны быть размещены в вашем текущем рабочем каталоге в
/submissions
папке. Вы можете скачать только JAR , только материалы или оба
Перейдите run
к запуску проекта (опция по умолчанию) или перейдите download
к загрузке всех представленных материалов, которые пока не отвечают этому вопросу.
Табло
1. 1308.1220497323848 Cheater
2. 1242.0333695640356 InsideTrader
3. 1158.3662658295411 UncleScrooge
4. 1113.8344000358493 BlackMarket
5. 1051.8370015258993 DartMonkey
6. 983.0545446731494 WarGamer
7. 939.457423938002 Spammer
8. 901.4372529538886 DumbBot
9. 859.0519326039137 ShutUpAndTakeMyMoney
10. 852.9448222849587 VincentKasuga
11. 718.2112067329083 Profiteer
источник
Ответы:
Читер, Ява
Пытается ничего не продавать за деньги.
источник
WarGamer, Java
После поверхностного изучения правил я решил, что основной выигрышный ход - не играть. Любой, кто предлагает продать акции, наверняка знает цену и получит прибыль от продажи. Его можно переключать, чтобы он делал «шутливые» предложения продать акцию за доллары Integer.MAX_VALUE в надежде заткнуться и забрать мои деньги.
источник
ShutUpAndTakeMyMoney, Java
Он принимает любое предложение.
источник
DumbBot, Java
Используйте этот бот при создании своего. Предлагает свои секретные акции по сниженной цене.
источник
python_starter, Python 3
Используйте это как отправную точку для любых программ на Python (или других языках)
Принимает случайное предложение.
Командный файл:
Программа:
источник
Винсент Касуга, Ява
Не уверен, что моя Java действительна. Пожалуйста ознакомтесь.
Как это работает
- если вы владеете всеми акциями, вы можете установить цену акции. Вы единственный продавец. 1. Купите все акции. 2. Установите цену всех акций, чтобы быть супер высокой на последнем тике. 3. ПРИБЫЛЬ! - Обычно это невозможно, потому что ...Как это работает, v2
Бот не предсказывает - он использует врожденный недостаток в структуре рынка!Сделать
Вопросы-Ответы
В: Кто такой Винсент Касуга?
A: Он купил весь лук и фьючерс на лук в Соединенных Штатах. (поместите их все в секретный склад) Держите индустрию в выкупе - дайте мне X миллионов, или я установлю цену до небес, и вы все обанкротитесь.
Но он не остановился на этом.
Затем он тайно замкнул луковый ETF (держу пари, что он упадет). Он продал все луковицы за один раз, физически доставив их на бирже тысячами грузовиков. Луковая сумка стоит дешевле, чем лук. Он снова заработал миллионы. Одним словом, река Гудзон переполнена луком.
Он настоящий человек.
Код
"Я загнал в угол Золотой Рынок, мистер Бонд!"
источник
for (offer: offers)
->for (Offer offer: offers)
corneredStockType == null
также не действует.int
не может бытьnull
.Спамер, Java
Спам на рынке с действительно дешевыми акциями, и покупайте акции только тогда, когда цена меньше 20. Когда количество акций упадет до 1, он попытается купить что угодно.
источник
DartMonkey, Java
(не конкурирует: он не победит, и у меня уже есть другой ответ)
Обезьяна-дротик любит бросать вещи ... а рядом с ним большая куча острых палочек. Он видит какую-то бумагу на стене. Бам! Бам! Бам! В мгновение ока Дарт Обезьяна бросила 80 дротиков! Половина дротиков красного цвета, а другая половина синего цвета, и на них случайные числа! Обезьяна Дартс видит компьютер ... Обезьяна Дартс набирает цифры. Дартс обезьяна любит цифры. Обезьяна Дартс зарабатывает деньги на своих дротиках ...
На самом деле, DartMonkey инициализирует целочисленный массив, длина которого в два раза превышает количество акций. Он хранит одно число для количества акций, которые он хочет купить / продать, и одно число для цены акции. Затем он чередует продажу акций из массива и принимает предложения в соответствии с массивом. Если у него нет акций из массива, он ничего не будет предлагать, а если у него нет предложений, выданных ему из массива, он ничего не примет.
Этот ответ был вдохновлен @TheNumberOne, который упомянул обезьян дартс в чате
источник
InsideTrader, Java
InsideTrader просто огляделся и увидел, что все пытаются быть креативными. Но он сделал что-то творческое: делай то, что ожидается.
Этот бот покупает, когда он «стоит», потому что он «позаимствовал» некоторые «внутренние документы», чтобы «направлять» «инвестиционные решения».
To-Do и как это работает в коде. ;)
Код"
источник
Error on line 50: modifier private not allowed here Error on line 54: modifier private not allowed here
, Я бы просто удалил классы и продлил ихPlayer
WallStreet, Котлин
Начнем с того, что продаем высоко и покупаем низко и постепенно смещаемся к тому, что, по его мнению, цена на самом деле. Кроме того, вы можете использовать это как шаблон для создания своего собственного в kotlin.
Примечание: здесь есть ошибка, которую я не могу точно воспроизвести. Если моя программа дает сбой или возникли проблемы, пожалуйста, напишите мне в чате и вставьте ссылку на содержимое
submissions/other/WallStreet/log.txt
источник
command.txt
не нужно имя файла. Хороший пост!$
работает только с именем переменной.${}
выполняет произвольный код. В принципе, это работает в любом случае, и я предпочитаю без скобок.command.txt
:kotlinc
->kotlinc.bat
иkotlin
->kotlin.bat
UncleScrooge, Java
Продавайте акции по действительно высокой цене, и покупайте, только если цена меньше 100.
источник
Профитер, Java
Профессионал в этом за деньги, и он всегда считает монеты. Он консервативно оценивает, сколько у него денег. Затем он купит секретную акцию, если она меньше стоимости, или купит дешевую акцию. Он также помнит, сколько ему заплатили за все, и всегда делает предложения выше цены акций. Кроме того, он сделает более высокие предложения, если у него будет меньше денег.
Примечание: я думаю, что я сделал это правильно, но если бы @NathanMerrill не возражал против просмотра моего кода на предмет ошибок, это было бы здорово
источник
MaxBot, Java
Этот бот пытается извлечь максимальную прибыль из каждой транзакции. При продаже ставит цену неизвестной акции в 300 долларов, при покупке 250 долларов.
источник
BlackMarket, Java
Не много, чтобы сказать об этом, учитывая, что эти транзакции будут ... вне графика, вы могли бы сказать.
источник
NotQuiteABanksBestFriend, Python 3
Command.txt:
Всегда старается продать скрытые акции больше, чем стоит.
источник