Эта стратегия предназначена только для одного: проверить, работает ли функция custom_plot_additions в принципе. Она должна нарисовать одну синюю горизонтальную линию в центре графика.
Timeframe
5m
Direction
Long Only
Stoploss
N/A
Trailing Stop
No
ROI
N/A
Interface Version
3
Startup Candles
20
Indicators
0
freqtrade/freqtrade-strategies
author@: lenik
# user_data/strategies/TestLinesStrategy.py
import pandas as pd
from pandas import DataFrame
import plotly.graph_objects as go
from freqtrade.strategy import IStrategy
class TestLinesStrategy(IStrategy):
"""
Эта стратегия предназначена только для одного: проверить, работает ли
функция custom_plot_additions в принципе.
Она должна нарисовать одну синюю горизонтальную линию в центре графика.
"""
INTERFACE_VERSION = 3
timeframe = '5m'
startup_candle_count = 20 # Нам не нужны индикаторы, поэтому 20 достаточно
# Нам даже не нужен plot_config
plot_config = {}
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
# Ничего не делаем, просто возвращаем исходные данные
print("INFO: TestLinesStrategy - populate_indicators called.")
return dataframe
def custom_plot_additions(self, fig: go.Figure):
# Это наш главный тест. Мы не используем данные из dataframe.
# Мы просто рисуем одну линию с жестко заданными координатами.
print("INFO: TestLinesStrategy - custom_plot_additions CALLED. Trying to draw a line...")
# Берем даты из середины вашего тестового диапазона
start_test_date = "2025-08-17 10:00:00"
end_test_date = "2025-08-17 18:00:00"
# Берем цену из середины вашего ценового диапазона на скриншоте
price_level = 118.1 * 1000 # 118.1k
fig.add_shape(
type="line",
x0=start_test_date, y0=price_level,
x1=end_test_date, y1=price_level,
line=dict(color="blue", width=3, dash="dash")
)
print(f"INFO: TestLinesStrategy - Line from {start_test_date} to {end_test_date} at {price_level} SHOULD BE DRAWN.")
return fig
# Пустые методы, чтобы стратегия была валидной
def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
dataframe['enter_long'] = 0
return dataframe
def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
dataframe['exit_long'] = 0
return dataframe