mirror of
https://github.com/discountry/ritmex-bot.git
synced 2026-09-09 08:18:07 +00:00
Enhance MakerPoints configuration and logic
- Added new configuration options for band-specific order amounts in `config.ts`. - Implemented conditional logic in `MakerPointsEngine` to utilize the new band amounts based on the Binance depth cancel setting. - Refactored order amount handling to improve clarity and maintainability.
This commit is contained in:
+15
-1
@@ -187,12 +187,22 @@ export interface MakerPointsConfig {
|
||||
enableBand0To10: boolean;
|
||||
enableBand10To30: boolean;
|
||||
enableBand30To100: boolean;
|
||||
/** 0-10 bps 档位挂单数量,未配置时使用 perOrderAmount */
|
||||
band0To10Amount: number;
|
||||
/** 10-30 bps 档位挂单数量,未配置时使用 perOrderAmount */
|
||||
band10To30Amount: number;
|
||||
/** 30-100 bps 档位挂单数量,未配置时使用 perOrderAmount */
|
||||
band30To100Amount: number;
|
||||
minRepriceBps: number;
|
||||
/** 是否根据 Binance 盘口深度失衡自动取消单边挂单,默认 true */
|
||||
enableBinanceDepthCancel: boolean;
|
||||
}
|
||||
|
||||
const defaultMakerPointsAmount = parseNumber(process.env.MAKER_POINTS_ORDER_AMOUNT, parseNumber(process.env.TRADE_AMOUNT, 0.001));
|
||||
|
||||
export const makerPointsConfig: MakerPointsConfig = {
|
||||
symbol: resolveSymbolFromEnv("standx"),
|
||||
perOrderAmount: parseNumber(process.env.MAKER_POINTS_ORDER_AMOUNT, parseNumber(process.env.TRADE_AMOUNT, 0.001)),
|
||||
perOrderAmount: defaultMakerPointsAmount,
|
||||
closeThreshold: parseNumber(process.env.MAKER_POINTS_CLOSE_THRESHOLD, 0),
|
||||
stopLossUsd: parseNumber(process.env.MAKER_POINTS_STOP_LOSS_USD, 0),
|
||||
refreshIntervalMs: parseNumber(process.env.MAKER_POINTS_REFRESH_INTERVAL_MS, 500),
|
||||
@@ -206,7 +216,11 @@ export const makerPointsConfig: MakerPointsConfig = {
|
||||
enableBand0To10: parseBoolean(process.env.MAKER_POINTS_BAND_0_10, true),
|
||||
enableBand10To30: parseBoolean(process.env.MAKER_POINTS_BAND_10_30, true),
|
||||
enableBand30To100: parseBoolean(process.env.MAKER_POINTS_BAND_30_100, true),
|
||||
band0To10Amount: parseNumber(process.env.MAKER_POINTS_BAND_0_10_AMOUNT, defaultMakerPointsAmount),
|
||||
band10To30Amount: parseNumber(process.env.MAKER_POINTS_BAND_10_30_AMOUNT, defaultMakerPointsAmount),
|
||||
band30To100Amount: parseNumber(process.env.MAKER_POINTS_BAND_30_100_AMOUNT, defaultMakerPointsAmount),
|
||||
minRepriceBps: parseNumber(process.env.MAKER_POINTS_MIN_REPRICE_BPS, 3),
|
||||
enableBinanceDepthCancel: parseBoolean(process.env.MAKER_POINTS_BINANCE_DEPTH_CANCEL, true),
|
||||
};
|
||||
|
||||
export interface BasisArbConfig {
|
||||
|
||||
@@ -467,8 +467,8 @@ export class MakerPointsEngine {
|
||||
|
||||
|
||||
const binanceSnapshot = this.binanceDepth.getSnapshot();
|
||||
const rawSkipBuy = Boolean(binanceSnapshot?.skipBuySide);
|
||||
const rawSkipSell = Boolean(binanceSnapshot?.skipSellSide);
|
||||
const rawSkipBuy = this.config.enableBinanceDepthCancel && Boolean(binanceSnapshot?.skipBuySide);
|
||||
const rawSkipSell = this.config.enableBinanceDepthCancel && Boolean(binanceSnapshot?.skipSellSide);
|
||||
const skipBuy = closeOnly ? false : rawSkipBuy;
|
||||
const skipSell = closeOnly ? false : rawSkipSell;
|
||||
const prevSkipBuy = this.lastSkipBuy;
|
||||
@@ -542,8 +542,6 @@ export class MakerPointsEngine {
|
||||
skipSell: boolean;
|
||||
}): DesiredOrder[] {
|
||||
const { bid1, ask1, skipBuy, skipSell } = params;
|
||||
const amount = Number(this.config.perOrderAmount);
|
||||
if (!Number.isFinite(amount) || amount <= 0) return [];
|
||||
|
||||
const targets = buildBpsTargets({
|
||||
band0To10: this.config.enableBand0To10,
|
||||
@@ -556,7 +554,16 @@ export class MakerPointsEngine {
|
||||
const priceDecimals = this.getPriceDecimals();
|
||||
const desired: DesiredOrder[] = [];
|
||||
|
||||
const getAmountForBps = (bps: number): number => {
|
||||
if (bps <= 10) return Number(this.config.band0To10Amount);
|
||||
if (bps <= 30) return Number(this.config.band10To30Amount);
|
||||
return Number(this.config.band30To100Amount);
|
||||
};
|
||||
|
||||
for (const bps of targets) {
|
||||
const amount = getAmountForBps(bps);
|
||||
if (!Number.isFinite(amount) || amount <= 0) continue;
|
||||
|
||||
if (!skipBuy) {
|
||||
const price = bid1 * (1 - bps / 10000);
|
||||
if (Number.isFinite(price) && price > 0) {
|
||||
|
||||
Reference in New Issue
Block a user