Compare commits
8 Commits
fix/issue-
...
bef4479675
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bef4479675 | ||
| a6e4d28aa7 | |||
|
|
8693946cb8 | ||
| a2f549c056 | |||
|
|
ad6e57655d | ||
| ac5e9d8b81 | |||
|
|
81f3342365 | ||
| 6adad0701d |
@@ -32,7 +32,7 @@ MINIMAX_API_KEY=your-minimax-api-key
|
|||||||
|
|
||||||
# MiniMax model to use
|
# MiniMax model to use
|
||||||
# Common options: MiniMax-Text-01, MiniMax-M2.1
|
# Common options: MiniMax-Text-01, MiniMax-M2.1
|
||||||
MINIMAX_MODEL=MiniMax-Text-01
|
MINIMAX_MODEL=MiniMax-M2.7
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
# AVE CLOUD API
|
# AVE CLOUD API
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from .crew import CrewAgent
|
from .crew import TradingCrew, get_trading_crew
|
||||||
from .llm_connector import LLMConnector
|
from .llm_connector import MiniMaxLLM, MiniMaxConnector
|
||||||
|
|
||||||
__all__ = ["CrewAgent", "LLMConnector"]
|
__all__ = ["TradingCrew", "get_trading_crew", "MiniMaxLLM", "MiniMaxConnector"]
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
from typing import List, Optional, Dict, Any
|
from typing import List, Optional, Dict, Any
|
||||||
from crewai import Agent, Task, Crew
|
from crewai import Agent, Task, Crew
|
||||||
from .llm_connector import MiniMaxConnector, MiniMaxLLM
|
from .llm_connector import MiniMaxConnector, MiniMaxLLM
|
||||||
from ..core.config import get_settings
|
from ...core.config import get_settings
|
||||||
|
|
||||||
|
|
||||||
class StrategyValidator:
|
class StrategyValidator:
|
||||||
@@ -120,7 +120,7 @@ class StrategyExplainer:
|
|||||||
|
|
||||||
|
|
||||||
def create_trading_designer_agent(
|
def create_trading_designer_agent(
|
||||||
api_key: str, model: str = "MiniMax-Text-01"
|
api_key: str, model: str = "MiniMax-M2.7"
|
||||||
) -> Agent:
|
) -> Agent:
|
||||||
connector = MiniMaxConnector(api_key=api_key, model=model)
|
connector = MiniMaxConnector(api_key=api_key, model=model)
|
||||||
|
|
||||||
@@ -147,7 +147,7 @@ def create_trading_designer_agent(
|
|||||||
|
|
||||||
|
|
||||||
def create_strategy_validator_agent(
|
def create_strategy_validator_agent(
|
||||||
api_key: str, model: str = "MiniMax-Text-01"
|
api_key: str, model: str = "MiniMax-M2.7"
|
||||||
) -> Agent:
|
) -> Agent:
|
||||||
return Agent(
|
return Agent(
|
||||||
role="Strategy Validator",
|
role="Strategy Validator",
|
||||||
@@ -161,7 +161,7 @@ def create_strategy_validator_agent(
|
|||||||
|
|
||||||
|
|
||||||
def create_strategy_explainer_agent(
|
def create_strategy_explainer_agent(
|
||||||
api_key: str, model: str = "MiniMax-Text-01"
|
api_key: str, model: str = "MiniMax-M2.7"
|
||||||
) -> Agent:
|
) -> Agent:
|
||||||
return Agent(
|
return Agent(
|
||||||
role="Strategy Explainer",
|
role="Strategy Explainer",
|
||||||
@@ -175,7 +175,7 @@ def create_strategy_explainer_agent(
|
|||||||
|
|
||||||
|
|
||||||
class TradingCrew:
|
class TradingCrew:
|
||||||
def __init__(self, api_key: str, model: str = "MiniMax-Text-01"):
|
def __init__(self, api_key: str, model: str = "MiniMax-M2.7"):
|
||||||
self.api_key = api_key
|
self.api_key = api_key
|
||||||
self.model = model
|
self.model = model
|
||||||
self.validator = StrategyValidator()
|
self.validator = StrategyValidator()
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ from crewai import LLM
|
|||||||
|
|
||||||
|
|
||||||
class MiniMaxLLM(LLM):
|
class MiniMaxLLM(LLM):
|
||||||
def __init__(self, api_key: str, model: str = "MiniMax-Text-01", **kwargs):
|
def __init__(self, api_key: str, model: str = "MiniMax-M2.7", **kwargs):
|
||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
self.api_key = api_key
|
self.api_key = api_key
|
||||||
self.model = model
|
self.model = model
|
||||||
self.base_url = "https://api.minimax.chat/v1"
|
self.base_url = "https://api.minimax.io/v1"
|
||||||
|
|
||||||
def _call(self, messages: List[Dict[str, str]], **kwargs) -> str:
|
def _call(self, messages: List[Dict[str, str]], **kwargs) -> str:
|
||||||
headers = {
|
headers = {
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
import uuid
|
import uuid
|
||||||
import asyncio
|
import asyncio
|
||||||
|
import logging
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import Dict, Any, List, Optional
|
from typing import Dict, Any, List, Optional
|
||||||
from ..ave.client import AveCloudClient
|
from ..ave.client import AveCloudClient
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class SimulateEngine:
|
class SimulateEngine:
|
||||||
def __init__(self, config: Dict[str, Any]):
|
def __init__(self, config: Dict[str, Any]):
|
||||||
@@ -38,6 +41,7 @@ class SimulateEngine:
|
|||||||
self.entry_time: Optional[int] = None
|
self.entry_time: Optional[int] = None
|
||||||
self.current_balance: float = config.get("initial_balance", 10000.0)
|
self.current_balance: float = config.get("initial_balance", 10000.0)
|
||||||
self.trades: List[Dict[str, Any]] = []
|
self.trades: List[Dict[str, Any]] = []
|
||||||
|
self.errors: List[str] = []
|
||||||
|
|
||||||
async def run(self) -> Dict[str, Any]:
|
async def run(self) -> Dict[str, Any]:
|
||||||
self.running = True
|
self.running = True
|
||||||
@@ -74,7 +78,9 @@ class SimulateEngine:
|
|||||||
self.last_volume = current_volume
|
self.last_volume = current_volume
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
pass
|
logger.warning(f"Failed to get price for {token_id}: {e}")
|
||||||
|
self.errors.append(f"Price fetch failed for {token_id}: {str(e)}")
|
||||||
|
continue
|
||||||
|
|
||||||
for _ in range(self.check_interval):
|
for _ in range(self.check_interval):
|
||||||
if not self.running:
|
if not self.running:
|
||||||
@@ -92,6 +98,8 @@ class SimulateEngine:
|
|||||||
|
|
||||||
self.results = self.results or {}
|
self.results = self.results or {}
|
||||||
self.results["total_signals"] = len(self.signals)
|
self.results["total_signals"] = len(self.signals)
|
||||||
|
self.results["total_errors"] = len(self.errors)
|
||||||
|
self.results["errors"] = self.errors
|
||||||
self.results["signals"] = self.signals
|
self.results["signals"] = self.signals
|
||||||
self.results["started_at"] = self.started_at
|
self.results["started_at"] = self.started_at
|
||||||
self.results["ended_at"] = datetime.utcnow()
|
self.results["ended_at"] = datetime.utcnow()
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ pydantic-settings>=2.1.0
|
|||||||
email-validator>=2.0.0
|
email-validator>=2.0.0
|
||||||
python-jose[cryptography]>=3.3.0
|
python-jose[cryptography]>=3.3.0
|
||||||
passlib[bcrypt]>=1.7.4
|
passlib[bcrypt]>=1.7.4
|
||||||
|
bcrypt>=4.0,<5.0 # Required for passlib compatibility
|
||||||
crewai>=0.1.0
|
crewai>=0.1.0
|
||||||
anthropic>=0.18.0
|
anthropic>=0.18.0
|
||||||
httpx>=0.26.0
|
httpx>=0.26.0
|
||||||
|
|||||||
Reference in New Issue
Block a user