Eine kurze Anleitung und ein einfaches Arbeitsskript für das erste Spielen mit dem Bitburner Stock Market.
The Beginning
Ich wusste nie viel über den Aktienmarkt, außer dass es wie Glücksspiel ist, und ich bin einfach schrecklich im Glücksspiel – ich scheine immer zu verlieren. Aber ich kam in meinem frühen Spiel an einen Punkt, an dem ich ~ 3 t + für jedes Augment ausgab (sie steigen exponentiell für jedes, das Sie kaufen, falls Sie es noch nicht wussten) und ~ 3 t war ungefähr alles, was ich jeden Tag verdienen konnte abhacken. Ich habe Zugriff auf 40 Erweiterungen, also versuche ich, alles zu kaufen, was ich kann, damit ich auch diese Errungenschaft bekommen kann. Zu erkennen, dass es bei diesem Tempo ewig dauern würde, und wenn man bedenkt, dass die Kosten für jede Erweiterung ebenfalls anstiegen, brauchte ich einen besseren Weg, um Geld zu verdienen. Also beschloss ich, in Bitburner zu lernen, wie man an der Börse spielt, außerdem ist alles virtuell – was kann ich verlieren?
Es stellt sich heraus, dass der Aktienmarkt nicht so sehr wie das Spielen in einem Casino ist und sich auf die Karten oder Spielautomaten und Ihr Glück verlässt, um zu gewinnen. Der Markt ist wie eine Meeresküste mit seinen Höhen und Tiefen, die meistens mathematisch vorhergesagt werden können, um sie gewinnbringend zu nutzen, so verdienen Menschen und Unternehmen Geld an der Börse und es ist tatsächlich erlaubt. Das kann man in einem Casino nicht wirklich machen – wie ich höre, könnte einem das wirklich in große Schwierigkeiten bringen. Informationen über die Geschichte einer Aktie werden als Marktdaten bezeichnet, die erworben werden können, um Kauf- und Verkaufsstrategien mathematisch zu formulieren.
Die Grundlagen
Hier sind die wirklichen Grundlagen, die Sie wissen müssen:
Was ist eine Stelle?Eine Position ist die Anzahl der Aktien, die der Spieler für ein bestimmtes Unternehmen besitzt. Ein Spieler nimmt eine Position ein, wenn er einen Kauf über eine Kauforder tätigt. Offene Positionen können entweder long oder short sein, abhängig von Ihrem Fortschritt im Spiel. Anfangs haben Sie nur Zugriff auf Long Stocks, aber später können Sie Short Stocks kaufen (viel später, wie es scheint).
Was sind Long- und Short-Aktien?Long-Positionen beziehen sich auf den Kauf einer Aktie mit der Erwartung, dass sie an Wert gewinnt. Short-Positionen profitieren, wenn der Kurs des zugrunde liegenden Wertpapiers fällt. Bei Short-Aktien handelt es sich oft um Wertpapiere, die geliehen und dann verkauft werden, um sie hoffentlich zu einem niedrigeren Preis zurückzukaufen.
Weitere grundlegende Informationen finden Sie in der Spieldokumentation hier.
Die Bitburner-Börse
Zunächst gehst du über die Karte zur Börse – alle Städte haben darauf Zugriff.
WSE-Konto –Kostet 200 Mio. und wird für den Zugang zum Aktienmarkt benötigt. Wenn Sie dies kaufen, wird der Aktienmarkt zum linken Menü unter „Welt“ hinzugefügt.
Marktdaten TIX API-Zugriff –Kosten 5b für den Zugriff auf die API-Funktionen, die es Ihnen ermöglichen, Aktien und andere aktienbezogene Aufgaben zu kaufen/verkaufen.
Four Sigma (4S) Marktdatenzugriff – Kosten 1b für den Zugriff auf 4S-Prognosedaten. Ich habe irgendwo gelesen, dass die Verwendung der 4S-Daten Ihren Gewinn um 60% erhöht. Was wir gerade brauchen.
Four Sigma (4S) Markt-API-Zugriff –Kostet 25b für den API-Zugang, mit dem Sie die TIX-Funktionen nutzen können, die 4S Market Data Access erfordern.
Zu Beginn sollten Sie einfach alle Marktzugangsartikel auf einmal kaufen, wenn Sie es sich leisten können. Wenn Sie die Börse brauchen, sollten Sie viel mit Hacken verdienen, was anfangs wichtiger ist (mehr Hacking-XP = mehr Server können gehackt werden = mehr $$ gewonnen und noch mehr Hacking-Exp). Später, wenn Sie mehr darüber wissen, was Sie tun, müssen Sie es ohne 4S-Datenzugriff und wenig Ressourcen noch einmal machen. Das Ziel ist jetzt einfach, eine Menge Geld zu verdienen, um so viele anfängliche Augments wie möglich zu kaufen und gleichzeitig zu lernen, wie der Aktienmarkt funktioniert. Denken Sie daran, dass Sie nach der Erweiterung Ihr gesamtes Geld verlieren und von vorne beginnen müssen. Ihr gesamtes Geld ist zu diesem Zeitpunkt also vollständig verfügbar und je mehr Sie auf dem Markt ausgeben, desto mehr verdienen Sie auf dem Markt.
Der Codez
Nachdem ich das Internet nach allen verfügbaren Informationen durchsucht hatte, die ich finden konnte, gelang es mir, ein funktionierendes Skript zusammenzuschustern, indem ich den besten Code aus vielen verschiedenen Quellen und Autoren, hauptsächlich Reddit (das notorisch unzuverlässig ist), zusammenschusterte, sie auf Bitburner 2.0 und NS2-Syntax aktualisierte, bereinigte hinzugefügt oder weitere Kommentare hinzugefügt, damit es einfacher ist, genau zu sehen, was das Skript tut, und die allgemeine Ausgabe nützlicher und mit einem genaueren Zeitstempel versehen, damit Sie sehen können, dass sie tatsächlich besser läuft. Der Zweck ist, aus dem Skript zu lernen, also habe ich es so einfach und selbsterklärend wie möglich gehalten, während ich die ursprüngliche Mathematik und Logik beibehalten habe. Ich habe auch Formeln von einem Datenwissenschaftler für keinen 4S-Marktzugang gefunden, die angeblich funktionieren, aber ich hebe mir das für später auf, vielleicht für einen fortgeschritteneren Leitfaden. Ich habe den Short-Stocks-Code, den ich gefunden habe, in einem Flag belassen, das Sie im Globals-Header umschalten können – es ist ungetestet, also passen Sie auf, wenn Sie später damit spielen, wenn Sie Zugang zu Shorts haben.
Das Skript verwendet so viel Geld wie möglich, um so viele günstige Aktien auf einmal zu kaufen, um Gewinne zu erzielen. Ich habe gesehen, dass es bis zu 1q beim Kauf von Aktien verwendet, wenn es einen riesigen Marktboom gibt. Ich hatte 40 t, als ich das Skript morgens zum ersten Mal gestartet habe, und habe 150 t bis zum Nachmittag gemacht, indem ich es einfach konstant laufen ließ. An diesem Punkt, an dem ich jetzt schreibe, habe ich 35 Erweiterungen gekauft (nur noch 5 übrig!), die jetzt jeweils ~45q kosten, und ich verdiene jetzt ungefähr ~10q pro Tag mit diesem Skript. Es gibt eine Errungenschaft, um 2Q (Q nicht q) zu machen, aber dieses Skript würde einfach zu lange dauern, also wäre mehr Börsenmagie in den Berechnungen oder ein anderer Cheat nötig. Beachten Sie, dass Sie den Markt auch durch Hacking/Growing, Aktienkäufe und sogar die Arbeit für das Unternehmen, an dem Sie Aktien haben, beeinflussen können. Also wirklich, dieses Skript kratzt nur an der Oberfläche dessen, was Sie tatsächlich tun könnten, um noch mehr Geld zu verdienen.
Ich empfehle, das Skript einfach ein paar Tage lang zu beobachten. Bekommen Sie ein gutes Gefühl für das Verhalten der Aktienmärkte – es ist „Ebbe und Flut“. Denken Sie daran, Ihre Spieldatei zu speichern, bevor Sie beginnen, falls Probleme auftreten oder Sie einfach nur zurückgehen möchten. Sie sollten Debug-Meldungen für alles sehen und Sie können weitere hinzufügen, wenn Sie genau sehen möchten, was vor sich geht. Außerdem können Sie in Ihrem „Portfolio“ im Börsenmenü sehen, wie viel Sie mit jeder Position derzeit verdient haben, und unter „Statistiken – Allgemein – Geld“ können Sie sehen, wie viel Geld Sie insgesamt an der Börse verdient haben. Wenn Sie in Panik geraten, beenden Sie einfach das Skript und verkaufen Sie alles, Sie werden nicht viel verlieren – nur hauptsächlich Provisionsgebühren.
Bestandsposition ->Wie viel Aktien Sie in der Position haben.
4S-Prognose ->Was die 4S-Prognose im nächsten „Tick“ des Marktes für die Aktie prognostiziert.
Aktueller Lagerwert:Grundsätzlich, wie viel Geld Sie derzeit insgesamt in Aktien gebunden haben.
Aktuelles Nettovermögen:Was du jetzt eigentlich hast, solltest du das Drehbuch killen und alles verkaufen. Dies ist also eher Ihre aktuelle „Bank“ als die Übersichtsanzeige Geld oder „Gesamtwert“ mit allem, was an der Börse gebunden ist.
/** @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...
Der Bugz
Es scheint einen Fehler in der von Netscript verwendeten numerische.js-Bibliothek zu geben, wenn Zahlen nach „t“ formatiert werden, sodass „q“ nicht angezeigt wird. Dies ist im Bitburner-Quellcode vermerkt und der Entwickler hat eine eigene Funktion (formatReallyBigNumber) erstellt, um q+-Werte in der Bitburner-Übersichtsanzeige richtig anzuzeigen. Sie können die Funktionen selbst zum Skript hinzufügen, wenn Sie dies wirklich stört, da ich das Skript nur so einfach wie möglich halten wollte:
Auch wenn das Skript kauft/verkauft, sehen Sie die Nachricht kurz und verschwinden dann im Protokolltext. Es ist immer noch da – ich kann es wieder anzeigen lassen, indem ich kurz an den Optionen und der Benutzeroberfläche herumfummele, also vermute ich, dass es eher ein Fehler in der Benutzeroberfläche als im Skript ist, weil ich nichts anderes sehen kann, was im Skript falsch sein könnte. Vielleicht kann jemand anderes es herausfinden und einen Kommentar für eine mögliche Lösung posten.
Das ist alles, was wir heute dafür teilen Bitbrenner führen. Dieses Handbuch wurde ursprünglich erstellt und geschrieben von Zac Sternenfeuer. Falls wir dieses Handbuch nicht aktualisieren, finden Sie das neueste Update, indem Sie diesen folgen Link.