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