Refactor
This commit is contained in:
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
pub mod bot;
|
pub mod bot;
|
||||||
pub mod data;
|
pub mod data;
|
||||||
pub mod strategy;
|
pub mod strategy;
|
||||||
pub mod types;
|
// pub mod types;
|
||||||
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
|||||||
+53
-4
@@ -2,10 +2,59 @@ pub mod veloc;
|
|||||||
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use crate::{
|
use crate::bot::Bot;
|
||||||
bot::Bot,
|
|
||||||
types::{NewToken, Trade},
|
use serde::Deserialize;
|
||||||
};
|
|
||||||
|
#[derive(Debug, Clone, Deserialize)]
|
||||||
|
pub struct NewToken {
|
||||||
|
pub mint: String,
|
||||||
|
#[serde(rename = "traderPublicKey")]
|
||||||
|
pub trader_public_key: String,
|
||||||
|
|
||||||
|
pub name: String,
|
||||||
|
pub symbol: String,
|
||||||
|
pub uri: String,
|
||||||
|
#[serde(rename = "marketCapSol")]
|
||||||
|
pub market_cap_sol: f64,
|
||||||
|
#[serde(rename = "solAmount")]
|
||||||
|
pub sol_amount: f64,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Deserialize)]
|
||||||
|
pub enum TradeType {
|
||||||
|
#[serde(rename = "buy")]
|
||||||
|
Buy,
|
||||||
|
#[serde(rename = "sell")]
|
||||||
|
Sell,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Deserialize)]
|
||||||
|
pub struct Trade {
|
||||||
|
pub signature: String,
|
||||||
|
pub mint: String,
|
||||||
|
|
||||||
|
#[serde(rename = "traderPublicKey")]
|
||||||
|
pub trader: String,
|
||||||
|
|
||||||
|
#[serde(rename = "txType")]
|
||||||
|
pub tx_type: TradeType,
|
||||||
|
|
||||||
|
#[serde(rename = "solAmount")]
|
||||||
|
pub sol_amount: f64,
|
||||||
|
|
||||||
|
#[serde(rename = "tokenAmount")]
|
||||||
|
pub token_amount: f64,
|
||||||
|
|
||||||
|
#[serde(rename = "marketCapSol")]
|
||||||
|
pub market_cap_sol: f64,
|
||||||
|
|
||||||
|
#[serde(rename = "vTokensInBondingCurve")]
|
||||||
|
pub v_tokens_in_bonding_curve: f64,
|
||||||
|
|
||||||
|
#[serde(rename = "vSolInBondingCurve")]
|
||||||
|
pub v_sol_in_bonding_curve: f64,
|
||||||
|
}
|
||||||
|
|
||||||
#[async_trait::async_trait]
|
#[async_trait::async_trait]
|
||||||
pub trait Strategy: Send + Sync {
|
pub trait Strategy: Send + Sync {
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ use std::time::{Duration, Instant};
|
|||||||
use log::{debug, info, trace, warn};
|
use log::{debug, info, trace, warn};
|
||||||
use rust_decimal::{Decimal, dec};
|
use rust_decimal::{Decimal, dec};
|
||||||
|
|
||||||
|
use super::{NewToken, Trade};
|
||||||
use crate::bot::Bot;
|
use crate::bot::Bot;
|
||||||
use crate::data::tradelog::{ExitReason, TradeLog};
|
use crate::data::tradelog::{ExitReason, TradeLog};
|
||||||
use crate::strategy::Strategy;
|
use crate::strategy::{Strategy, TradeType};
|
||||||
use crate::types::{NewToken, Trade, TradeType};
|
|
||||||
|
|
||||||
const BUY_AMOUNT_SOL: Decimal = dec!(0.2);
|
const BUY_AMOUNT_SOL: Decimal = dec!(0.2);
|
||||||
const PRIORITY: Decimal = dec!(0.0002);
|
const PRIORITY: Decimal = dec!(0.0002);
|
||||||
|
|||||||
-115
@@ -1,115 +0,0 @@
|
|||||||
use serde::{Deserialize, Deserializer};
|
|
||||||
use serde_json::Value;
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
|
||||||
pub enum PumpDevEvent {
|
|
||||||
Connected { client_id: u64, message: String },
|
|
||||||
ConnectionStatus { connected: bool, timestamp: u64 },
|
|
||||||
Subscribed { method: String },
|
|
||||||
Unsubscribed { method: String, keys: Vec<String> },
|
|
||||||
Create(NewToken),
|
|
||||||
Trade(Trade),
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'de> Deserialize<'de> for PumpDevEvent {
|
|
||||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
|
||||||
where
|
|
||||||
D: Deserializer<'de>,
|
|
||||||
{
|
|
||||||
let value = Value::deserialize(deserializer)?;
|
|
||||||
if value.get("txType").is_some() && value.get("name").is_none() {
|
|
||||||
let trade: Trade = serde_json::from_value(value).map_err(serde::de::Error::custom)?;
|
|
||||||
return Ok(PumpDevEvent::Trade(trade));
|
|
||||||
}
|
|
||||||
|
|
||||||
if value.get("name").is_some() {
|
|
||||||
let token: NewToken =
|
|
||||||
serde_json::from_value(value).map_err(serde::de::Error::custom)?;
|
|
||||||
return Ok(PumpDevEvent::Create(token));
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Deserialize)]
|
|
||||||
#[serde(tag = "type")]
|
|
||||||
enum Tagged {
|
|
||||||
#[serde(rename = "connected")]
|
|
||||||
Connected {
|
|
||||||
#[serde(rename = "clientId")]
|
|
||||||
client_id: u64,
|
|
||||||
message: String,
|
|
||||||
},
|
|
||||||
#[serde(rename = "connectionStatus")]
|
|
||||||
ConnectionStatus { connected: bool, timestamp: u64 },
|
|
||||||
#[serde(rename = "subscribed")]
|
|
||||||
Subscribed { method: String },
|
|
||||||
#[serde(rename = "unsubscribed")]
|
|
||||||
Unsubscribed { method: String, keys: Vec<String> },
|
|
||||||
}
|
|
||||||
|
|
||||||
match serde_json::from_value(value).map_err(serde::de::Error::custom)? {
|
|
||||||
Tagged::Connected { client_id, message } => {
|
|
||||||
Ok(PumpDevEvent::Connected { client_id, message })
|
|
||||||
}
|
|
||||||
Tagged::ConnectionStatus {
|
|
||||||
connected,
|
|
||||||
timestamp,
|
|
||||||
} => Ok(PumpDevEvent::ConnectionStatus {
|
|
||||||
connected,
|
|
||||||
timestamp,
|
|
||||||
}),
|
|
||||||
Tagged::Subscribed { method } => Ok(PumpDevEvent::Subscribed { method }),
|
|
||||||
Tagged::Unsubscribed { method, keys } => {
|
|
||||||
Ok(PumpDevEvent::Unsubscribed { method, keys })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Deserialize)]
|
|
||||||
pub struct NewToken {
|
|
||||||
pub mint: String,
|
|
||||||
#[serde(rename = "traderPublicKey")]
|
|
||||||
pub trader_public_key: String,
|
|
||||||
|
|
||||||
pub name: String,
|
|
||||||
pub symbol: String,
|
|
||||||
pub uri: String,
|
|
||||||
#[serde(rename = "marketCapSol")]
|
|
||||||
pub market_cap_sol: f64,
|
|
||||||
#[serde(rename = "solAmount")]
|
|
||||||
pub sol_amount: f64,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Deserialize)]
|
|
||||||
pub enum TradeType {
|
|
||||||
#[serde(rename = "buy")]
|
|
||||||
Buy,
|
|
||||||
#[serde(rename = "sell")]
|
|
||||||
Sell,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Deserialize)]
|
|
||||||
pub struct Trade {
|
|
||||||
pub signature: String,
|
|
||||||
pub mint: String,
|
|
||||||
|
|
||||||
#[serde(rename = "traderPublicKey")]
|
|
||||||
pub trader: String,
|
|
||||||
|
|
||||||
#[serde(rename = "txType")]
|
|
||||||
pub tx_type: TradeType,
|
|
||||||
|
|
||||||
#[serde(rename = "solAmount")]
|
|
||||||
pub sol_amount: f64,
|
|
||||||
|
|
||||||
#[serde(rename = "tokenAmount")]
|
|
||||||
pub token_amount: f64,
|
|
||||||
|
|
||||||
#[serde(rename = "marketCapSol")]
|
|
||||||
pub market_cap_sol: f64,
|
|
||||||
|
|
||||||
#[serde(rename = "vTokensInBondingCurve")]
|
|
||||||
pub v_tokens_in_bonding_curve: f64,
|
|
||||||
|
|
||||||
#[serde(rename = "vSolInBondingCurve")]
|
|
||||||
pub v_sol_in_bonding_curve: f64,
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user