mirror of
https://github.com/discountry/ritmex-bot.git
synced 2026-09-11 17:28:08 +00:00
* add docs * Add Binance exchange support - Updated the environment configuration to include Binance as a selectable exchange option. - Enhanced the README documentation to reflect the addition of Binance. - Implemented the Binance exchange adapter and integrated it into the existing exchange framework. - Modified the basis arbitrage strategy to support Binance alongside existing exchanges. - Added tests to ensure proper functionality and integration of Binance within the trading system. * Enhance README with detailed Binance exchange configuration - Added comprehensive instructions for setting up Binance as an exchange option. - Included environment variable specifications for API keys, market types, and trading symbols. - Provided examples for both perpetual and spot trading strategies. - Clarified the use of WebSocket and REST for the Binance adapter. * Enhance exchange support and testing framework - Added a new test suite for exchange contracts to ensure consistency and functionality across supported exchanges. - Refactored exchange ID handling to utilize a centralized list of supported exchanges, improving maintainability. - Updated CLI argument parsing and help documentation to reflect the new exchange structure. - Introduced utility functions for validating supported exchanges and their display names. - Enhanced the BasisApp and strategy runner to leverage the new exchange validation logic. - Added a new test command for running exchange-related tests. * Refactor exchange contract tests and update CLI commands - Removed the trailing supported exchanges set and simplified the logic for trailing stop support in the exchange contract tests. - Updated the test command for exchange contracts to exclude unnecessary tests, streamlining the testing process. - Enhanced test descriptions for clarity and improved understanding of the functionality being tested.
101 lines
2.8 KiB
TypeScript
101 lines
2.8 KiB
TypeScript
import type { AsterOrder, CreateOrderParams } from "../types";
|
|
import type {
|
|
BaseOrderIntent,
|
|
ClosePositionIntent,
|
|
LimitOrderIntent,
|
|
MarketOrderIntent,
|
|
StopOrderIntent,
|
|
TrailingStopOrderIntent,
|
|
} from "../order-schema";
|
|
import { toStringBoolean } from "../order-schema";
|
|
|
|
function applyCommonFields(params: CreateOrderParams, intent: BaseOrderIntent): CreateOrderParams {
|
|
if (params.quantity === undefined) {
|
|
params.quantity = intent.quantity;
|
|
}
|
|
if (params.timeInForce === undefined && intent.timeInForce) {
|
|
params.timeInForce = intent.timeInForce;
|
|
}
|
|
if (intent.reduceOnly !== undefined) {
|
|
params.reduceOnly = toStringBoolean(intent.reduceOnly);
|
|
}
|
|
if (intent.closePosition !== undefined) {
|
|
params.closePosition = toStringBoolean(intent.closePosition);
|
|
}
|
|
return params;
|
|
}
|
|
|
|
export async function createLimitOrder(intent: LimitOrderIntent): Promise<AsterOrder> {
|
|
const params: CreateOrderParams = applyCommonFields(
|
|
{
|
|
symbol: intent.symbol,
|
|
side: intent.side,
|
|
type: "LIMIT",
|
|
quantity: intent.quantity,
|
|
price: intent.price,
|
|
timeInForce: intent.timeInForce ?? "GTX",
|
|
},
|
|
intent
|
|
);
|
|
return intent.adapter.createOrder(params);
|
|
}
|
|
|
|
export async function createMarketOrder(intent: MarketOrderIntent): Promise<AsterOrder> {
|
|
const params: CreateOrderParams = applyCommonFields(
|
|
{
|
|
symbol: intent.symbol,
|
|
side: intent.side,
|
|
type: "MARKET",
|
|
quantity: intent.quantity,
|
|
},
|
|
intent
|
|
);
|
|
return intent.adapter.createOrder(params);
|
|
}
|
|
|
|
export async function createStopOrder(intent: StopOrderIntent): Promise<AsterOrder> {
|
|
const params: CreateOrderParams = applyCommonFields(
|
|
{
|
|
symbol: intent.symbol,
|
|
side: intent.side,
|
|
type: "STOP_MARKET",
|
|
quantity: intent.quantity,
|
|
stopPrice: intent.stopPrice,
|
|
timeInForce: intent.timeInForce ?? "GTC",
|
|
triggerType: intent.triggerType,
|
|
},
|
|
intent
|
|
);
|
|
return intent.adapter.createOrder(params);
|
|
}
|
|
|
|
export async function createTrailingStopOrder(intent: TrailingStopOrderIntent): Promise<AsterOrder> {
|
|
const params: CreateOrderParams = applyCommonFields(
|
|
{
|
|
symbol: intent.symbol,
|
|
side: intent.side,
|
|
type: "TRAILING_STOP_MARKET",
|
|
quantity: intent.quantity,
|
|
activationPrice: intent.activationPrice,
|
|
callbackRate: intent.callbackRate,
|
|
timeInForce: intent.timeInForce ?? "GTC",
|
|
},
|
|
intent
|
|
);
|
|
return intent.adapter.createOrder(params);
|
|
}
|
|
|
|
export async function createClosePositionOrder(intent: ClosePositionIntent): Promise<AsterOrder> {
|
|
const params: CreateOrderParams = applyCommonFields(
|
|
{
|
|
symbol: intent.symbol,
|
|
side: intent.side,
|
|
type: "MARKET",
|
|
quantity: intent.quantity,
|
|
reduceOnly: "true",
|
|
},
|
|
intent
|
|
);
|
|
return intent.adapter.createOrder(params);
|
|
}
|