动态步长
This commit is contained in:
parent
271a98a772
commit
6efcf3ea9d
@ -23,9 +23,10 @@ class StaticGrid(IStrategy):
|
|||||||
# BTC/USDT: 上下 20%
|
# BTC/USDT: 上下 20%
|
||||||
# ETH/USDT, SOL/USDT: 上下 33%
|
# ETH/USDT, SOL/USDT: 上下 33%
|
||||||
GRID_CONFIG = {
|
GRID_CONFIG = {
|
||||||
"BTC/USDT": {"percent": 0.20, "step": 500}, # 上下 20%,步长 500
|
"BTC/USDT": {"percent": 0.20}, # 上下 20%
|
||||||
"ETH/USDT": {"percent": 0.33, "step": 100}, # 上下 33%,步长 100
|
"ETH/USDT": {"percent": 0.33}, # 上下 33%
|
||||||
"SOL/USDT": {"percent": 0.33, "step": 5}, # 上下 33%,步长 5
|
"SOL/USDT": {"percent": 0.33}, # 上下 33%
|
||||||
|
"TRX/USDT": {"percent": 0.33}, # 上下 33%
|
||||||
}
|
}
|
||||||
STAKE = 40.0 # 每个网格的投资额
|
STAKE = 40.0 # 每个网格的投资额
|
||||||
|
|
||||||
@ -55,13 +56,16 @@ class StaticGrid(IStrategy):
|
|||||||
# 动态更新网格范围(如果初始化时用的是占位符价格)
|
# 动态更新网格范围(如果初始化时用的是占位符价格)
|
||||||
if grid_manager.lower_price <= 1000 and grid_manager.upper_price <= 5000:
|
if grid_manager.lower_price <= 1000 and grid_manager.upper_price <= 5000:
|
||||||
# 说明用的是默认占位符,需要更新为实际价格
|
# 说明用的是默认占位符,需要更新为实际价格
|
||||||
config = self.GRID_CONFIG.get(pair, {"percent": 0.20, "step": 100})
|
config = self.GRID_CONFIG.get(pair, {"percent": 0.20})
|
||||||
percent = config.get("percent", 0.20)
|
percent = config.get("percent", 0.20)
|
||||||
step = config.get("step", 100)
|
|
||||||
|
|
||||||
new_lower = current_price * (1 - percent)
|
new_lower = current_price * (1 - percent)
|
||||||
new_upper = current_price * (1 + percent)
|
new_upper = current_price * (1 + percent)
|
||||||
|
|
||||||
|
# 动态计算步长:范围 / 50
|
||||||
|
range_size = new_upper - new_lower
|
||||||
|
step = range_size / 50
|
||||||
|
|
||||||
# 更新 GridManager 的范围
|
# 更新 GridManager 的范围
|
||||||
grid_manager.lower_price = new_lower
|
grid_manager.lower_price = new_lower
|
||||||
grid_manager.upper_price = new_upper
|
grid_manager.upper_price = new_upper
|
||||||
@ -69,10 +73,11 @@ class StaticGrid(IStrategy):
|
|||||||
# 重新计算总网格数
|
# 重新计算总网格数
|
||||||
grid_manager.total_grid_levels = int((new_upper - new_lower) / step) + 1
|
grid_manager.total_grid_levels = int((new_upper - new_lower) / step) + 1
|
||||||
grid_manager.grid_prices = [new_lower + i * step for i in range(grid_manager.total_grid_levels)]
|
grid_manager.grid_prices = [new_lower + i * step for i in range(grid_manager.total_grid_levels)]
|
||||||
|
grid_manager.step = step # 更新步长
|
||||||
|
|
||||||
print(f"[StaticGrid] {pair} 更新网格范围 - 从 1000-5000 更新为 {new_lower:.2f}-{new_upper:.2f}",
|
print(f"[StaticGrid] {pair} 更新网格范围 - 从 1000-5000 更新为 {new_lower:.2f}-{new_upper:.2f}",
|
||||||
file=sys.stderr, flush=True)
|
file=sys.stderr, flush=True)
|
||||||
print(f"[StaticGrid] {pair} 新网格数: {grid_manager.total_grid_levels}",
|
print(f"[StaticGrid] {pair} 新网格数: {grid_manager.total_grid_levels}, 步长: {step:.4f}",
|
||||||
file=sys.stderr, flush=True)
|
file=sys.stderr, flush=True)
|
||||||
|
|
||||||
# 更新网格管理器状态
|
# 更新网格管理器状态
|
||||||
@ -86,11 +91,10 @@ class StaticGrid(IStrategy):
|
|||||||
def _init_grid_manager(self, pair: str) -> None:
|
def _init_grid_manager(self, pair: str) -> None:
|
||||||
"""初始化或恢复网格管理器"""
|
"""初始化或恢复网格管理器"""
|
||||||
# 获取币对配置(如果不存在则使用默认值)
|
# 获取币对配置(如果不存在则使用默认值)
|
||||||
config = self.GRID_CONFIG.get(pair, {"percent": 0.20, "step": 100})
|
config = self.GRID_CONFIG.get(pair, {"percent": 0.20})
|
||||||
percent = config.get("percent", 0.20)
|
percent = config.get("percent", 0.20)
|
||||||
step = config.get("step", 100)
|
|
||||||
|
|
||||||
print(f"[StaticGrid] {pair} 网格配置 - 百分比: {percent*100:.0f}%, 步长: {step}",
|
print(f"[StaticGrid] {pair} 网格配置 - 百分比: {percent*100:.0f}%",
|
||||||
file=sys.stderr, flush=True)
|
file=sys.stderr, flush=True)
|
||||||
|
|
||||||
# 尝试从 Redis 恢复
|
# 尝试从 Redis 恢复
|
||||||
@ -123,7 +127,11 @@ class StaticGrid(IStrategy):
|
|||||||
print(f"[StaticGrid] {pair} 使用默认上下沿: {lower_price}-{upper_price}",
|
print(f"[StaticGrid] {pair} 使用默认上下沿: {lower_price}-{upper_price}",
|
||||||
file=sys.stderr, flush=True)
|
file=sys.stderr, flush=True)
|
||||||
|
|
||||||
print(f"[StaticGrid] {pair} 动态网格范围 - 下沿: {lower_price:.2f}, 上沿: {upper_price:.2f}",
|
# 动态计算步长:范围 / 50
|
||||||
|
range_size = upper_price - lower_price
|
||||||
|
step = range_size / 50
|
||||||
|
|
||||||
|
print(f"[StaticGrid] {pair} 动态网格范围 - 下沿: {lower_price:.2f}, 上沿: {upper_price:.2f}, 步长: {step:.4f}",
|
||||||
file=sys.stderr, flush=True)
|
file=sys.stderr, flush=True)
|
||||||
|
|
||||||
# 创建新的 GridManager
|
# 创建新的 GridManager
|
||||||
@ -149,7 +157,7 @@ class StaticGrid(IStrategy):
|
|||||||
# 保存网格配置,用于价格更新时重新计算
|
# 保存网格配置,用于价格更新时重新计算
|
||||||
self.grid_managers[pair] = grid_manager
|
self.grid_managers[pair] = grid_manager
|
||||||
self._pair_configs = getattr(self, '_pair_configs', {})
|
self._pair_configs = getattr(self, '_pair_configs', {})
|
||||||
self._pair_configs[pair] = {'percent': percent, 'step': step}
|
self._pair_configs[pair] = {'percent': percent}
|
||||||
|
|
||||||
def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
|
def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
|
||||||
"""
|
"""
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user