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
},
"pair_whitelist": [
"ADA/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"
"ETH/USDT"
],
"pair_blacklist": [
"OKB/USDT"
@ -61,15 +32,15 @@
],
"fee": 0.0008,
"api_server": {
"enabled": true,
"listen_ip_address": "0.0.0.0",
"listen_port": 8080,
"verbosity": "error",
"enable_openapi": false,
"jwt_secret_key": "6a599ab046dbb419014807dffd7b8823bfa7e5df56b17d545485deb87331b4ca",
"ws_token": "6O5pBDiRigiZrmIsofaE2rkKMJtf9h8zVQ",
"CORS_origins": [],
"username": "freqAdmin",
"password": "admin"
"enabled": true,
"listen_ip_address": "0.0.0.0",
"listen_port": 8080,
"verbosity": "error",
"enable_openapi": false,
"jwt_secret_key": "6a599ab046dbb419014807dffd7b8823bfa7e5df56b17d545485deb87331b4ca",
"ws_token": "6O5pBDiRigiZrmIsofaE2rkKMJtf9h8zVQ",
"CORS_origins": [],
"username": "freqAdmin",
"password": "admin"
}
}

View File

@ -1,10 +1,10 @@
# user_data/strategies/EthTrueStaticGrid.py ← 复制整个文件
# /freqtrade/user_data/strategies/StaticGrid.py
from freqtrade.strategy import IStrategy
from pandas import DataFrame
class StaticGrid(IStrategy):
INTERFACE_VERSION = 3
timeframe = '1h' # 1h 或 4h 都行,建议 1h 更灵敏
timeframe = '1h'
can_short = False
minimal_roi = {"0": 100}
stoploss = -0.99
@ -12,36 +12,25 @@ class StaticGrid(IStrategy):
position_adjustment_enable = True
max_entry_position_adjustment = -1
# ================== 永续静态网格参数 ==================
LOWER = 1500.0
UPPER = 4500.0
GRID_STEP = 50.0 # 每格 50 USDT
GRID_COUNT = int((UPPER - LOWER) / GRID_STEP) # = 60 格
STAKE_PER_ORDER = 40 # 每张单 40 USDT60格 × 40 × 2 ≈ 4800 USDT 吃满)
# 永续网格参数
LOWER = 1500.0
UPPER = 4500.0
STEP = 50.0
STAKE = 40.0
# 必须加这一行!否则报抽象类错误
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
return dataframe
def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
price = dataframe['close'].iloc[-1]
# 从 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
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
return dataframe
def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
price = dataframe['close'].iloc[-1]
# 从 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
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
return dataframe
def custom_stake_amount(self, **kwargs) -> float:
return self.STAKE_PER_ORDER
return self.STAKE