Created
August 18, 2019 04:10
-
-
Save BitChop/dae0f055ef9d8c271163dc1009226a8b to your computer and use it in GitHub Desktop.
bustadice script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var config = { | |
settings: { label: "Script Settings", type: "noop" }, | |
wager: { label: "Base Wager", type: "balance", value: 100 }, | |
target: { label: "Base Target", type: "multiplier", value: 100 }, | |
targetMod: { label: "Target Loss", type: "multiplier", value: -1.0 }, | |
stoploss: { label: "Trailing-stop Amount", type: "balance", value: 50000 }, | |
liftmint: { label: "Each Min Target Increases", type: "checkbox", value: false }, | |
skipmode: { label: "Sim Mode", type: "checkbox", value: true }, | |
maxtstop: { label: "On Min Target", type: "radio", value: "reset", options: { | |
stop: { label: "stop script", type: "noop" }, | |
reset: { label: "return to base", type: "noop" } | |
}}, | |
mintarget: { label: "Min Target", type: "multiplier", value: 2 }, | |
maxwstop: { label: "On Max Wager", type: "radio", value: "reset", options: { | |
stop: { label: "stop script", type: "noop" }, | |
reset: { label: "return to base", type: "noop" } | |
}}, | |
maxwager: { label: "Max Wager", type: "balance", value: 100000 }, | |
}; | |
let running = true | |
let base = config.wager.value | |
let wager = config.wager.value | |
let target = config.target.value | |
let losses = 0, profits = 0 | |
let skip = config.skipmode.value | |
let trail = config.stoploss.value | |
let trailBal = this.balance - trail | |
let liftMint = (config.liftmint.value == true); | |
let mint = config.mintarget.value; | |
let retries = 0; | |
while (running) { | |
let logStr = `Betting ${wager/100} bits @ ${Math.round(target * 100) / 100}x.` | |
if(config.maxwager.value !== -1 && config.maxwager.value <= wager){ | |
if(config.maxwstop.value === "stop"){ | |
this.log(`Maximum wager reached. Stopping at (${wager/100} bit) wager`) | |
running = false; | |
break; | |
}else{ | |
retries++; | |
wager = base; | |
losses = 0 | |
} | |
} | |
if(config.mintarget.value !== -1 && (liftMint ? (mint + (2 * retries)) : mint) >= target){ | |
if(config.maxtstop.value === "stop") { | |
this.log(`Minimum target reached. Stopping at target (${target})`) | |
running = false; | |
break; | |
}else{ | |
retries++; | |
target = config.target.value | |
wager = wagerSize() | |
//losses = 0 | |
} | |
} | |
const { multiplier } = skip ? await this.bet(100, 1.01) : await this.bet(wager, target) | |
if (multiplier >= target) { | |
let profit = (wager * target) - wager | |
if(losses > 0){ | |
let recovered = Math.min(losses,profit) | |
losses -= recovered; | |
profit -= recovered; | |
} | |
profits += profit | |
this.log(`${logStr} Won ${Math.round((wager/100) * target)} bits! Total Profits ${Math.round(profits / 100)} bits.`) | |
wager = config.wager.value | |
target = config.target.value | |
if((this.balance - trail) > trailBal){ | |
trailBal = this.balance - trail | |
} | |
retries = 0; | |
}else{ | |
losses += wager | |
profits -= wager | |
this.log(`${logStr} Lost ${Math.round(wager) / 100}. Total Profits ${Math.round(profits / 100)} bits.`) | |
target += config.targetMod.value | |
wager = wagerSize() | |
if(this.balance < trailBal){ | |
this.log(`Stop loss triggered at ${trailBal / 100} bits. Ending profit at ${Math.round(profits / 100)} bits.`); | |
running = false | |
this.stop() | |
} | |
} | |
await sleep(10) | |
} | |
function wagerSize(){ | |
let clamp = 1//retries > 0 ? (1 - ((retries * 1.5) / 98)) : 1 /* experimental */ | |
return Math.max(100, Math.round(((base + ((losses * clamp) / (target - 1)))) / 100) * 100) | |
} | |
function sleep(ms) { | |
return new Promise(resolve => setTimeout(resolve, ms)); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment