From 510a03aea8658f43a74060264f1c6290b83d78f1 Mon Sep 17 00:00:00 2001 From: Porter Date: Mon, 2 Jun 2025 14:34:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0klu=E5=88=86=E5=9E=8B?= =?UTF-8?q?=E7=9A=84=E5=BC=BA=E5=BA=A6=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ChanLun.py | 4 +- __pycache__/ChanLun.cpython-312.pyc | Bin 112562 -> 113088 bytes web/app.py | 102 ++++++++- web/templates/index.html | 322 ++++++++++++++++++++-------- 4 files changed, 333 insertions(+), 95 deletions(-) diff --git a/ChanLun.py b/ChanLun.py index 421b923..1c3dbe3 100644 --- a/ChanLun.py +++ b/ChanLun.py @@ -718,7 +718,7 @@ class ChanLun(): if last_top.index + 4 < klc.index and len(bi_list) > 1: pre_last_bi = bi_list[-2] last_bi = bi_list[-1] - if pre_last_bi.is_sure and not last_bi.is_sure and pre_last_bi.dir == Chan_BI_DIR.UP and False: + if pre_last_bi.is_sure and not last_bi.is_sure and pre_last_bi.dir == Chan_BI_DIR.UP: pre_last_bi.update_bi(klc) bi_list.remove(last_bi) pre_last_bi.set_next(None) @@ -838,7 +838,7 @@ class ChanLun(): if last_bottom.index + 4 < klc.index and len(bi_list) > 1: pre_last_bi = bi_list[-2] last_bi = bi_list[-1] - if pre_last_bi.is_sure and not last_bi.is_sure and pre_last_bi.dir == Chan_BI_DIR.DOWN and False: + if pre_last_bi.is_sure and not last_bi.is_sure and pre_last_bi.dir == Chan_BI_DIR.DOWN: pre_last_bi.update_bi(klc) bi_list.remove(last_bi) pre_last_bi.set_next(None) diff --git a/__pycache__/ChanLun.cpython-312.pyc b/__pycache__/ChanLun.cpython-312.pyc index 334f1499bd939ccc66f65121aa3f081d7ee4474b..83849fa2d015c81d1cc93ffce85f7189189b86be 100644 GIT binary patch delta 710 zcma)%L1@!Z7{~MSlD4rgI%&7E)Y-&RL9A|LgQ*}2DvV7EbudpB4+Wiq){NZ}+RfFr zYudGZjP*1+bRg&ijo?XUMNb|^SfRby-4xVKM7=2Z8uXwb?7@47_kH~S|KF1>$BQox z@r@|%V(7Vk?&Q^l$KrTW`r%=iMdk{lvvEep^l}PL;E?-1O|b(t%vn+PpIE!7XL%mt{-oIu}TIqygBU~A?u%0bQF#ZKyg3C|;D{yQsfxp`mFRaZ4Q4-dR?W}R^FfQ8U zWM287`SBeZbH9z@K{^OAV?R}vAy!PF3EDO)It}Jh9DUG zG_0zB>SiXLf)Te>CiZqF@K@^K9)nJ_*Y!c6WBp0a+ z)k)Bv$QF^SUOH*{r0j503N@r&OX|&zw#c3a30Nd>&)tywEV-{v`nO%CdqKxLXG%TU h(WdV}!xy%E;q35V%mGUtsFT5M*X=^(S)qbLfnUyL1StRj delta 452 zcmX@`nQha1Hr~^`yj%=G@H^2eW93HPuzINmAqIx&4CxHDOeqYt%s|Xi!|1{=fiu=% zb8S5~_cydMGTKi**kCw$UPsX68BJD<(i9 zGxfMkzSyof`9VtoWAEm`*42!R$w1?ECu_AYVP@_*3zVG5Dptc%R5ZE2L2PnuM=5Ju z4Qnm)Wd4p|#;(cUo%;n@dR_xv$6QnZbSYEOt{Uda6B|S)8+0vT^qqXMYbx^$u!zXy z+HPe=g~= 2: + fx_strength_level = "强" + is_strong_fx = True + elif fx_strength >= 1: + fx_strength_level = "中" + is_strong_fx = False + elif fx_strength >= 0: + fx_strength_level = "弱" + is_strong_fx = False + else: + fx_strength_level = "极弱" + is_strong_fx = False + + # 确保分型确认状态 + is_confirmed = getattr(klu, 'fx_confirmed', True) + + klu_fx_info.append({ + 'time': klu.time, + 'price': klu.low if klu.fx_type == Chan_FX_TYPE.BOTTOM else klu.high, + 'fx_type': str(klu.fx_type).replace("Chan_FX_TYPE.", ""), + 'is_bottom': klu.fx_type == Chan_FX_TYPE.BOTTOM, + 'fx_strength': fx_strength, # 分型强度分数 + 'fx_strength_level': fx_strength_level, # 分型强度等级 + 'is_strong_fx': is_strong_fx, # 是否为强分型 + 'fx_confirmed': is_confirmed # 分型是否确认 + }) + except Exception as e: + print(f"处理KLU分型信息时出错: {e}") + # 如果出错,仍然添加基本信息,但分型强度为0 + klu_fx_info.append({ + 'time': klu.time, + 'price': klu.low if klu.fx_type == Chan_FX_TYPE.BOTTOM else klu.high, + 'fx_type': str(klu.fx_type).replace("Chan_FX_TYPE.", ""), + 'is_bottom': klu.fx_type == Chan_FX_TYPE.BOTTOM, + 'fx_strength': 0, + 'fx_strength_level': "", + 'is_strong_fx': False, + 'fx_confirmed': False + }) + + print(f"提取到 {len(klc_fx_info)} 个KLC分型和 {len(klu_fx_info)} 个KLU分型") + return { 'klc_list': klc_list, + 'klu_list': klu_list, # 添加KLU列表 'bi_list': bi_list, 'seg_list': seg_list, 'zs_list': zs_list, 'trade_points': buy_sell_points, - 'klc_fx_info': klc_fx_info # 添加分型信息 + 'klc_fx_info': klc_fx_info, # KLC分型信息 + 'klu_fx_info': klu_fx_info # 添加KLU分型信息 } def identify_trade_points(bi_list, seg_list, zs_list): @@ -687,7 +764,17 @@ def analyze(): 'fx_strength': float(point['fx_strength']), # 分型强度分数 'fx_strength_level': str(point['fx_strength_level']), # 分型强度等级 'is_strong_fx': bool(point['is_strong_fx']) # 是否为强分型 - } for point in analysis_result['klc_fx_info']] + } for point in analysis_result['klc_fx_info']], + 'klu_fx_info': [{ + 'time': format_time_safely(point['time'], client_tz), + 'price': float(point['price']), + 'fx_type': point['fx_type'], + 'is_bottom': bool(point['is_bottom']), + 'fx_strength': float(point['fx_strength']), # 分型强度分数 + 'fx_strength_level': str(point['fx_strength_level']), # 分型强度等级 + 'is_strong_fx': bool(point['is_strong_fx']), # 是否为强分型 + 'fx_confirmed': bool(point['fx_confirmed']) # 分型是否确认 + } for point in analysis_result['klu_fx_info']] }) else: print(f"只请求元素数据,跳过主周期数据处理 (elements_only={elements_only})") @@ -780,6 +867,17 @@ def analyze(): 'is_strong_fx': bool(point['is_strong_fx']) # 是否为强分型 } for point in element_analysis['klc_fx_info']] + result['element_klu_fx_info'] = [{ + 'time': format_time_safely(point['time'], client_tz), + 'price': float(point['price']), + 'fx_type': point['fx_type'], + 'is_bottom': bool(point['is_bottom']), + 'fx_strength': float(point['fx_strength']), # 分型强度分数 + 'fx_strength_level': str(point['fx_strength_level']), # 分型强度等级 + 'is_strong_fx': bool(point['is_strong_fx']), # 是否为强分型 + 'fx_confirmed': bool(point['fx_confirmed']) # 分型是否确认 + } for point in element_analysis['klu_fx_info']] + print(f"小周期分析完成: {element_timeframe}, 笔数量: {len(result['element_bi_list'])}, {'仅元素数据' if elements_only else '包含主周期数据'}") else: print(f"无法获取小周期数据: {element_timeframe}") diff --git a/web/templates/index.html b/web/templates/index.html index b95bc6b..e79cd94 100644 --- a/web/templates/index.html +++ b/web/templates/index.html @@ -397,7 +397,11 @@
- + +
+
+ +
@@ -411,7 +415,7 @@
- +
@@ -428,7 +432,11 @@
- + +
+
+ +
@@ -1080,6 +1088,8 @@ console.log('- 显示成交量:', false); console.log('- 显示分型类型:', $('#showKlcFxType').is(':checked')); console.log('- 显示小周期分型:', $('#showElementKlcFxType').is(':checked')); + console.log('- 显示KLU分型:', $('#showKluFxType').is(':checked')); + console.log('- 显示小周期KLU分型:', $('#showElementKluFxType').is(':checked')); console.log('- 显示买卖点:', $('#showTradePoints').is(':checked')); console.log('- 显示原始K线:', $('#showOriginalKline').is(':checked')); console.log('- 显示主周期布林带:', $('#showMainBollinger').is(':checked')); @@ -3187,19 +3197,25 @@ // 绘制分型类型标签 console.log('=== 开始检查分型显示条件 ==='); console.log('showKlcFxType勾选状态:', $('#showKlcFxType').is(':checked')); + console.log('showKluFxType勾选状态:', $('#showKluFxType').is(':checked')); console.log('currentData.klc_fx_info存在:', !!currentData.klc_fx_info); + console.log('currentData.klu_fx_info存在:', !!currentData.klu_fx_info); console.log('currentData.klc_fx_info长度:', currentData.klc_fx_info ? currentData.klc_fx_info.length : 'undefined'); + console.log('currentData.klu_fx_info长度:', currentData.klu_fx_info ? currentData.klu_fx_info.length : 'undefined'); if (currentData.klc_fx_info && currentData.klc_fx_info.length > 0) { - console.log('前3个分型数据样本:', currentData.klc_fx_info.slice(0, 3)); + console.log('前3个klc分型数据样本:', currentData.klc_fx_info.slice(0, 3)); + } + if (currentData.klu_fx_info && currentData.klu_fx_info.length > 0) { + console.log('前3个klu分型数据样本:', currentData.klu_fx_info.slice(0, 3)); } + // 收集所有主周期分型标记 + const allMainFxMarkers = []; + const mainFxMarkers = []; // 用于tooltip支持 + + // 处理主周期KLC分型 if ($('#showKlcFxType').is(':checked') && currentData.klc_fx_info && currentData.klc_fx_info.length > 0) { - console.log(`绘制K线分型类型标签,共${currentData.klc_fx_info.length}条`); - - // 收集所有分型标记 - const allFxMarkers = []; - // 存储分型标记,用于tooltip功能 - const fxMarkers = []; + console.log(`绘制主周期K线合并分型标签,共${currentData.klc_fx_info.length}条`); currentData.klc_fx_info.forEach(function(fx) { try { @@ -3207,18 +3223,8 @@ const timestamp = Math.floor(new Date(fx.time).getTime() / 1000); const price = parseFloat(fx.price); - // 添加时间和价格调试信息 - console.log('处理分型:', { - 原始时间: fx.time, - 转换时间戳: timestamp, - 原始价格: fx.price, - 转换价格: price, - 时间有效: !isNaN(timestamp), - 价格有效: !isNaN(price) - }); - if (isNaN(timestamp) || isNaN(price)) { - console.error('分型类型时间或价格转换错误:', fx.time, fx.price); + console.error('主周期KLC分型时间或价格转换错误:', fx.time, fx.price); return; } @@ -3233,38 +3239,28 @@ } // 构建显示文本,包含分型类型和强度信息 - // 添加调试信息 - console.log('分型数据:', { - fx_type: fx.fx_type, - fx_strength: fx.fx_strength, - fx_strength_level: fx.fx_strength_level, - is_strong_fx: fx.is_strong_fx - }); - let displayText = `${fx.fx_strength_level} ${fx.fx_strength.toFixed(1)}`; - if (fx.fx_strength < 1.0) { // 降低阈值,让更多分型显示 + let displayText = `${fx.fx_strength.toFixed(1)}`; + if (fx.fx_strength < 1.5) { // 降低阈值,让更多分型显示 displayText = fx.fx_strength >= 0.8 ? '•' : '' // 0.8以上显示点,0.8以下不显示文本 } - console.log('显示文本:', displayText); - // 添加标记配置调试 + // 添加标记配置 const markerConfig = { time: timestamp, position: fx.is_bottom ? 'belowBar' : 'aboveBar', color: strengthColor, - shape: 'circle', + shape: 'triangle', text: displayText, size: fx.is_strong_fx ? 1 : 0.6 // 调整尺寸,强分型稍大,普通分型更小 }; - console.log('标记配置:', markerConfig); - // 添加到标记数组 - allFxMarkers.push(markerConfig); + allMainFxMarkers.push(markerConfig); // 创建分型标记对象,包含tooltip信息 const fxMarker = { time: timestamp, tooltip: `
- ${fx.is_bottom ? '底分型' : '顶分型'}: ${fx.fx_type}
+ 主周期${fx.is_bottom ? '底分型' : '顶分型'}(合): ${fx.fx_type}
强度分数: ${fx.fx_strength}分
强度等级: ${fx.fx_strength_level}
是否强分型: ${fx.is_strong_fx ? '是' : '否'}
@@ -3273,87 +3269,62 @@
` }; - // 添加到分型标记数组 - fxMarkers.push(fxMarker); + mainFxMarkers.push(fxMarker); } catch (e) { - console.error('绘制分型类型标签出错:', e); + console.error('绘制主周期KLC分型标签出错:', e); } }); - - // 一次性设置所有分型标记到主数据系列 - if (allFxMarkers.length > 0) { - console.log('一次性设置', allFxMarkers.length, '个分型标记'); - - // 暂存主周期分型标记,等待与小周期合并 - window.mainFxMarkers = allFxMarkers; - } else { - window.mainFxMarkers = []; - } - - // 将分型标记添加到全局markers中以支持tooltip功能 - if (window.fxMarkers) { - window.fxMarkers = [...window.fxMarkers, ...fxMarkers]; - } else { - window.fxMarkers = fxMarkers; - } - - } else { - console.log('绘制分型类型标签 - 已禁用或无数据'); - // 清空分型标记 - window.fxMarkers = []; - window.mainFxMarkers = []; } - // 绘制小周期分型标记 - if ($('#showElementKlcFxType').is(':checked') && currentData.element_klc_fx_info && currentData.element_klc_fx_info.length > 0) { - console.log(`绘制小周期分型标记,共${currentData.element_klc_fx_info.length}条`); + // 处理主周期KLU分型 + if ($('#showKluFxType').is(':checked') && currentData.klu_fx_info && currentData.klu_fx_info.length > 0) { + console.log(`绘制主周期K线未合并分型标签,共${currentData.klu_fx_info.length}条`); - // 收集所有小周期分型标记 - const allElementFxMarkers = []; - const elementFxMarkers = []; // 用于tooltip支持 - - currentData.element_klc_fx_info.forEach(function(fx) { + currentData.klu_fx_info.forEach(function(fx) { try { // 直接使用UTC时间戳(秒) const timestamp = Math.floor(new Date(fx.time).getTime() / 1000); const price = parseFloat(fx.price); if (isNaN(timestamp) || isNaN(price)) { - console.error('小周期分型时间或价格转换错误:', fx.time, fx.price); + console.error('主周期KLU分型时间或价格转换错误:', fx.time, fx.price); return; } - // 小周期分型使用不同的颜色和样式,与主周期区分 - let strengthColor = fx.is_bottom ? '#FF6B6B' : '#4ECDC4'; // 底分型用珊瑚红,顶分型用薄荷绿 + // KLU分型使用不同的颜色区分 + const color = fx.is_bottom ? '#17a2b8' : '#fd7e14'; // 底分型用青色,顶分型用橙色 + + // 根据强度等级调整颜色强度 + let strengthColor = color; if (fx.is_strong_fx) { // 强分型使用更亮的颜色 - strengthColor = fx.is_bottom ? '#FF0000' : '#00CED1'; + strengthColor = fx.is_bottom ? '#20c997' : '#fd7e14'; } - let displayText = `${fx.fx_strength_level} ${fx.fx_strength.toFixed(1)}`; - // 构建小周期分型显示文本 - if (fx.fx_strength < 0.8){ // 调整小周期阈值 - displayText = fx.fx_strength >= 0.6 ? '•' : '' // 0.6以上显示点 + + // 构建显示文本,包含分型类型和强度信息 + let displayText = `${fx.fx_strength.toFixed(1)}`; + if (fx.fx_strength < 1.4) { // 降低阈值,让更多分型显示 + displayText = fx.fx_strength >= 0.8 ? '•' : '' // 0.8以上显示点,0.8以下不显示文本 } - - // 小周期分型标记配置 - 根据分型类型使用正确的箭头形状 + + // 添加标记配置 const markerConfig = { time: timestamp, position: fx.is_bottom ? 'belowBar' : 'aboveBar', color: strengthColor, - shape: 'circle', + // shape: 'triangle', // 使用三角形区分KLU分型 text: displayText, - size: fx.is_strong_fx ? 0.8 : 0.6 // 小周期标记整体更小一些 + size: fx.is_strong_fx ? 0.8 : 0.5 // KLU分型稍小一些 }; - console.log('小周期分型标记配置:', markerConfig); - allElementFxMarkers.push(markerConfig); + allMainFxMarkers.push(markerConfig); - // 创建小周期分型标记对象,包含tooltip信息 - const elementFxMarker = { + // 创建分型标记对象,包含tooltip信息 + const fxMarker = { time: timestamp, tooltip: `
- 小周期${fx.is_bottom ? '底分型' : '顶分型'}: ${fx.fx_type}
+ 主周期${fx.is_bottom ? '底分型' : '顶分型'}(原): ${fx.fx_type}
强度分数: ${fx.fx_strength}分
强度等级: ${fx.fx_strength_level}
是否强分型: ${fx.is_strong_fx ? '是' : '否'}
@@ -3362,13 +3333,162 @@
` }; - // 添加到小周期分型标记数组 - elementFxMarkers.push(elementFxMarker); + mainFxMarkers.push(fxMarker); } catch (e) { - console.error('绘制小周期分型标记出错:', e); + console.error('绘制主周期KLU分型标签出错:', e); } }); + } + + // 暂存主周期分型标记 + window.mainFxMarkers = allMainFxMarkers; + + // 将分型标记添加到全局markers中以支持tooltip功能 + if (window.fxMarkers) { + window.fxMarkers = [...window.fxMarkers, ...mainFxMarkers]; + } else { + window.fxMarkers = mainFxMarkers; + } + + // 检查是否有任何主周期分型数据 + const hasMainFxData = ($('#showKlcFxType').is(':checked') && currentData.klc_fx_info && currentData.klc_fx_info.length > 0) || + ($('#showKluFxType').is(':checked') && currentData.klu_fx_info && currentData.klu_fx_info.length > 0); + + if (!hasMainFxData) { + console.log('绘制主周期分型标记 - 已禁用或无数据'); + // 清空主周期分型标记 + window.mainFxMarkers = []; + window.fxMarkers = []; + } + + // 绘制小周期分型标记 + if (($('#showElementKlcFxType').is(':checked') && currentData.element_klc_fx_info && currentData.element_klc_fx_info.length > 0) || + ($('#showElementKluFxType').is(':checked') && currentData.element_klu_fx_info && currentData.element_klu_fx_info.length > 0)) { + + // 收集所有小周期分型标记 + const allElementFxMarkers = []; + const elementFxMarkers = []; // 用于tooltip支持 + + // 处理小周期KLC分型 + if ($('#showElementKlcFxType').is(':checked') && currentData.element_klc_fx_info && currentData.element_klc_fx_info.length > 0) { + console.log(`绘制小周期K线合并分型标记,共${currentData.element_klc_fx_info.length}条`); + + currentData.element_klc_fx_info.forEach(function(fx) { + try { + // 直接使用UTC时间戳(秒) + const timestamp = Math.floor(new Date(fx.time).getTime() / 1000); + const price = parseFloat(fx.price); + + if (isNaN(timestamp) || isNaN(price)) { + console.error('小周期KLC分型时间或价格转换错误:', fx.time, fx.price); + return; + } + + // 小周期分型使用不同的颜色和样式,与主周期区分 + let strengthColor = fx.is_bottom ? '#FF6B6B' : '#4ECDC4'; // 底分型用珊瑚红,顶分型用薄荷绿 + if (fx.is_strong_fx) { + // 强分型使用更亮的颜色 + strengthColor = fx.is_bottom ? '#FF0000' : '#00CED1'; + } + let displayText = `${fx.fx_strength.toFixed(1)}`; + // 构建小周期分型显示文本 + if (fx.fx_strength < 1.5){ // 调整小周期阈值 + displayText = fx.fx_strength >= 0.6 ? '•' : '' // 0.6以上显示点 + } + + // 小周期分型标记配置 + const markerConfig = { + time: timestamp, + position: fx.is_bottom ? 'belowBar' : 'aboveBar', + color: strengthColor, + shape: 'triangle', + text: displayText, + size: fx.is_strong_fx ? 0.8 : 0.6 // 小周期标记整体更小一些 + }; + + allElementFxMarkers.push(markerConfig); + + // 创建小周期分型标记对象,包含tooltip信息 + const elementFxMarker = { + time: timestamp, + tooltip: `
+ 小周期${fx.is_bottom ? '底分型' : '顶分型'}(合): ${fx.fx_type}
+ 强度分数: ${fx.fx_strength}分
+ 强度等级: ${fx.fx_strength_level}
+ 是否强分型: ${fx.is_strong_fx ? '是' : '否'}
+ 价格: ${price.toFixed(4)}
+ 时间: ${fx.time} +
` + }; + + elementFxMarkers.push(elementFxMarker); + + } catch (e) { + console.error('绘制小周期KLC分型标记出错:', e); + } + }); + } + + // 处理小周期KLU分型 + if ($('#showElementKluFxType').is(':checked') && currentData.element_klu_fx_info && currentData.element_klu_fx_info.length > 0) { + console.log(`绘制小周期K线未合并分型标记,共${currentData.element_klu_fx_info.length}条`); + + currentData.element_klu_fx_info.forEach(function(fx) { + try { + // 直接使用UTC时间戳(秒) + const timestamp = Math.floor(new Date(fx.time).getTime() / 1000); + const price = parseFloat(fx.price); + + if (isNaN(timestamp) || isNaN(price)) { + console.error('小周期KLU分型时间或价格转换错误:', fx.time, fx.price); + return; + } + + // 小周期KLU分型使用不同的颜色 + let strengthColor = fx.is_bottom ? '#9A8C98' : '#F2CC8F'; // 底分型用灰紫色,顶分型用浅黄色 + if (fx.is_strong_fx) { + // 强分型使用更亮的颜色 + strengthColor = fx.is_bottom ? '#6C5B7B' : '#F9844A'; + } + let displayText = `${fx.fx_strength.toFixed(1)}`; + // 构建小周期分型显示文本 + if (fx.fx_strength < 1.4){ // 调整小周期阈值 + displayText = fx.fx_strength >= 0.6 ? '•' : '' // 0.6以上显示点 + } + + // 小周期KLU分型标记配置 + const markerConfig = { + time: timestamp, + position: fx.is_bottom ? 'belowBar' : 'aboveBar', + color: strengthColor, + // shape: 'triangle', // 使用三角形区分KLU分型 + text: displayText, + size: fx.is_strong_fx ? 0.7 : 0.5 // 小周期KLU标记更小一些 + }; + + allElementFxMarkers.push(markerConfig); + + // 创建小周期分型标记对象,包含tooltip信息 + const elementFxMarker = { + time: timestamp, + tooltip: `
+ 小周期${fx.is_bottom ? '底分型' : '顶分型'}(原): ${fx.fx_type}
+ 强度分数: ${fx.fx_strength}分
+ 强度等级: ${fx.fx_strength_level}
+ 是否强分型: ${fx.is_strong_fx ? '是' : '否'}
+ 价格: ${price.toFixed(4)}
+ 时间: ${fx.time} +
` + }; + + elementFxMarkers.push(elementFxMarker); + + } catch (e) { + console.error('绘制小周期KLU分型标记出错:', e); + } + }); + } // 将小周期分型标记添加到全局markers中以支持tooltip功能 if (window.fxMarkers) { @@ -3411,6 +3531,14 @@ } else { console.log('未找到主数据系列,无法设置标记'); } + } else { + console.log('没有分型标记需要显示,清空图表标记'); + // 清空图表上的所有标记 + if (showOriginalKline && tvWidget.series.candleSeries) { + tvWidget.series.candleSeries.setMarkers([]); + } else if (!showOriginalKline && tvWidget.series.lineSeries) { + tvWidget.series.lineSeries.setMarkers([]); + } } } @@ -5084,6 +5212,16 @@ refreshChart(currentData); }); + // 绑定KLU分型显示开关 + $('#showKluFxType').change(function() { + refreshChartOnly(); + }); + + // 绑定小周期KLU分型显示开关 + $('#showElementKluFxType').change(function() { + refreshChart(currentData); + }); + // 绑定买卖点显示开关 $('#showTradePoints').change(function() { refreshChart(currentData); @@ -5113,7 +5251,9 @@ 'showVolume': false, 'showMacd': true, 'showKlcFxType': $('#showKlcFxType').is(':checked'), + 'showKluFxType': $('#showKluFxType').is(':checked'), 'showElementKlcFxType': $('#showElementKlcFxType').is(':checked'), + 'showElementKluFxType': $('#showElementKluFxType').is(':checked'), 'showTradePoints': $('#showTradePoints').is(':checked'), 'showMainBollinger': $('#showMainBollinger').is(':checked'), 'showElementBollinger': $('#showElementBollinger').is(':checked'),