theforce-noai-test 里实现动态roi
This commit is contained in:
parent
1b2c7b3d92
commit
2718e7a024
@ -1,8 +1,11 @@
|
||||
import logging
|
||||
import numpy as np
|
||||
import datetime
|
||||
from functools import reduce
|
||||
from freqtrade.persistence import Trade
|
||||
import talib.abstract as ta
|
||||
from pandas import DataFrame
|
||||
from typing import Dict
|
||||
from technical import qtpylib
|
||||
from freqtrade.strategy import IStrategy
|
||||
|
||||
@ -134,7 +137,11 @@ class FreqaiPrimer(IStrategy):
|
||||
# FreqAI 提供的预测列
|
||||
if "&-trend" in dataframe.columns:
|
||||
dataframe["in_uptrend"] = dataframe["&-trend"] > 0.5
|
||||
|
||||
# 将 roi_target 存入 dataframe,供后续使用
|
||||
if "&-roi_target" in dataframe.columns:
|
||||
dataframe["&-roi_target"] = dataframe["&-roi_target"].ffill().fillna(0.01)
|
||||
else:
|
||||
dataframe["&-roi_target"] = 0.01
|
||||
return dataframe
|
||||
|
||||
def populate_entry_trend(self, df: DataFrame, metadata: dict) -> DataFrame:
|
||||
@ -176,3 +183,43 @@ class FreqaiPrimer(IStrategy):
|
||||
|
||||
df.loc[reduce(lambda x, y: x & y, conditions), 'exit_long'] = 1
|
||||
return df
|
||||
def adjust_trade_position(self, trade: Trade, current_time: datetime,
|
||||
current_rate: float, current_profit: float,
|
||||
min_roi: Dict[float, float], max_profit: float):
|
||||
"""
|
||||
动态调整当前交易的止盈目标。
|
||||
"""
|
||||
|
||||
# 获取当前币种的 dataframe
|
||||
pair = trade.pair
|
||||
dataframe, _ = self.dp.get_analyzed_dataframe(pair, self.timeframe)
|
||||
last_candle = dataframe.iloc[-1]
|
||||
|
||||
# 获取预测的 ROI 目标
|
||||
roi_target = last_candle.get("&-roi_target", 0.01)
|
||||
|
||||
# 根据预测值生成新的 ROI 表
|
||||
if roi_target > 0.05:
|
||||
new_minimal_roi = {
|
||||
"0": roi_target * 1.0,
|
||||
"10": roi_target * 0.8,
|
||||
"30": roi_target * 0.5,
|
||||
"60": roi_target * 0.2,
|
||||
"120": 0.01
|
||||
}
|
||||
elif 0.02 <= roi_target <= 0.05:
|
||||
new_minimal_roi = {
|
||||
"0": roi_target * 1.0,
|
||||
"20": roi_target * 0.7,
|
||||
"60": roi_target * 0.3,
|
||||
"120": 0.01
|
||||
}
|
||||
else:
|
||||
new_minimal_roi = {
|
||||
"0": max(0.01, roi_target),
|
||||
"60": 0.01,
|
||||
"180": 0.01
|
||||
}
|
||||
|
||||
# 返回新的 minimal_roi
|
||||
return new_minimal_roi
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user