Una guía breve y un guión de trabajo simple para jugar inicialmente con Bitburner Stock Market.
el Comienzo
Nunca supe mucho sobre el mercado de valores, aparte de que era como apostar y soy terrible para apostar, siempre parece que pierdo. Pero llegué a un punto en mi juego inicial en el que gastaba ~3t+ por cada aumento (aumentan exponencialmente por cada uno que compras, en caso de que aún no lo sepas) y ~3t era todo lo que podía hacer cada día. fuera de piratería. Tengo acceso a 40 aumentos, así que estoy tratando de comprar todo lo que pueda para poder obtener ese logro también. Al darme cuenta de que tomaría una eternidad a este ritmo y considerando que el costo de cada aumento también aumentaba, necesitaba una mejor manera de ganar dinero. Así que decidí aprender sobre cómo jugar en la bolsa de valores en Bitburner, además de que todo es virtual, ¿qué puedo perder?
Resulta que el mercado de valores no se parece tanto a apostar en un casino y confiar en las cartas o tragamonedas y en tu suerte para ganar. El mercado es como la orilla del océano con sus reflujos y flujos que se pueden predecir matemáticamente para aprovecharlos con fines de lucro, que es cómo las personas y las corporaciones ganan dinero en el mercado de valores y en realidad está permitido. Realmente no puedes hacer eso en un casino; por lo que escuché, eso podría meterte en muchos problemas. La información sobre el historial de una acción se denomina datos de mercado, que se pueden comprar para formular matemáticamente estrategias de compra y venta.
Los muy básicos
Estos son los conceptos básicos reales que necesitará saber:
¿Qué es una posición?Una posición es la cantidad de acciones que posee el jugador para una corporación dada. Un jugador toma una posición cuando realiza una compra a través de una orden de compra. Las posiciones abiertas pueden ser largas o cortas según su progreso en el juego. Inicialmente, solo tiene acceso a Long Stocks, pero luego podrá comprar Short Stocks (mucho más tarde parece).
¿Qué son las acciones largas y cortas?Las posiciones largas se refieren a la compra de una acción con la expectativa de que aumente su valor. Las posiciones cortas se benefician cuando el valor subyacente baja de precio. Las acciones cortas a menudo involucran valores que se toman prestados y luego se venden, para volver a comprarlos a un precio más bajo.
Para obtener más información básica, consulte los documentos del juego. esta página.
El mercado de valores de Bitburner
Inicialmente, vas a la Bolsa de Valores a través del mapa: todas las ciudades tienen acceso a él.
Cuenta WSE –Cuesta 200m y es requisito para acceder al mercado de valores. Al comprar esto, se agregará la Bolsa de Valores al menú de la izquierda debajo de 'Mundo'.
Acceso a API TIX de datos de mercado:Cuesta 5b para acceder a las funciones de la API que le permitirán comprar/vender acciones y otras tareas relacionadas con las acciones.
Acceso a datos de mercado de Four Sigma (4S) – Cuesta 1b para acceder a los datos de pronóstico 4S. Leí en alguna parte que usar los datos de 4S aumentará sus ganancias en un 60%. Que es lo que necesitamos ahora mismo.
Acceso a la API del mercado Four Sigma (4S) –Cuesta 25b por el acceso a la API que le permite usar las funciones TIX que requieren 4S Market Data Access.
Para empezar, querrá comprar todas las cosas de acceso al mercado a la vez cuando pueda permitírselo. En el momento en que necesite el mercado de valores, debería estar ganando mucho con la piratería, lo cual es más importante inicialmente (Más piratería xp = más servidores pueden ser pirateados = más $$ ganado e incluso más piratería exp). Más tarde, una vez que sepa más sobre lo que está haciendo, se le pedirá que lo haga todo de nuevo sin acceso a datos 4S y con pocos recursos. Entonces, el objetivo ahora es simplemente hacer una tonelada de efectivo para comprar tantos aumentos iniciales como sea posible mientras aprende cómo funciona el mercado de valores. Recuerde, una vez que aumente, perderá todo su efectivo y tendrá que comenzar de nuevo, por lo que todo su dinero en este punto es completamente desechable y cuanto más gaste en el mercado, más ganará en el mercado.
El Codez
Después de buscar en Internet cualquier información disponible que pude encontrar, logré improvisar un script funcional utilizando el mejor código de muchas fuentes y autores diferentes, principalmente Reddit (que es notoriamente poco confiable), los actualicé a Bitburner 2.0 y la sintaxis NS2, limpié o agregó más comentarios para que sea más fácil ver exactamente lo que está haciendo el script e hizo que la salida general sea más útil y tenga una marca de tiempo más adecuada para que pueda ver que realmente funciona mejor. El propósito es aprender del guión, por lo que lo mantuve lo más simple y autoexplicativo posible, manteniendo la lógica y las matemáticas originales. También encontré fórmulas de un científico de datos para el acceso al mercado sin 4S que afirman funcionar, pero las guardaré para más adelante, tal vez una guía más avanzada. Lo dejé en el código de acciones cortas que encontré y lo envolví en una bandera que puede alternar en el encabezado Globals; no está probado, así que tenga cuidado si juega con esto más tarde cuando tenga acceso a los cortos.
El guión utilizará la mayor cantidad de dinero posible para comprar la mayor cantidad de acciones favorables a la vez para obtener ganancias. Lo he visto usar tanto como 1q comprando acciones cuando hay un gran auge en el mercado. Tenía 40 t cuando comencé el guión por la mañana y gané 150 t por la tarde simplemente dejándolo correr constantemente. En este punto ahora en mi escritura, he comprado 35 aumentos (¡solo quedan 5!) con un costo de ~ 45q ahora cada uno y estoy ganando alrededor de ~ 10q por día ahora con este script. Hay un logro para hacer 2Q (Q no q), pero este script tomaría demasiado tiempo, por lo que se necesitaría más magia bursátil en los cálculos o algún otro truco. Tenga en cuenta que también puede influir en el mercado a través de la piratería/el crecimiento, la compra de acciones e incluso trabajando para la empresa en la que tiene acciones. Entonces, en realidad, este script solo está rascando la superficie de lo que realmente podría hacer para ganar aún más dinero.
Recomiendo simplemente ver la ejecución del script durante unos días. Obtenga una buena idea de los comportamientos del mercado de valores: son 'flujos y mareas'. Recuerde guardar su archivo de juego antes de comenzar en caso de problemas o si simplemente desea regresar. Debería ver mensajes de depuración para todo y puede agregar más si desea ver exactamente lo que está sucediendo. Además, mirando su 'cartera' en el menú del mercado de valores, puede ver cuánto le ha hecho ganar cada posición actualmente y en 'Estadísticas - General - Dinero' puede ver cuánto dinero ha ganado en general en el mercado de valores. Si entra en pánico, simplemente elimine el guión y venda todo, no perderá mucho, solo la mayoría de las tarifas de comisión.
Posición bursátil ->Cuánto stock tiene en la posición.
Pronóstico 4S ->Lo que pronostica el 4S en el próximo 'tick' del mercado para la bolsa.
Valor actual de las acciones:Básicamente, cuánto dinero en total tiene actualmente inmovilizado en acciones.
Valor neto actual:Lo que realmente tienes ahora, deberías matar el guión y venderlo todo. Por lo tanto, este es más su 'banco' actual en lugar de la visión general que muestra el dinero o el 'valor total' con todo inmovilizado en el mercado de valores.
/** @param {NS} ns */ export async function main(ns) { // Logging ns.disableLog('ALL'); //ns.disableLog('sleep'); //ns.disableLog('getServerMoneyAvailable'); ns.tail(); // Globals const scriptTimer = 2000; // Time script waits const moneyKeep = 1000000000; // Failsafe Money const stockBuyOver_Long = 0.60; // Buy stocks when forcast is over this % const stockBuyUnder_Short = 0.40; // Buy shorts when forcast is under this % const stockVolatility = 0.05; // Stocks must be under this volatility const minSharePercent = 5; const maxSharePercent = 1.00; const sellThreshold_Long = 0.55; // Sell Long when chance of increasing is under this const sellThreshold_Short = 0.40; // Sell Short when chance of increasing is under this const shortUnlock = false; // Set true when short stocks are available to player // Functions function buyPositions(stock) { let position = ns.stock.getPosition(stock); let maxShares = (ns.stock.getMaxShares(stock) * maxSharePercent) - position[0]; let maxSharesShort = (ns.stock.getMaxShares(stock) * maxSharePercent) - position[2]; let askPrice = ns.stock.getAskPrice(stock); let forecast = ns.stock.getForecast(stock); let volatilityPercent = ns.stock.getVolatility(stock); let playerMoney = ns.getPlayer().money; // Look for Long Stocks to buy if (forecast >= stockBuyOver_Long && volatilityPercent <= stockVolatility) { if (playerMoney - moneyKeep > ns.stock.getPurchaseCost(stock, minSharePercent, "Long")) { let shares = Math.min((playerMoney - moneyKeep - 100000) / askPrice, maxShares); let boughtFor = ns.stock.buyStock(stock, shares); if (boughtFor > 0) { ns.print('Bought ' + shares + ' Long shares of ' + stock + ' for ' + ns.nFormat(boughtFor, '$0.000a')); } } } // Look for Short Stocks to buy if (shortUnlock) { if (forecast <= stockBuyUnder_Short && volatilityPercent <= stockVolatility) { if (playerMoney - moneyKeep > ns.stock.getPurchaseCost(stock, minSharePercent, "Short")) { let shares = Math.min((playerMoney - moneyKeep - 100000) / askPrice, maxSharesShort); let boughtFor = ns.stock.buyShort(stock, shares); if (boughtFor > 0) { ns.print('Bought ' + shares + ' Short shares of ' + stock + ' for ' + ns.nFormat(boughtFor, '$0.000a')); } } } } } function sellIfOutsideThreshdold(stock) { let position = ns.stock.getPosition(stock); let forecast = ns.stock.getForecast(stock); if (position[0] > 0) { ns.print(stock + ' 4S Forcast -> ' + forecast.toFixed(2)); // Check if we need to sell Long stocks if (forecast < sellThreshold_Long) { let soldFor = ns.stock.sellStock(stock, position[0]); ns.print('Sold ' + stock + ' Long shares of ' + stock + ' for ' + ns.nFormat(soldFor, '$0.000a')); } } if (shortUnlock) { if (position[2] > 0) { ns.print(stock + ' 4S Forcast -> ' + forecast.toFixed(2)); // Check if we need to sell Short stocks if (forecast > sellThreshold_Short) { let soldFor = ns.stock.sellShort(stock, position[2]); ns.print('Sold ' + stock + ' Short shares of ' + stock + ' for ' + ns.nFormat(soldFor, '$0.000a')); } } } } // Main Loop while (true) { // Get stocks in order of favorable forcast let orderedStocks = ns.stock.getSymbols().sort(function (a, b) { return Math.abs(0.5 - ns.stock.getForecast(b)) - Math.abs(0.5 - ns.stock.getForecast(a)); }) let currentWorth = 0; ns.print("-------------------------------"); ns.print('Current Forceasts:'); for (const stock of orderedStocks) { const position = ns.stock.getPosition(stock); if (position[0] > 0 || position[2] > 0) { ns.print(stock + ' Position -> ' + position[0]); // Check if we need to sell sellIfOutsideThreshdold(stock); } // Check if we should buy buyPositions(stock); // Track out current profit over time...
el insecto
Parece que hay un error con la biblioteca numeral.js utilizada por Netscript, al formatear números más allá de 't', por lo que no muestra 'q'. Esto se indica en el código fuente de Bitburner y el desarrollador ha creado su propia función (formatReallyBigNumber) para mostrar los valores q+ correctamente en la pantalla Resumen de Bitburner. Puede agregar las funciones usted mismo al script si esto realmente le molesta porque quería mantener el script lo más simple posible:
Además, cuando el script compra/vende, verá el mensaje brevemente y luego desaparecerá en el texto del registro. Todavía está allí. Puedo hacer que se muestre de nuevo jugando brevemente con las opciones y la interfaz de usuario, así que sospecho que es un error con la interfaz de usuario en lugar de la secuencia de comandos porque no puedo ver nada más que pueda estar mal en la secuencia de comandos. Tal vez alguien más pueda resolverlo y publicar un comentario para una posible solución.
Eso es todo lo que estamos compartiendo hoy para este Quemador de bits guía. Esta guía fue originalmente creada y escrita por Zac fuego estelar. En caso de que no actualicemos esta guía, puede encontrar la última actualización siguiendo este liga.