edit with grok

This commit is contained in:
zhangkun9038@dingtalk.com 2025-11-26 23:59:06 +08:00
parent a6fd6587e5
commit 745db91a77
2 changed files with 24 additions and 64 deletions

View File

@ -19,36 +19,7 @@
"timeout": 20000 "timeout": 20000
}, },
"pair_whitelist": [ "pair_whitelist": [
"ADA/USDT", "ETH/USDT"
"APT/USDT",
"AVAX/USDT",
"BCH/USDT",
"BNB/USDT",
"BONK/USDT",
"BTC/USDT",
"CFX/USDT",
"CORE/USDT",
"CRO/USDT",
"DOGE/USDT",
"ETH/USDT",
"ETHFI/USDT",
"FET/USDT",
"FIL/USDT",
"HBAR/USDT",
"LINK/USDT",
"LTC/USDT",
"PEPE/USDT",
"PI/USDT",
"SHIB/USDT",
"SOL/USDT",
"SUI/USDT",
"TON/USDT",
"TRUMP/USDT",
"TRX/USDT",
"WLD/USDT",
"XAUT/USDT",
"XRP/USDT",
"ZK/USDT"
], ],
"pair_blacklist": [ "pair_blacklist": [
"OKB/USDT" "OKB/USDT"

View File

@ -1,10 +1,10 @@
# user_data/strategies/EthTrueStaticGrid.py ← 复制整个文件 # /freqtrade/user_data/strategies/StaticGrid.py
from freqtrade.strategy import IStrategy from freqtrade.strategy import IStrategy
from pandas import DataFrame from pandas import DataFrame
class StaticGrid(IStrategy): class StaticGrid(IStrategy):
INTERFACE_VERSION = 3 INTERFACE_VERSION = 3
timeframe = '1h' # 1h 或 4h 都行,建议 1h 更灵敏 timeframe = '1h'
can_short = False can_short = False
minimal_roi = {"0": 100} minimal_roi = {"0": 100}
stoploss = -0.99 stoploss = -0.99
@ -12,36 +12,25 @@ class StaticGrid(IStrategy):
position_adjustment_enable = True position_adjustment_enable = True
max_entry_position_adjustment = -1 max_entry_position_adjustment = -1
# ================== 永续静态网格参数 ================== # 永续网格参数
LOWER = 1500.0 LOWER = 1500.0
UPPER = 4500.0 UPPER = 4500.0
GRID_STEP = 50.0 # 每格 50 USDT STEP = 50.0
GRID_COUNT = int((UPPER - LOWER) / GRID_STEP) # = 60 格 STAKE = 40.0
STAKE_PER_ORDER = 40 # 每张单 40 USDT60格 × 40 × 2 ≈ 4800 USDT 吃满)
# 必须加这一行!否则报抽象类错误
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
return dataframe return dataframe
def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
price = dataframe['close'].iloc[-1] for price in [self.LOWER + i * self.STEP for i in range(int((self.UPPER - self.LOWER) // self.STEP) + 3)]:
dataframe.loc[dataframe['low'] <= price, 'enter_long'] = True
# 从 1500 到 4450 每 50 USDT 一个价位,只要价格跌到或跌破这个价,就买入
for level in range(self.GRID_COUNT):
buy_price = self.LOWER + level * self.GRID_STEP
if price <= buy_price:
dataframe.loc[dataframe['low'] <= buy_price, 'enter_long'] = True
return dataframe return dataframe
def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
price = dataframe['close'].iloc[-1] for price in [self.LOWER + i * self.STEP for i in range(int((self.UPPER - self.LOWER) // self.STEP) + 3)]:
dataframe.loc[dataframe['high'] >= price, 'exit_long'] = True
# 从 1550 到 4500 每 50 USDT 一个价位,只要价格涨到或超过这个价,就卖出
for level in range(1, self.GRID_COUNT + 1):
sell_price = self.LOWER + level * self.GRID_STEP
if price >= sell_price:
dataframe.loc[dataframe['high'] >= sell_price, 'exit_long'] = True
return dataframe return dataframe
def custom_stake_amount(self, **kwargs) -> float: def custom_stake_amount(self, **kwargs) -> float:
return self.STAKE_PER_ORDER return self.STAKE