静态网格不好使

This commit is contained in:
zhangkun9038@dingtalk.com 2025-11-26 11:24:22 +08:00
parent ca38b53809
commit 1827fa7a81

View File

@ -42,18 +42,16 @@ class StaticGrid(IStrategy):
def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
""" """
入场逻辑 入场逻辑
- 价格每次跌破一个网格点就在该网格点买入 - 只要价格低于或等于任何网格点就在该网格点买入
- 从上往下遍历所有网格点 - 简单机械化price <= grid_level * 1.002 就买入
""" """
dataframe['enter_long'] = False dataframe['enter_long'] = False
# 对每个网格点进行判断 # 检查价格是否接近任何网格点
for i, grid_level in enumerate(self.GRID_LEVELS[:-1]): # 不包括最后一个点 for grid_level in self.GRID_LEVELS[:-1]: # 不包括最高点
# 价格接近或低于该网格点就买入 # 价格接近该网格点就买入(给 0.2% 容差以处理浮点数)
# 使用 <= grid_level * 1.001 来避免浮点数精度问题
dataframe.loc[ dataframe.loc[
(dataframe['close'] <= grid_level * 1.001) & (dataframe['close'] <= grid_level * 1.002) &
(dataframe['close'] > (grid_level - self.GRID_STEP)) &
(dataframe['volume'] > 0), (dataframe['volume'] > 0),
'enter_long' 'enter_long'
] = True ] = True
@ -63,19 +61,16 @@ class StaticGrid(IStrategy):
def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
""" """
出场逻辑 出场逻辑
- 每笔交易进场后在上一个网格点卖出 - 价格上升超过 GRID_STEP50就卖出获利
- 每层网格的利润 = GRID_STEP / 当前价格 - 相对于入场点上升 50
- 2650 价位50 1.89%保险起见用 1.5%
""" """
dataframe['exit_long'] = False dataframe['exit_long'] = False
# 简单策略:价格每上升 GRID_STEP就卖出 # 只要价格反弹 1.5% 以上,就卖出
# 这里我们使用一个简化的方法:如果价格上升了 GRID_STEP 点以上,就卖出 # 这样平均每层网格获利接近 50 点
# 计算相对于入场价格的涨幅百分比目标50点收益
# 假设平均入场价在 2650 左右50点 = 1.88%
# 为了泛用,我们设定:只要有 0.9% 的利润就卖出
dataframe['exit_long'] = ( dataframe['exit_long'] = (
dataframe['close'] >= (dataframe['close'].shift(1) * 1.009) dataframe['close'] >= dataframe['close'].shift(1) * 1.015
) )
return dataframe return dataframe