添加次次周期显示按钮
This commit is contained in:
@@ -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")
|
||||||
|
|||||||
@@ -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
@@ -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> 买卖点数据`);
|
||||||
|
|||||||
Reference in New Issue
Block a user