JSFiddle - React, Tailwind, and code Playground

by joplomacedo

JavaScript

function getMaxShares({
    limitPrice,
    stopPrice,
    accountBalance,
    availableBuyingPower,
    accountRisk = 0.005,
}) {
    const maxAllowedAccountRisk = 0.02;

    if (accountRisk > maxAllowedAccountRisk) {
        accountRisk = maxAllowedAccountRisk;
        console.error(
            `accountRisk was set to ${accountRisk}, but it cannot exceed ${maxAllowedAccountRisk}. accountRisk was set to ${maxAllowedAccountRisk}`
        );
    }

    const accountRiskInDollars = accountBalance * accountRisk;
    console.log("πŸš€ ~ file: test.js ~ line 30 ~ accountRiskInDollars", accountRiskInDollars)
    const maxSharesBasedOnAccountRisk = accountRiskInDollars / Math.abs(limitPrice - stopPrice);
    console.log("πŸš€ ~ file: test.js ~ line 32 ~ maxSharesBasedOnAccountRisk", maxSharesBasedOnAccountRisk)
    const maxSharesBasedOnAvailableCash = availableBuyingPower / limitPrice;
    console.log("πŸš€ ~ file: test.js ~ line 35 ~ maxSharesBasedOnAvailableCash", maxSharesBasedOnAvailableCash)
    const maxShares = Math.floor(
        Math.min(maxSharesBasedOnAccountRisk, maxSharesBasedOnAvailableCash)
    );
    console.log("πŸš€ ~ file: test.js ~ line 40 ~ maxShares", maxShares)

    return maxShares;
}

const limitPrice = 10;
const availableBuyingPower = 4500;

const maxShares = getMaxShares({
	limitPrice,
  stopPrice: 10.1,
  accountBalance: availableBuyingPower,
  availableBuyingPower,
  accountRisk: 0.02
})


const isError = maxShares*limitPrice > availableBuyingPower
if (isError) {
console.log('Failed!')
}