Add ATR
This commit is contained in:
+14
@@ -299,6 +299,10 @@ def add_indicators(df):
|
||||
# 处理Infinity和-Infinity值
|
||||
df['volume_ratio'] = df['volume_ratio'].replace([float('inf'), float('-inf')], 1.0)
|
||||
|
||||
# 计算ATR (Average True Range) - 14周期
|
||||
df['atr'] = ta.ATR(df, timeperiod=14)
|
||||
df['atr'] = df['atr'].fillna(0)
|
||||
|
||||
return df
|
||||
|
||||
def calculate_macd(df):
|
||||
@@ -568,6 +572,8 @@ def generate_replay_data(df, client_tz, symbol=None, element_timeframe=None, sta
|
||||
'middle': element_current_df['element_bb_middle'].tolist(),
|
||||
'lower': element_current_df['element_bb_lower'].tolist()
|
||||
},
|
||||
# 添加次周期ATR数据
|
||||
'element_atr': element_current_df['atr'].tolist(),
|
||||
'element_klc_fx_info': [{
|
||||
'time': format_time_safely(point['time'], client_tz),
|
||||
'price': float(point['price']),
|
||||
@@ -644,6 +650,8 @@ def generate_replay_data(df, client_tz, symbol=None, element_timeframe=None, sta
|
||||
'middle': current_df['element_bb_middle'].tolist(),
|
||||
'lower': current_df['element_bb_lower'].tolist()
|
||||
},
|
||||
# 添加ATR数据
|
||||
'atr': current_df['atr'].tolist(),
|
||||
'klc_fx_info': [{
|
||||
'time': format_time_safely(point['time'], client_tz),
|
||||
'price': float(point['price']),
|
||||
@@ -680,6 +688,7 @@ def generate_replay_data(df, client_tz, symbol=None, element_timeframe=None, sta
|
||||
'element_macd': {'macd': [], 'signal': [], 'histogram': []},
|
||||
'element_bollinger': {'upper': [], 'middle': [], 'lower': []},
|
||||
'element_element_bollinger': {'upper': [], 'middle': [], 'lower': []},
|
||||
'element_atr': [],
|
||||
'element_klc_fx_info': [],
|
||||
'element_klu_fx_info': []
|
||||
})
|
||||
@@ -1116,6 +1125,8 @@ def analyze():
|
||||
'middle': df['element_bb_middle'].tolist(),
|
||||
'lower': df['element_bb_lower'].tolist()
|
||||
},
|
||||
# 添加ATR数据
|
||||
'atr': df['atr'].tolist(),
|
||||
# 添加K线分型信息
|
||||
'klc_fx_info': [{
|
||||
'time': format_time_safely(point['time'], client_tz),
|
||||
@@ -1173,6 +1184,9 @@ def analyze():
|
||||
'lower': element_df['element_bb_lower'].tolist()
|
||||
}
|
||||
|
||||
# 添加小周期ATR数据
|
||||
result['element_atr'] = element_df['atr'].tolist()
|
||||
|
||||
result['element_bi_list'] = [{
|
||||
'start_time': bi.start_klc.end_time if isinstance(bi.start_klc.end_time, str) else bi.start_klc.end_time.astimezone(client_tz).isoformat(),
|
||||
'end_time': (bi.end_klc.end_time if isinstance(bi.end_klc.end_time, str) else bi.end_klc.end_time.astimezone(client_tz).isoformat()) if bi.end_klc else None,
|
||||
|
||||
Reference in New Issue
Block a user