edit with grok
This commit is contained in:
parent
a6fd6587e5
commit
745db91a77
@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@ -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 USDT(60格 × 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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user