移除和市场相关的代码
This commit is contained in:
48
chart.py
48
chart.py
@@ -1,5 +1,5 @@
|
|||||||
import pandas as pd
|
import pandas as pd
|
||||||
from db_config import DatabaseManager, DatabaseConfig
|
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
import talib as ta
|
import talib as ta
|
||||||
import numpy as np
|
import numpy as np
|
||||||
@@ -30,7 +30,7 @@ def get_fixed_color_based_on_period(period):
|
|||||||
|
|
||||||
|
|
||||||
def add_ema(df, chart, period: int = 50):
|
def add_ema(df, chart, period: int = 50):
|
||||||
name = f"EMA {period}"
|
name = f"EMA_{period}"
|
||||||
df[name] = ta.EMA(df["close"], timeperiod=period)
|
df[name] = ta.EMA(df["close"], timeperiod=period)
|
||||||
color = get_fixed_color_based_on_period(period)
|
color = get_fixed_color_based_on_period(period)
|
||||||
line = chart.create_line(
|
line = chart.create_line(
|
||||||
@@ -206,29 +206,6 @@ def add_buy_sell_signal_markers(df, chart):
|
|||||||
chart.marker_list(markers)
|
chart.marker_list(markers)
|
||||||
|
|
||||||
|
|
||||||
def get_kline(code: str) -> list:
|
|
||||||
"""
|
|
||||||
获取所有指数代码
|
|
||||||
:return:
|
|
||||||
"""
|
|
||||||
env = "online"
|
|
||||||
env = "daily"
|
|
||||||
db_config = DatabaseConfig(env=env)
|
|
||||||
logger.info(f"数据库连接: {db_config.connection_string}")
|
|
||||||
|
|
||||||
db_manager = DatabaseManager(db_config)
|
|
||||||
sql = f"SELECT date as time, open, high, low, close, volume FROM public.index_kline where code='{code}' order by date;"
|
|
||||||
res = db_manager.execute_query(sql)
|
|
||||||
data_list = [dict(item) for item in res]
|
|
||||||
df = pd.DataFrame(data_list)
|
|
||||||
df["time"] = pd.to_datetime(df["time"])
|
|
||||||
num_cols = ["open", "high", "low", "close", "volume"]
|
|
||||||
for col in num_cols:
|
|
||||||
if col in df.columns:
|
|
||||||
df[col] = pd.to_numeric(df[col], errors="coerce").astype(float)
|
|
||||||
return df
|
|
||||||
|
|
||||||
|
|
||||||
def resample_data(df: pd.DataFrame, timeframe: str) -> pd.DataFrame:
|
def resample_data(df: pd.DataFrame, timeframe: str) -> pd.DataFrame:
|
||||||
"""
|
"""
|
||||||
对日线数据进行重采样
|
对日线数据进行重采样
|
||||||
@@ -372,10 +349,10 @@ def plot_chart(df, symbol: str, name: str, timeframe: str):
|
|||||||
|
|
||||||
chart.set(df)
|
chart.set(df)
|
||||||
chart.events.range_change += on_range_change_poc
|
chart.events.range_change += on_range_change_poc
|
||||||
add_ema(df, chart, period=10)
|
# add_ema(df, chart, period=10)
|
||||||
add_ema(df, chart, period=20)
|
# add_ema(df, chart, period=20)
|
||||||
add_ema(df, chart, period=30)
|
add_ema(df, chart, period=30)
|
||||||
add_ema(df, chart, period=60)
|
# add_ema(df, chart, period=60)
|
||||||
add_macd(df, chart)
|
add_macd(df, chart)
|
||||||
add_cci(df, chart, period=14)
|
add_cci(df, chart, period=14)
|
||||||
add_TD(df, chart)
|
add_TD(df, chart)
|
||||||
@@ -385,17 +362,4 @@ def plot_chart(df, symbol: str, name: str, timeframe: str):
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
symbol = "399998"
|
...
|
||||||
timeframe = "1W"
|
|
||||||
|
|
||||||
df = pd.read_csv(
|
|
||||||
"/Users/aszer/Documents/vscode/etf/data/index_all_stock.csv",
|
|
||||||
encoding="utf-8-sig",
|
|
||||||
)
|
|
||||||
name = df.loc[df["代码"] == symbol, "名称"].values[0]
|
|
||||||
|
|
||||||
df = get_kline(code=symbol)
|
|
||||||
df = resample_data(df, timeframe)
|
|
||||||
# df['buy'] = df['time'].apply(lambda x: 1 if pd.to_datetime(x).day % 2 == 1 else 0)
|
|
||||||
# df['sell'] = df['time'].apply(lambda x: 1 if pd.to_datetime(x).day % 2 == 0 else 0)
|
|
||||||
plot_chart(df=df, symbol=symbol, name=name, timeframe=timeframe)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user