mirror of
https://github.com/discountry/ritmex-bot.git
synced 2026-09-11 17:28:08 +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;
|
enableBand0To10: boolean;
|
||||||
enableBand10To30: boolean;
|
enableBand10To30: boolean;
|
||||||
enableBand30To100: boolean;
|
enableBand30To100: boolean;
|
||||||
|
/** 0-10 bps 档位挂单数量,未配置时使用 perOrderAmount */
|
||||||
|
band0To10Amount: number;
|
||||||
|
/** 10-30 bps 档位挂单数量,未配置时使用 perOrderAmount */
|
||||||
|
band10To30Amount: number;
|
||||||
|
/** 30-100 bps 档位挂单数量,未配置时使用 perOrderAmount */
|
||||||
|
band30To100Amount: number;
|
||||||
minRepriceBps: 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 = {
|
export const makerPointsConfig: MakerPointsConfig = {
|
||||||
symbol: resolveSymbolFromEnv("standx"),
|
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),
|
closeThreshold: parseNumber(process.env.MAKER_POINTS_CLOSE_THRESHOLD, 0),
|
||||||
stopLossUsd: parseNumber(process.env.MAKER_POINTS_STOP_LOSS_USD, 0),
|
stopLossUsd: parseNumber(process.env.MAKER_POINTS_STOP_LOSS_USD, 0),
|
||||||
refreshIntervalMs: parseNumber(process.env.MAKER_POINTS_REFRESH_INTERVAL_MS, 500),
|
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),
|
enableBand0To10: parseBoolean(process.env.MAKER_POINTS_BAND_0_10, true),
|
||||||
enableBand10To30: parseBoolean(process.env.MAKER_POINTS_BAND_10_30, true),
|
enableBand10To30: parseBoolean(process.env.MAKER_POINTS_BAND_10_30, true),
|
||||||
enableBand30To100: parseBoolean(process.env.MAKER_POINTS_BAND_30_100, 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),
|
minRepriceBps: parseNumber(process.env.MAKER_POINTS_MIN_REPRICE_BPS, 3),
|
||||||
|
enableBinanceDepthCancel: parseBoolean(process.env.MAKER_POINTS_BINANCE_DEPTH_CANCEL, true),
|
||||||
};
|
};
|
||||||
|
|
||||||
export interface BasisArbConfig {
|
export interface BasisArbConfig {
|
||||||
|
|||||||
@@ -467,8 +467,8 @@ export class MakerPointsEngine {
|
|||||||
|
|
||||||
|
|
||||||
const binanceSnapshot = this.binanceDepth.getSnapshot();
|
const binanceSnapshot = this.binanceDepth.getSnapshot();
|
||||||
const rawSkipBuy = Boolean(binanceSnapshot?.skipBuySide);
|
const rawSkipBuy = this.config.enableBinanceDepthCancel && Boolean(binanceSnapshot?.skipBuySide);
|
||||||
const rawSkipSell = Boolean(binanceSnapshot?.skipSellSide);
|
const rawSkipSell = this.config.enableBinanceDepthCancel && Boolean(binanceSnapshot?.skipSellSide);
|
||||||
const skipBuy = closeOnly ? false : rawSkipBuy;
|
const skipBuy = closeOnly ? false : rawSkipBuy;
|
||||||
const skipSell = closeOnly ? false : rawSkipSell;
|
const skipSell = closeOnly ? false : rawSkipSell;
|
||||||
const prevSkipBuy = this.lastSkipBuy;
|
const prevSkipBuy = this.lastSkipBuy;
|
||||||
@@ -542,8 +542,6 @@ export class MakerPointsEngine {
|
|||||||
skipSell: boolean;
|
skipSell: boolean;
|
||||||
}): DesiredOrder[] {
|
}): DesiredOrder[] {
|
||||||
const { bid1, ask1, skipBuy, skipSell } = params;
|
const { bid1, ask1, skipBuy, skipSell } = params;
|
||||||
const amount = Number(this.config.perOrderAmount);
|
|
||||||
if (!Number.isFinite(amount) || amount <= 0) return [];
|
|
||||||
|
|
||||||
const targets = buildBpsTargets({
|
const targets = buildBpsTargets({
|
||||||
band0To10: this.config.enableBand0To10,
|
band0To10: this.config.enableBand0To10,
|
||||||
@@ -556,7 +554,16 @@ export class MakerPointsEngine {
|
|||||||
const priceDecimals = this.getPriceDecimals();
|
const priceDecimals = this.getPriceDecimals();
|
||||||
const desired: DesiredOrder[] = [];
|
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) {
|
for (const bps of targets) {
|
||||||
|
const amount = getAmountForBps(bps);
|
||||||
|
if (!Number.isFinite(amount) || amount <= 0) continue;
|
||||||
|
|
||||||
if (!skipBuy) {
|
if (!skipBuy) {
|
||||||
const price = bid1 * (1 - bps / 10000);
|
const price = bid1 * (1 - bps / 10000);
|
||||||
if (Number.isFinite(price) && price > 0) {
|
if (Number.isFinite(price) && price > 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user