|
@@ -4,12 +4,12 @@ use std::str::FromStr;
|
|
|
use tokio::sync::mpsc::Sender;
|
|
use tokio::sync::mpsc::Sender;
|
|
|
use async_trait::async_trait;
|
|
use async_trait::async_trait;
|
|
|
use rust_decimal::Decimal;
|
|
use rust_decimal::Decimal;
|
|
|
-use rust_decimal::prelude::{FromPrimitive, ToPrimitive};
|
|
|
|
|
use serde_json::{from_str, from_value, json, Value};
|
|
use serde_json::{from_str, from_value, json, Value};
|
|
|
use futures::stream::FuturesUnordered;
|
|
use futures::stream::FuturesUnordered;
|
|
|
use futures::{TryStreamExt};
|
|
use futures::{TryStreamExt};
|
|
|
|
|
+use rust_decimal::prelude::FromPrimitive;
|
|
|
use serde::{Deserialize, Serialize};
|
|
use serde::{Deserialize, Serialize};
|
|
|
-use tracing::{error, debug, trace, info};
|
|
|
|
|
|
|
+use tracing::{error, debug, trace};
|
|
|
use exchanges::bybit_swap_rest::BybitSwapRest;
|
|
use exchanges::bybit_swap_rest::BybitSwapRest;
|
|
|
use crate::{Platform, ExchangeEnum, Account, Position, Ticker, Market, Order, OrderCommand, PositionModeEnum};
|
|
use crate::{Platform, ExchangeEnum, Account, Position, Ticker, Market, Order, OrderCommand, PositionModeEnum};
|
|
|
use global::trace_stack::TraceStack;
|
|
use global::trace_stack::TraceStack;
|
|
@@ -205,7 +205,7 @@ impl Platform for BybitSwap {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
async fn get_ticker_symbol(&mut self, symbol: String) -> Result<Ticker, Error> {
|
|
async fn get_ticker_symbol(&mut self, symbol: String) -> Result<Ticker, Error> {
|
|
|
- let symbol_upper = self.symbol_uppercase.clone();
|
|
|
|
|
|
|
+ let symbol_upper = symbol.replace("_", "").to_uppercase();
|
|
|
let res_data = self.request.get_tickers(symbol_upper.clone()).await;
|
|
let res_data = self.request.get_tickers(symbol_upper.clone()).await;
|
|
|
if res_data.code == "200" {
|
|
if res_data.code == "200" {
|
|
|
let res_data_str = &res_data.data;
|
|
let res_data_str = &res_data.data;
|
|
@@ -287,7 +287,7 @@ impl Platform for BybitSwap {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
async fn get_market_symbol(&mut self, symbol: String) -> Result<Market, Error> {
|
|
async fn get_market_symbol(&mut self, symbol: String) -> Result<Market, Error> {
|
|
|
- let symbol = self.symbol_uppercase.clone();
|
|
|
|
|
|
|
+ let symbol = symbol.replace("_", "").to_uppercase();
|
|
|
let res_data = self.request.get_instruments_info(symbol.clone()).await;
|
|
let res_data = self.request.get_instruments_info(symbol.clone()).await;
|
|
|
if res_data.code == "200" {
|
|
if res_data.code == "200" {
|
|
|
let res_data_str = &res_data.data;
|
|
let res_data_str = &res_data.data;
|
|
@@ -355,7 +355,7 @@ impl Platform for BybitSwap {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
// 获取订单列表
|
|
// 获取订单列表
|
|
|
- async fn get_orders_list(&mut self, status: &str) -> Result<Vec<Order>, Error> {
|
|
|
|
|
|
|
+ async fn get_orders_list(&mut self, _status: &str) -> Result<Vec<Order>, Error> {
|
|
|
Err(Error::new(ErrorKind::Other, "bybit获取订单列表暂未实现".to_string()))
|
|
Err(Error::new(ErrorKind::Other, "bybit获取订单列表暂未实现".to_string()))
|
|
|
}
|
|
}
|
|
|
// 下单接口
|
|
// 下单接口
|
|
@@ -537,7 +537,7 @@ impl Platform for BybitSwap {
|
|
|
async fn set_auto_deposit_status(&mut self, _status: bool) -> Result<String, Error> { Err(Error::new(ErrorKind::NotFound, "gate:该交易所方法未实现".to_string())) }
|
|
async fn set_auto_deposit_status(&mut self, _status: bool) -> Result<String, Error> { Err(Error::new(ErrorKind::NotFound, "gate:该交易所方法未实现".to_string())) }
|
|
|
|
|
|
|
|
// 交易账户互转
|
|
// 交易账户互转
|
|
|
- async fn wallet_transfers(&mut self, coin: &str, from: &str, to: &str, amount: Decimal) -> Result<String, Error> {
|
|
|
|
|
|
|
+ async fn wallet_transfers(&mut self, _coin: &str, _from: &str, _to: &str, _amount: Decimal) -> Result<String, Error> {
|
|
|
// let coin_format = coin.to_string().to_lowercase();
|
|
// let coin_format = coin.to_string().to_lowercase();
|
|
|
// let res_data = self.request.wallet_transfers(coin_format.clone(), from.to_string(), to.to_string(), amount.to_string(), coin_format.clone()).await;
|
|
// let res_data = self.request.wallet_transfers(coin_format.clone(), from.to_string(), to.to_string(), amount.to_string(), coin_format.clone()).await;
|
|
|
// if res_data.code == "200" {
|
|
// if res_data.code == "200" {
|
|
@@ -742,7 +742,7 @@ pub fn format_order_item(order: Value, ct_val: Decimal) -> Order {
|
|
|
if !order.get("qty").is_some() {
|
|
if !order.get("qty").is_some() {
|
|
|
size = Decimal::from_str(size_str.as_str()).unwrap();
|
|
size = Decimal::from_str(size_str.as_str()).unwrap();
|
|
|
let right_val = Decimal::from_str(order["cumExecValue"].as_str().unwrap()).unwrap();
|
|
let right_val = Decimal::from_str(order["cumExecValue"].as_str().unwrap()).unwrap();
|
|
|
- let mut right = Decimal::from_str(right_str.as_str()).unwrap();
|
|
|
|
|
|
|
+ let right = Decimal::from_str(right_str.as_str()).unwrap();
|
|
|
if right != Decimal::ZERO {
|
|
if right != Decimal::ZERO {
|
|
|
avg_price = right_val / right;
|
|
avg_price = right_val / right;
|
|
|
}
|
|
}
|