69 lines
No EOL
2 KiB
TypeScript
69 lines
No EOL
2 KiB
TypeScript
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 [];
|
|
}
|
|
}
|
|
}
|