diff --git a/.env.copy b/.env.copy index ecbcc30..0c298e3 100644 --- a/.env.copy +++ b/.env.copy @@ -12,4 +12,5 @@ MAX_SELL_RETRIES=5 AUTO_SELL_DELAY=1000 LOG_LEVEL=info MIN_POOL_SIZE=10 +MAX_POOL_SIZE=50 ONE_TOKEN_AT_A_TIME=true diff --git a/buy.ts b/buy.ts index 253bb44..071701f 100644 --- a/buy.ts +++ b/buy.ts @@ -48,6 +48,7 @@ import { SNIPE_LIST_REFRESH_INTERVAL, USE_SNIPE_LIST, MIN_POOL_SIZE, + MAX_POOL_SIZE, ONE_TOKEN_AT_A_TIME, } from './constants'; @@ -71,6 +72,7 @@ let quoteToken: Token; let quoteTokenAssociatedAddress: PublicKey; let quoteAmount: TokenAmount; let quoteMinPoolSizeAmount: TokenAmount; +let quoteMaxPoolSizeAmount: TokenAmount; let processingToken: Boolean = false; @@ -90,6 +92,7 @@ async function init(): Promise { quoteToken = Token.WSOL; quoteAmount = new TokenAmount(Token.WSOL, QUOTE_AMOUNT, false); quoteMinPoolSizeAmount = new TokenAmount(quoteToken, MIN_POOL_SIZE, false); + quoteMaxPoolSizeAmount = new TokenAmount(quoteToken, MAX_POOL_SIZE, false); break; } case 'USDC': { @@ -102,6 +105,7 @@ async function init(): Promise { ); quoteAmount = new TokenAmount(quoteToken, QUOTE_AMOUNT, false); quoteMinPoolSizeAmount = new TokenAmount(quoteToken, MIN_POOL_SIZE, false); + quoteMaxPoolSizeAmount = new TokenAmount(quoteToken, MAX_POOL_SIZE, false); break; } default: { @@ -114,6 +118,9 @@ async function init(): Promise { logger.info( `Min pool size: ${quoteMinPoolSizeAmount.isZero() ? 'false' : quoteMinPoolSizeAmount.toFixed()} ${quoteToken.symbol}`, ); + logger.info( + `Max pool size: ${quoteMaxPoolSizeAmount.isZero() ? 'false' : quoteMaxPoolSizeAmount.toFixed()} ${quoteToken.symbol}`, + ); logger.info(`One token at a time: ${ONE_TOKEN_AT_A_TIME}`); logger.info(`Buy amount: ${quoteAmount.toFixed()} ${quoteToken.symbol}`); logger.info(`Auto sell: ${AUTO_SELL}`); @@ -179,6 +186,23 @@ export async function processRaydiumPool(id: PublicKey, poolState: LiquidityStat } } + if (!quoteMaxPoolSizeAmount.isZero()) { + const poolSize = new TokenAmount(quoteToken, poolState.swapQuoteInAmount, true); + + if (poolSize.gt(quoteMaxPoolSizeAmount)) { + logger.warn( + { + mint: poolState.baseMint, + pooled: `${poolSize.toFixed()} ${quoteToken.symbol}`, + }, + `Skipping pool, bigger than ${quoteMaxPoolSizeAmount.toFixed()} ${quoteToken.symbol}`, + `Swap quote in amount: ${poolSize.toFixed()}`, + ); + logger.info(`-------------------🤖🔧------------------- \n`); + return; + } + } + if (CHECK_IF_MINT_IS_RENOUNCED) { const mintOption = await checkMintable(poolState.baseMint); diff --git a/constants/constants.ts b/constants/constants.ts index 181446f..eb97806 100644 --- a/constants/constants.ts +++ b/constants/constants.ts @@ -16,4 +16,5 @@ export const PRIVATE_KEY = retrieveEnvVariable('PRIVATE_KEY', logger); export const QUOTE_MINT = retrieveEnvVariable('QUOTE_MINT', logger); export const QUOTE_AMOUNT = retrieveEnvVariable('QUOTE_AMOUNT', logger); export const MIN_POOL_SIZE = retrieveEnvVariable('MIN_POOL_SIZE', logger); +export const MAX_POOL_SIZE = retrieveEnvVariable('MAX_POOL_SIZE', logger); export const ONE_TOKEN_AT_A_TIME = retrieveEnvVariable('ONE_TOKEN_AT_A_TIME', logger) === 'true';