添加次次周期显示按钮

This commit is contained in:
jackyu66git
2026-03-16 16:26:14 +08:00
parent e61af7b1a8
commit f1b0daa55f
3 changed files with 95 additions and 66 deletions
+4 -4
View File
@@ -986,7 +986,7 @@ class TF_DF():
if last_top.high > klc.high: if last_top.high > klc.high:
bi_list[-1].add_klc(klc) bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1]) klc.set_bi(bi_list[-1])
klc.set_klc_fx_type(Chan_KLC_FX.TOP3) #klc.set_klc_fx_type(Chan_KLC_FX.TOP3)
#print(klc.end_time, klc.fx, "二类卖点Sell 1") #print(klc.end_time, klc.fx, "二类卖点Sell 1")
else: else:
# A new top found # A new top found
@@ -1005,7 +1005,7 @@ class TF_DF():
if last_bottom.index + bi_klc_min > klc.index: if last_bottom.index + bi_klc_min > klc.index:
if last_top.high > klc.high: if last_top.high > klc.high:
#print(klc.start_time, klc.fx, "二类卖点Sell 1") #print(klc.start_time, klc.fx, "二类卖点Sell 1")
klc.set_klc_fx_type(Chan_KLC_FX.TOP8) #klc.set_klc_fx_type(Chan_KLC_FX.TOP8)
bi_list[-1].add_klc(klc) bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1]) klc.set_bi(bi_list[-1])
# New TOP Found前面的UKNOWN可能出现TOP7,但是这里的也可能出现TOP8分型 # New TOP Found前面的UKNOWN可能出现TOP7,但是这里的也可能出现TOP8分型
@@ -1104,7 +1104,7 @@ class TF_DF():
if last_bottom.low < klc.low: if last_bottom.low < klc.low:
bi_list[-1].add_klc(klc) bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1]) klc.set_bi(bi_list[-1])
klc.set_klc_fx_type(Chan_KLC_FX.BOTTOM3) #klc.set_klc_fx_type(Chan_KLC_FX.BOTTOM3)
#print(last_bottom.start_time, last_bottom.end_time, "--------------------------------1") #print(last_bottom.start_time, last_bottom.end_time, "--------------------------------1")
#print(klc.end_time, klc.fx, "二类买点Buy 1") #print(klc.end_time, klc.fx, "二类买点Buy 1")
else: else:
@@ -1125,7 +1125,7 @@ class TF_DF():
#print(klc.end_time, klc.fx, "中枢买点Buy 1") #print(klc.end_time, klc.fx, "中枢买点Buy 1")
bi_list[-1].add_klc(klc) bi_list[-1].add_klc(klc)
klc.set_bi(bi_list[-1]) klc.set_bi(bi_list[-1])
klc.set_klc_fx_type(Chan_KLC_FX.BOTTOM8) #klc.set_klc_fx_type(Chan_KLC_FX.BOTTOM8)
# Found new bottom没有意义,上面UNKNOWN的时候已经是笔破坏了 # Found new bottom没有意义,上面UNKNOWN的时候已经是笔破坏了
else: else:
#print(klc.end_time, last_bottom.end_time, "Found a new bottom") #print(klc.end_time, last_bottom.end_time, "Found a new bottom")
+3
View File
@@ -1619,6 +1619,9 @@ def analyze():
sub_sub_df = add_indicators(sub_sub_df) sub_sub_df = add_indicators(sub_sub_df)
sub_sub_analysis = analyze_chan(sub_sub_df, symbol, sub_sub_timeframe) sub_sub_analysis = analyze_chan(sub_sub_df, symbol, sub_sub_timeframe)
result['sub_sub_timeframe'] = sub_sub_timeframe result['sub_sub_timeframe'] = sub_sub_timeframe
result['sub_sub_kline_data'] = clean_dataframe_for_json(sub_sub_df).to_dict('records')
result['sub_sub_atr'] = sub_sub_df['atr'].tolist()
result['sub_sub_macd'] = calculate_macd(sub_sub_df)
result['sub_sub_bi_list'] = [{ result['sub_sub_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(), '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, '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,
+88 -62
View File
@@ -851,6 +851,10 @@
<input class="form-check-input" type="radio" name="klinePeriod" id="elementPeriodKline"> <input class="form-check-input" type="radio" name="klinePeriod" id="elementPeriodKline">
<label class="form-check-label" for="elementPeriodKline">小周期</label> <label class="form-check-label" for="elementPeriodKline">小周期</label>
</div> </div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="klinePeriod" id="subSubPeriodKline">
<label class="form-check-label" for="subSubPeriodKline">次次周期</label>
</div>
<div class="form-check form-check-inline"> <div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="showMacd" checked> <input class="form-check-input" type="checkbox" id="showMacd" checked>
<label class="form-check-label" for="showMacd">ChanMACD</label> <label class="form-check-label" for="showMacd">ChanMACD</label>
@@ -876,7 +880,7 @@
<div id="refreshLoadingSpinner" class="loading-spinner ms-2" style="display:none;"></div> <div id="refreshLoadingSpinner" class="loading-spinner ms-2" style="display:none;"></div>
</div> </div>
</div> </div>
<div class="d-flex align-items-center mt-2"> <div class="d-flex align-items-center mt-1">
<label class="form-label me-0 mb-0">主周期:</label> <label class="form-label me-0 mb-0">主周期:</label>
<div class="form-check form-check-inline"> <div class="form-check form-check-inline">
<select id="timeframe" class="form-select form-select-sm me-2" style="width: 100px;"> <select id="timeframe" class="form-select form-select-sm me-2" style="width: 100px;">
@@ -918,7 +922,7 @@
<label class="form-check-label" for="showMainBsp">买卖点</label> <label class="form-check-label" for="showMainBsp">买卖点</label>
</div> </div>
</div> </div>
<div class="d-flex align-items-center mt-2"> <div class="d-flex align-items-center mt-1">
<label class="form-label me-0 mb-0">次周期:</label> <label class="form-label me-0 mb-0">次周期:</label>
<div class="form-check form-check-inline"> <div class="form-check form-check-inline">
<select id="elementTimeframe" class="form-select form-select-sm me-2" style="width: 100px;"> <select id="elementTimeframe" class="form-select form-select-sm me-2" style="width: 100px;">
@@ -960,7 +964,7 @@
<label class="form-check-label" for="showElementBsp">买卖点</label> <label class="form-check-label" for="showElementBsp">买卖点</label>
</div> </div>
</div> </div>
<div class="d-flex align-items-center mt-2"> <div class="d-flex align-items-center mt-1">
<label class="form-label me-0 mb-0">次次周期:</label> <label class="form-label me-0 mb-0">次次周期:</label>
<div class="form-check form-check-inline"> <div class="form-check form-check-inline">
<select id="subSubTimeframe" class="form-select form-select-sm me-2" style="width: 100px;"> <select id="subSubTimeframe" class="form-select form-select-sm me-2" style="width: 100px;">
@@ -2183,26 +2187,31 @@
return; return;
} }
// 检查是否使用小周期K线数据 // 检查使用哪一档K线数据:次次周期 / 小周期 / 主周期
const useSubSubPeriod = $('#subSubPeriodKline').is(':checked') &&
currentData.sub_sub_kline_data &&
Array.isArray(currentData.sub_sub_kline_data);
const useElementPeriod = $('#elementPeriodKline').is(':checked') && const useElementPeriod = $('#elementPeriodKline').is(':checked') &&
currentData.element_kline_data && currentData.element_kline_data &&
Array.isArray(currentData.element_kline_data); Array.isArray(currentData.element_kline_data);
// 输出K线周期选择状态 // 输出K线周期选择状态
console.log('K线周期选择:', useElementPeriod ? '小周期' : '主周期'); const klinePeriodLabel = useSubSubPeriod ? '次次周期' : (useElementPeriod ? '小周期' : '主周期');
console.log('K线周期选择:', klinePeriodLabel);
console.log('当前选择时区:', $('#timezone').val()); console.log('当前选择时区:', $('#timezone').val());
console.log('交易对类型:', symbolConfig.type); console.log('交易对类型:', symbolConfig.type);
let candles = []; let candles = [];
const klineDataSource = useSubSubPeriod ? (currentData.sub_sub_kline_data || []) : (useElementPeriod ? (currentData.element_kline_data || []) : (currentData.kline_data || []));
if (useElementPeriod) { if (useSubSubPeriod || useElementPeriod) {
// 使用小周期K线数据 if (!klineDataSource.length) {
candles = currentData.element_kline_data.map((kline) => { console.error(useSubSubPeriod ? '次次周期K线数据不存在或为空' : '小周期K线数据不存在或为空', klineDataSource);
// 使用原始日期字符串创建Date对象 return;
}
candles = klineDataSource.map((kline) => {
const date = new Date(kline.date); const date = new Date(kline.date);
// 获取时间戳(秒)- 不手动调整时区
const timestamp = date.getTime() / 1000; const timestamp = date.getTime() / 1000;
return { return {
time: timestamp, time: timestamp,
open: parseFloat(kline.open), open: parseFloat(kline.open),
@@ -2212,17 +2221,13 @@
}; };
}); });
} else { } else {
// 使用主周期K线数据 - 检查数据是否存在
if (!currentData.kline_data || !Array.isArray(currentData.kline_data)) { if (!currentData.kline_data || !Array.isArray(currentData.kline_data)) {
console.error('主周期K线数据不存在或不是数组:', currentData.kline_data); console.error('主周期K线数据不存在或不是数组:', currentData.kline_data);
return; return;
} }
candles = currentData.kline_data.map((kline) => { candles = currentData.kline_data.map((kline) => {
// 使用原始日期字符串创建Date对象
const date = new Date(kline.date); const date = new Date(kline.date);
// 获取时间戳(秒)- 不手动调整时区
const timestamp = date.getTime() / 1000; const timestamp = date.getTime() / 1000;
return { return {
time: timestamp, time: timestamp,
open: parseFloat(kline.open), open: parseFloat(kline.open),
@@ -2655,12 +2660,11 @@
} }
})(); })();
// 转换成交量数据 - 始终使用主K线周期数据 // 转换成交量数据 - K线周期一致
let volumes = []; let volumes = [];
// 使用与K线和MACD相同的数据源选择逻辑 const volumeDataSource = useSubSubPeriod ? (currentData.sub_sub_kline_data || []) : (useElementPeriod ? currentData.element_kline_data : currentData.kline_data);
const volumeDataSource = useElementPeriod ? currentData.element_kline_data : currentData.kline_data;
console.log('成交量数据源选择:', useElementPeriod ? '次周期' : '主周期'); console.log('成交量数据源选择:', klinePeriodLabel);
console.log('成交量数据长度:', volumeDataSource.length); console.log('成交量数据长度:', volumeDataSource.length);
if (volumeDataSource && Array.isArray(volumeDataSource)) { if (volumeDataSource && Array.isArray(volumeDataSource)) {
@@ -2699,13 +2703,10 @@
// 准备ATR数据 // 准备ATR数据
const atrData = []; const atrData = [];
// 使用与K线数据相同的数据源来确保时间对齐 const atrKlineDataSource = useSubSubPeriod ? (currentData.sub_sub_kline_data || []) : (useElementPeriod ? currentData.element_kline_data : currentData.kline_data);
const atrKlineDataSource = useElementPeriod ? currentData.element_kline_data : currentData.kline_data; const atrDataSource = useSubSubPeriod ? (currentData.sub_sub_atr || currentData.atr) : (useElementPeriod ? (currentData.element_atr || currentData.atr) : currentData.atr);
const atrDataSource = useElementPeriod ?
(currentData.element_atr || currentData.atr) : // 如果有次周期ATR数据则使用,否则使用主周期
currentData.atr; // 主周期使用主周期ATR数据
console.log('ATR数据源选择:', useElementPeriod ? '次周期' : '主周期'); console.log('ATR数据源选择:', klinePeriodLabel);
console.log('ATR数据长度:', atrDataSource ? atrDataSource.length : 0); console.log('ATR数据长度:', atrDataSource ? atrDataSource.length : 0);
console.log('K线数据长度:', atrKlineDataSource ? atrKlineDataSource.length : 0); console.log('K线数据长度:', atrKlineDataSource ? atrKlineDataSource.length : 0);
@@ -2776,7 +2777,7 @@
const histogramData = []; const histogramData = [];
// 使用与K线数据相同的数据源来确保时间对齐 // 使用与K线数据相同的数据源来确保时间对齐
const klineDataSource = useElementPeriod ? currentData.element_kline_data : currentData.kline_data; const klineDataSource = useSubSubPeriod ? (currentData.sub_sub_kline_data || []) : (useElementPeriod ? currentData.element_kline_data : currentData.kline_data);
const macdDataSource = useElementPeriod ? const macdDataSource = useElementPeriod ?
(currentData.element_macd || currentData.macd) : // 如果有次周期MACD数据则使用,否则使用主周期 (currentData.element_macd || currentData.macd) : // 如果有次周期MACD数据则使用,否则使用主周期
currentData.macd; // 主周期使用主周期MACD数据 currentData.macd; // 主周期使用主周期MACD数据
@@ -2839,7 +2840,7 @@
if (typeof window.showUOnSubSub === 'undefined') { if (typeof window.showUOnSubSub === 'undefined') {
window.showUOnSubSub = $('#toggleUOnSubSub').is(':checked'); window.showUOnSubSub = $('#toggleUOnSubSub').is(':checked');
} }
if (showMacd && chanMacdChart && ((useElementPeriod && currentData.element_macd) || currentData.macd) && (useElementPeriod ? currentData.element_kline_data : currentData.kline_data)) { if (showMacd && chanMacdChart && ((useSubSubPeriod && currentData.sub_sub_macd) || (useElementPeriod && currentData.element_macd) || currentData.macd) && (useSubSubPeriod ? (currentData.sub_sub_kline_data || []) : (useElementPeriod ? currentData.element_kline_data : currentData.kline_data))) {
console.log('✅ 开始创建 ChanMACD 系列'); console.log('✅ 开始创建 ChanMACD 系列');
// 创建ChanMACD线系列 // 创建ChanMACD线系列
const chanMacdLineSeries = chanMacdChart.addLineSeries({ const chanMacdLineSeries = chanMacdChart.addLineSeries({
@@ -2883,8 +2884,8 @@
}); });
// 使用与主图一致的数据源(小周期开启时使用小周期MACD与K线) // 使用与主图一致的数据源(小周期开启时使用小周期MACD与K线)
const klineDataSource = useElementPeriod ? currentData.element_kline_data : currentData.kline_data; const klineDataSource = useSubSubPeriod ? (currentData.sub_sub_kline_data || []) : (useElementPeriod ? currentData.element_kline_data : currentData.kline_data);
const macdDataSource = useElementPeriod ? (currentData.element_macd || currentData.macd) : currentData.macd; const macdDataSource = useSubSubPeriod ? (currentData.sub_sub_macd || currentData.macd) : (useElementPeriod ? (currentData.element_macd || currentData.macd) : currentData.macd);
// 准备ChanMACD数据 // 准备ChanMACD数据
const chanMacdData = []; const chanMacdData = [];
@@ -2958,9 +2959,9 @@
// 添加ChanMACD分析标注 // 添加ChanMACD分析标注
// 根据主/次周期开关与各自的"显示U"独立控制 // 根据主/次周期开关与各自的"显示U"独立控制
const cm = useElementPeriod ? (currentData.element_chan_macd || currentData.chan_macd) : currentData.chan_macd; const cm = useSubSubPeriod ? (currentData.sub_sub_chan_macd || currentData.chan_macd) : (useElementPeriod ? (currentData.element_chan_macd || currentData.chan_macd) : currentData.chan_macd);
// 默认不显示,必须用户勾选对应复选框 // 默认不显示,必须用户勾选对应复选框
const allowU = useElementPeriod ? !!window.showUOnElement : !!window.showUOnMain; const allowU = useSubSubPeriod ? !!window.showUOnSubSub : (useElementPeriod ? !!window.showUOnElement : !!window.showUOnMain);
if (cm && allowU) { if (cm && allowU) {
console.log('添加ChanMACD分析标注:', { console.log('添加ChanMACD分析标注:', {
segListLength: cm.seg_list ? cm.seg_list.length : 0, segListLength: cm.seg_list ? cm.seg_list.length : 0,
@@ -6056,7 +6057,7 @@
position: fx.is_bottom ? 'belowBar' : 'aboveBar', position: fx.is_bottom ? 'belowBar' : 'aboveBar',
color: strengthColor, color: strengthColor,
shape: 'triangle', shape: 'triangle',
text: displayText || 's', text: displayText,
size: (fx.is_strong_fx ? 0.6 : 0.5) size: (fx.is_strong_fx ? 0.6 : 0.5)
}; };
allElementFxMarkers.push(markerConfig); allElementFxMarkers.push(markerConfig);
@@ -6653,7 +6654,7 @@
currentData.atr; currentData.atr;
if (atrDataSource && Array.isArray(atrDataSource)) { if (atrDataSource && Array.isArray(atrDataSource)) {
const klineDataSource = useElementPeriod ? currentData.element_kline_data : currentData.kline_data; const klineDataSource = useSubSubPeriod ? (currentData.sub_sub_kline_data || []) : (useElementPeriod ? currentData.element_kline_data : currentData.kline_data);
// 修复:为每个K线时间点都创建ATR数据点,包括没有ATR值的前期数据 // 修复:为每个K线时间点都创建ATR数据点,包括没有ATR值的前期数据
for (let i = 0; i < klineDataSource.length; i++) { for (let i = 0; i < klineDataSource.length; i++) {
const kline = klineDataSource[i]; const kline = klineDataSource[i];
@@ -6721,9 +6722,9 @@
} }
// 更新 ChanMACD 数据与自定义标注 // 更新 ChanMACD 数据与自定义标注
if (tvWidget.series.chanMacdLineSeries && ((useElementPeriod && currentData.element_macd) || currentData.macd) && (useElementPeriod ? currentData.element_kline_data : currentData.kline_data)) { if (tvWidget.series.chanMacdLineSeries && ((useSubSubPeriod && currentData.sub_sub_macd) || (useElementPeriod && currentData.element_macd) || currentData.macd) && (useSubSubPeriod ? (currentData.sub_sub_kline_data || []) : (useElementPeriod ? currentData.element_kline_data : currentData.kline_data))) {
const klineDataSource = useElementPeriod ? currentData.element_kline_data : currentData.kline_data; const klineDataSource = useSubSubPeriod ? (currentData.sub_sub_kline_data || []) : (useElementPeriod ? currentData.element_kline_data : currentData.kline_data);
const macdDataSource = useElementPeriod ? (currentData.element_macd || currentData.macd) : currentData.macd; const macdDataSource = useSubSubPeriod ? (currentData.sub_sub_macd || currentData.macd) : (useElementPeriod ? (currentData.element_macd || currentData.macd) : currentData.macd);
if (macdDataSource && macdDataSource.macd && macdDataSource.signal && macdDataSource.histogram) { if (macdDataSource && macdDataSource.macd && macdDataSource.signal && macdDataSource.histogram) {
const chanMacdData = []; const chanMacdData = [];
const chanSignalData = []; const chanSignalData = [];
@@ -6746,8 +6747,8 @@
// 重新应用自定义标注(段/UnitTF/HistSet/状态点) // 重新应用自定义标注(段/UnitTF/HistSet/状态点)
try { try {
if (typeof clearChanMacdMarkers === 'function') clearChanMacdMarkers(); if (typeof clearChanMacdMarkers === 'function') clearChanMacdMarkers();
const cm = useElementPeriod ? (currentData.element_chan_macd || currentData.chan_macd) : currentData.chan_macd; const cm = useSubSubPeriod ? (currentData.sub_sub_chan_macd || currentData.chan_macd) : (useElementPeriod ? (currentData.element_chan_macd || currentData.chan_macd) : currentData.chan_macd);
const allowU = useElementPeriod ? !!window.showUOnElement : !!window.showUOnMain; const allowU = useSubSubPeriod ? !!window.showUOnSubSub : (useElementPeriod ? !!window.showUOnElement : !!window.showUOnMain);
if (cm && allowU) { if (cm && allowU) {
addAllChanMacdMarkers( addAllChanMacdMarkers(
cm.seg_list || [], cm.seg_list || [],
@@ -7334,18 +7335,21 @@
const data = currentData; const data = currentData;
// 检查用户选择的是主周期还是小周期数据 const useSubSubPeriod = $('#subSubPeriodKline').is(':checked');
const useElementPeriod = $('#elementPeriodKline').is(':checked'); const useElementPeriod = $('#elementPeriodKline').is(':checked');
console.log('数据表显示周期选择:', useElementPeriod ? '小周期' : '主周期'); const periodLabel = useSubSubPeriod ? '次次周期' : (useElementPeriod ? '小周期' : '主周期');
console.log('数据表显示周期选择:', periodLabel);
// 笔数据表更新 // 笔数据表更新
if (tables.bi) { if (tables.bi) {
tables.bi.clear().destroy(); tables.bi.clear().destroy();
} }
// 根据用户选择决定使用哪个周期的数据
let biData, biSource; let biData, biSource;
if (useElementPeriod && data.element_bi_list && data.element_bi_list.length > 0) { if (useSubSubPeriod && data.sub_sub_bi_list && data.sub_sub_bi_list.length > 0) {
biData = data.sub_sub_bi_list;
biSource = '次次周期';
} else if (useElementPeriod && data.element_bi_list && data.element_bi_list.length > 0) {
biData = data.element_bi_list; biData = data.element_bi_list;
biSource = '小周期'; biSource = '小周期';
} else { } else {
@@ -7374,9 +7378,12 @@
tables.seg.clear().destroy(); tables.seg.clear().destroy();
} }
// 根据用户选择决定使用哪个周期的数据
let segData, segSource, uncompletedSegData; let segData, segSource, uncompletedSegData;
if (useElementPeriod && data.element_seg_list && data.element_seg_list.length > 0) { if (useSubSubPeriod && data.sub_sub_seg_list && data.sub_sub_seg_list.length > 0) {
segData = data.sub_sub_seg_list;
uncompletedSegData = data.sub_sub_uncompleted_seg_list || [];
segSource = '次次周期';
} else if (useElementPeriod && data.element_seg_list && data.element_seg_list.length > 0) {
segData = data.element_seg_list; segData = data.element_seg_list;
uncompletedSegData = data.element_uncompleted_seg_list || []; uncompletedSegData = data.element_uncompleted_seg_list || [];
segSource = '小周期'; segSource = '小周期';
@@ -7433,9 +7440,11 @@
tables.zs.clear().destroy(); tables.zs.clear().destroy();
} }
// 根据用户选择决定使用哪个周期的数据
let zsData, zsSource; let zsData, zsSource;
if (useElementPeriod && data.element_zs_list && data.element_zs_list.length > 0) { if (useSubSubPeriod && data.sub_sub_zs_list && data.sub_sub_zs_list.length > 0) {
zsData = data.sub_sub_zs_list;
zsSource = '次次周期';
} else if (useElementPeriod && data.element_zs_list && data.element_zs_list.length > 0) {
zsData = data.element_zs_list; zsData = data.element_zs_list;
zsSource = '小周期'; zsSource = '小周期';
} else { } else {
@@ -7461,13 +7470,15 @@
tables.tradePoints.clear().destroy(); tables.tradePoints.clear().destroy();
} }
// 根据用户选择决定使用哪个周期的数据
let tradePointsData, tradePointsSource; let tradePointsData, tradePointsSource;
if (useElementPeriod && data.element_trade_points && data.element_trade_points.length > 0) { if (useSubSubPeriod && data.sub_sub_bsp_list && data.sub_sub_bsp_list.length > 0) {
tradePointsData = data.element_trade_points; tradePointsData = data.sub_sub_bsp_list;
tradePointsSource = '次次周期';
} else if (useElementPeriod && (data.element_trade_points && data.element_trade_points.length > 0 || data.element_bsp_list && data.element_bsp_list.length > 0)) {
tradePointsData = data.element_trade_points || data.element_bsp_list;
tradePointsSource = '小周期'; tradePointsSource = '小周期';
} else { } else {
tradePointsData = data.trade_points; tradePointsData = data.trade_points || data.bsp_list;
tradePointsSource = '主周期'; tradePointsSource = '主周期';
} }
console.log(`表格显示${tradePointsSource}买卖点数据,共${tradePointsData ? tradePointsData.length : 0}条`); console.log(`表格显示${tradePointsSource}买卖点数据,共${tradePointsData ? tradePointsData.length : 0}条`);
@@ -7485,8 +7496,8 @@
}); });
// 更新数据源信息显示 // 更新数据源信息显示
const selectedPeriod = useElementPeriod ? '小周期' : '主周期'; const selectedPeriod = useSubSubPeriod ? '次次周期' : (useElementPeriod ? '小周期' : '主周期');
const timeframe = useElementPeriod && data.element_timeframe ? data.element_timeframe : $('#timeframe').val(); const timeframe = useSubSubPeriod && data.sub_sub_timeframe ? data.sub_sub_timeframe : (useElementPeriod && data.element_timeframe ? data.element_timeframe : $('#timeframe').val());
$('#dataSourceText').html(`当前显示的是<strong>${selectedPeriod} (${timeframe})</strong> 数据`); $('#dataSourceText').html(`当前显示的是<strong>${selectedPeriod} (${timeframe})</strong> 数据`);
// K线数据表更新 // K线数据表更新
@@ -7496,7 +7507,10 @@
// 根据用户选择决定使用哪个周期的K线数据 // 根据用户选择决定使用哪个周期的K线数据
let klineData, klineSource; let klineData, klineSource;
if (useElementPeriod && data.element_kline_data && data.element_kline_data.length > 0) { if (useSubSubPeriod && data.sub_sub_kline_data && data.sub_sub_kline_data.length > 0) {
klineData = data.sub_sub_kline_data;
klineSource = '次次周期';
} else if (useElementPeriod && data.element_kline_data && data.element_kline_data.length > 0) {
klineData = data.element_kline_data; klineData = data.element_kline_data;
klineSource = '小周期'; klineSource = '小周期';
} else { } else {
@@ -7524,9 +7538,11 @@
tables.uncompletedZs.clear().destroy(); tables.uncompletedZs.clear().destroy();
} }
// 根据用户选择决定使用哪个周期的数据
let uncompletedZsData, uncompletedZsSource; let uncompletedZsData, uncompletedZsSource;
if (useElementPeriod && data.element_uncompleted_zs_list && data.element_uncompleted_zs_list.length > 0) { if (useSubSubPeriod && data.sub_sub_uncompleted_zs_list && data.sub_sub_uncompleted_zs_list.length > 0) {
uncompletedZsData = data.sub_sub_uncompleted_zs_list;
uncompletedZsSource = '次次周期';
} else if (useElementPeriod && data.element_uncompleted_zs_list && data.element_uncompleted_zs_list.length > 0) {
uncompletedZsData = data.element_uncompleted_zs_list; uncompletedZsData = data.element_uncompleted_zs_list;
uncompletedZsSource = '小周期'; uncompletedZsSource = '小周期';
} else { } else {
@@ -7599,15 +7615,17 @@
} }
// 设置数据源信息显示 // 设置数据源信息显示
function setupDataSourceInfo(data) { function setupDataSourceInfo(data) {
// 获取用户当前的周期选择 const useSubSubPeriod = $('#subSubPeriodKline').is(':checked');
const useElementPeriod = $('#elementPeriodKline').is(':checked'); const useElementPeriod = $('#elementPeriodKline').is(':checked');
const mainTimeframe = $('#timeframe').val(); const mainTimeframe = $('#timeframe').val();
const elementTimeframe = data.element_timeframe || mainTimeframe; const elementTimeframe = data.element_timeframe || mainTimeframe;
const subSubTimeframe = data.sub_sub_timeframe || elementTimeframe;
// 添加标签点击事件
$('#kline-tab, #macd-tab').off('click').on('click', function() { $('#kline-tab, #macd-tab').off('click').on('click', function() {
$('.data-source-info').show(); $('.data-source-info').show();
if (useElementPeriod && data.element_kline_data && data.element_kline_data.length > 0) { if (useSubSubPeriod && data.sub_sub_kline_data && data.sub_sub_kline_data.length > 0) {
$('#dataSourceText').html(`当前显示的是<strong>次次周期 (${subSubTimeframe})</strong> 数据`);
} else if (useElementPeriod && data.element_kline_data && data.element_kline_data.length > 0) {
$('#dataSourceText').html(`当前显示的是<strong>小周期 (${elementTimeframe})</strong> 数据`); $('#dataSourceText').html(`当前显示的是<strong>小周期 (${elementTimeframe})</strong> 数据`);
} else { } else {
$('#dataSourceText').html(`当前显示的是<strong>主周期 (${mainTimeframe})</strong> 数据`); $('#dataSourceText').html(`当前显示的是<strong>主周期 (${mainTimeframe})</strong> 数据`);
@@ -7616,7 +7634,9 @@
$('#bi-tab').off('click').on('click', function() { $('#bi-tab').off('click').on('click', function() {
$('.data-source-info').show(); $('.data-source-info').show();
if (useElementPeriod && data.element_bi_list && data.element_bi_list.length > 0) { if (useSubSubPeriod && data.sub_sub_bi_list && data.sub_sub_bi_list.length > 0) {
$('#dataSourceText').html(`当前显示的是<strong>次次周期 (${subSubTimeframe})</strong> 笔数据`);
} else if (useElementPeriod && data.element_bi_list && data.element_bi_list.length > 0) {
$('#dataSourceText').html(`当前显示的是<strong>小周期 (${elementTimeframe})</strong> 笔数据`); $('#dataSourceText').html(`当前显示的是<strong>小周期 (${elementTimeframe})</strong> 笔数据`);
} else { } else {
$('#dataSourceText').html(`当前显示的是<strong>主周期 (${mainTimeframe})</strong> 笔数据`); $('#dataSourceText').html(`当前显示的是<strong>主周期 (${mainTimeframe})</strong> 笔数据`);
@@ -7625,7 +7645,9 @@
$('#seg-tab').off('click').on('click', function() { $('#seg-tab').off('click').on('click', function() {
$('.data-source-info').show(); $('.data-source-info').show();
if (useElementPeriod && data.element_seg_list && data.element_seg_list.length > 0) { if (useSubSubPeriod && data.sub_sub_seg_list && data.sub_sub_seg_list.length > 0) {
$('#dataSourceText').html(`当前显示的是<strong>次次周期 (${subSubTimeframe})</strong> 线段数据`);
} else if (useElementPeriod && data.element_seg_list && data.element_seg_list.length > 0) {
$('#dataSourceText').html(`当前显示的是<strong>小周期 (${elementTimeframe})</strong> 线段数据`); $('#dataSourceText').html(`当前显示的是<strong>小周期 (${elementTimeframe})</strong> 线段数据`);
} else { } else {
$('#dataSourceText').html(`当前显示的是<strong>主周期 (${mainTimeframe})</strong> 线段数据`); $('#dataSourceText').html(`当前显示的是<strong>主周期 (${mainTimeframe})</strong> 线段数据`);
@@ -7634,7 +7656,9 @@
$('#zs-tab').off('click').on('click', function() { $('#zs-tab').off('click').on('click', function() {
$('.data-source-info').show(); $('.data-source-info').show();
if (useElementPeriod && data.element_zs_list && data.element_zs_list.length > 0) { if (useSubSubPeriod && data.sub_sub_zs_list && data.sub_sub_zs_list.length > 0) {
$('#dataSourceText').html(`当前显示的是<strong>次次周期 (${subSubTimeframe})</strong> 中枢数据`);
} else if (useElementPeriod && data.element_zs_list && data.element_zs_list.length > 0) {
$('#dataSourceText').html(`当前显示的是<strong>小周期 (${elementTimeframe})</strong> 中枢数据`); $('#dataSourceText').html(`当前显示的是<strong>小周期 (${elementTimeframe})</strong> 中枢数据`);
} else { } else {
$('#dataSourceText').html(`当前显示的是<strong>主周期 (${mainTimeframe})</strong> 中枢数据`); $('#dataSourceText').html(`当前显示的是<strong>主周期 (${mainTimeframe})</strong> 中枢数据`);
@@ -7643,7 +7667,9 @@
$('#trade-points-tab').off('click').on('click', function() { $('#trade-points-tab').off('click').on('click', function() {
$('.data-source-info').show(); $('.data-source-info').show();
if (useElementPeriod && data.element_trade_points && data.element_trade_points.length > 0) { if (useSubSubPeriod && data.sub_sub_bsp_list && data.sub_sub_bsp_list.length > 0) {
$('#dataSourceText').html(`当前显示的是<strong>次次周期 (${subSubTimeframe})</strong> 买卖点数据`);
} else if (useElementPeriod && data.element_trade_points && data.element_trade_points.length > 0) {
$('#dataSourceText').html(`当前显示的是<strong>小周期 (${elementTimeframe})</strong> 买卖点数据`); $('#dataSourceText').html(`当前显示的是<strong>小周期 (${elementTimeframe})</strong> 买卖点数据`);
} else { } else {
$('#dataSourceText').html(`当前显示的是<strong>主周期 (${mainTimeframe})</strong> 买卖点数据`); $('#dataSourceText').html(`当前显示的是<strong>主周期 (${mainTimeframe})</strong> 买卖点数据`);