update refactor

This commit is contained in:
KienVT9 2025-07-08 18:03:36 +07:00
parent 01abc7e446
commit 55ad0607f3
39 changed files with 4304 additions and 584 deletions

View file

@ -0,0 +1,69 @@
import { CancelOrderParamsV5, GetAccountOrdersParamsV5, GetKlineParamsV5, OrderParamsV5, RestClientV5 } from 'bybit-api';
import { Candle } from '../dao/candles';
export class BybitService {
private client: RestClientV5;
constructor(apiKey: string, apiSecret: string, testnet: boolean = true) {
this.client = new RestClientV5({
key: apiKey,
secret: apiSecret,
testnet
});
}
async createOrder(orderData: OrderParamsV5): Promise<any> {
try {
const res = await this.client.submitOrder(orderData);
return { success: true, data: res };
} catch (error: any) {
return { success: false, error: error.message };
}
}
async listOrders(params: GetAccountOrdersParamsV5): Promise<any[]> {
try {
const res = await this.client.getActiveOrders(params);
return res.result?.list || [];
} catch (error: any) {
return [];
}
}
async cancelOrder(params: CancelOrderParamsV5): Promise<any> {
try {
const res = await this.client.cancelOrder(params);
return { success: true, data: res };
} catch (error: any) {
return { success: false, error: error.message };
}
}
async listPositions(params: any): Promise<any[]> {
try {
const res = await this.client.getPositionInfo(params);
return res.result?.list || [];
} catch (error: any) {
return [];
}
}
async getCandles(params: GetKlineParamsV5): Promise<Candle[]> {
try {
const res = await this.client.getKline(params);
const list = res.result?.list || [];
// Bybit trả về: [timestamp, open, high, low, close, volume, turnover]
return list.map((item: any[]) => ({
time: new Date(Number(item[0])).toISOString(),
timestamp: Number(item[0]),
open: Number(item[1]),
high: Number(item[2]),
low: Number(item[3]),
close: Number(item[4]),
volume: Number(item[5]),
turnover: Number(item[6])
}));
} catch (error: any) {
return [];
}
}
}