绘制股票K线图并过滤非交易时间

绘制股票K线图并过滤非交易时间

在进行股票数据分析或者交易策略制定的过程中,绘制K线图是非常重要的一步。而使用plotly库可以方便地绘制交互式K线图,并且结合pandas中的DataFrame可以轻松实现数据的预处理和过滤,以满足不同需求。

本文将介绍如何使用plotly和pandas绘制股票K线图,并且在此基础上对非交易时间进行过滤,保证绘制的K线图准确反映市场实际情况。

首先需要安装必要的库:

!pip install plotly pandas pandas_market_calendars

接着,加载所需的库:

import pandas as pd
import plotly.graph_objects as go
from pandas_market_calendars import get_calendar

我们这里使用了pandas_market_calendar

Python量化交易——股票择时到底能否赚钱?技术指标大比拼——TRIX指标 简单介绍了TRIX指标的原理和应用方法,使用标准化测试模型在433支股票上测试了TRIX指标的择时效果,与其他33种技术指标进行了横向对比 阅读详情

相关推荐

K线图实战指南:从单根K线到组合形态的深度解读与交易应用

K线图是金融市场技术分析的基础工具,它通过记录特定时间段内的开盘价、最高价、最低价和收盘价,直观呈现多空双方的力量博弈。其核心原理在于解读价格行为背后的市场情绪与供需关系,而非机械记忆形态。掌握K线分析技术,对于识别趋势转折、确认买卖信号具有重要价值,广泛应用于股票、期货、外汇及数字货币等交易场景。本文聚焦于K线图的实战解读,系统拆解了其实体与影线的含义,并深入剖析了如吞噬形态、孕线等关键的双K线与三K线组合,旨在帮助交易者构建基于价格行为的独立分析框架,提升盘感与决策能力。

417

保姆级教程:用Python的mplfinance库,5分钟搞定专业级股票K线图(附完整代码)

本文提供了一份保姆级教程,教你如何使用Python的mplfinance库在5分钟内绘制专业级股票K线图。从环境准备、数据获取到基础K线图绘制和高级定制技巧,教程详细介绍了如何利用mplfinance简化金融可视化流程,并附有完整代码示例,适合量化金融和数据分析爱好者快速上手。

weixin_30861797的博客 359

股票数据可视化与推荐系统实战:从K线到智能选股

在金融数据分析中,数据可视化与推荐系统的融合是提升投资决策效率的关键路径。可视化技术通过K线图、均线及技术指标叠加,将海量行情转化为直观的交互图表,有效缓解信息过载;推荐系统则利用协同过滤与K近邻算法,基于历史行为和技术形态生成可解释的候选标的。这一组合在股票筛选、策略验证等场景有广泛应用。基于Python技术栈,该方案覆盖数据获取、特征工程、模型融合及系统联调等核心环节,可作为课程设计或工程实践的完整参考。

weixin_29046611的博客 274

【量化策略系列基本篇之一】股票动量策略(汇总篇)

1. 前言 1.1 策略简介 “动量”策略中所谓的“动量”,是指所描述对象具有的一种倾向于保持原有属性或特征的一种性质,可以理解为一种“惰性”。在A股票市场中,股票价格的动量是普遍存在的, 1.2 术语简述 (1)简单移动平均线(MA) (2)指数加权移动平均线(EMA) 1.3 记号使用 Γ(z)=∫0∞tz−1e−tdt . \Gamma(z) = \int_0^\infty t^{z-1}e...

Mikey_Sun的博客 1万+

K线图技术指标实战解析:从公式到交易信号

本文深入解析K线图技术指标的实战应用,涵盖移动平均线(MA)、相对强弱指数(RSI)、MACD和布林带等核心工具。通过具体案例展示如何识别金叉死叉、RSI超买超卖、MACD水上金叉等关键交易信号,并分享过滤假信号的实用技巧,帮助投资者提升技术分析能力与交易决策水平。

weixin_27061475的博客 196

金融小白必看!3分钟搞懂K线图、美国线和均线图的区别与使用场景

本文为金融新手清晰解析了K线图、美国线和均线图的核心差异与使用场景。K线图通过开盘、收盘、最高、最低四价展现市场情绪;美国线聚焦最高、最低、收盘三价,趋势识别更直观;均线图则通过移动平均平滑价格,揭示趋势方向。掌握三者区别,是进行技术分析和制定交易策略的基础。

r2s3t4的博客 237

VC++股票图表分析系统:从零构建高性能K线图与核心技术实现

在桌面应用开发领域,图形渲染与实时数据处理是核心技术挑战。其原理在于通过底层图形接口(如GDI/GDI+或Direct2D)直接操作像素,结合高效的数据结构与坐标变换算法,将时间序列数据转换为可视化图表。这种技术方案的价值在于提供了极致的性能控制力与深度定制能力,尤其适用于对响应速度和渲染精度要求苛刻的金融分析、工业监控等场景。本文聚焦于使用VC++构建一套完整的股票图表分析系统,深入剖析了从数据模型设计、技术指标计算到交互式绘图的全流程实现。其中,针对“vc++ 崩溃生成调试文件”和“vc++ 编程中如何

weixin_34267123的博客 829

第 9 讲 折线图高级应用与优化:从数据趋势到视觉叙事的进阶指南

折线图高级应用与优化指南:通过多维度对比、时间序列预测和动态可视化三大场景,折线图可以升级为专业分析工具。视觉优化方面需注重线条配色(主线条加粗高亮)、坐标轴设计(网格线虚化)和智能注释(关键点说明)。高级功能包括数据平滑处理、双Y轴多量纲展示和交互式动态图表。实践中需规避过度平滑、配色混乱等陷阱,根据不同场景选择折线图、柱状图或面积图。典型案例如股票分析图,通过主图+子图联动,实现量价关系的多维分析。合理运用这些技巧,折线图能成为强大的数据叙事载体。

weixin_44975687的博客 1198

使用Plotly库以及Pandas库,我们可以通过DataFrame数据绘制股票的K线图,并在此过程中过滤非交易时间

这里假设我们已经有一个包含股票交易数据的DataFrame,其中包含以下列:‘Date’(日期),‘Open’(开盘价),‘High’(最高价),‘Low’(最低价),‘Close’(收盘价)。使用Plotly和Pandas库,你可以进一步定制基于DataFrame数据绘制股票K线图并过滤非交易时间的Python代码。使用Plotly库以及Pandas库,我们可以通过DataFrame数据绘制股票的K线图,并在此过程中过滤非交易时间。通过以上代码,我们可以绘制出仅包含交易时间的股票K线图。

PixelLogic的博客 388

plotly基于dataframe数据绘制股票K线图并过滤非交易时间

plotly基于dataframe数据绘制股票K线图并过滤非交易时间 #ohlc过滤非交易时间; import plotly as py # 导入plotly库并命名为py import plotly.graph_objs as go import pandas as pd fig = go.Figure() # -------------pre def pyplt = py.offline.plot df = pd.read_csv(r'dat/appl.csv', index_.

data+scenario+science+insight 1474

分析股票 K 线图与检测可疑的银行转账

上一篇我们学习了如何利用排名窗口函数实现产品的分类排名,以及利用取值窗口函数进行销量的环比/同比分析。 本篇我们介绍 SQL:2016 标准新增的一个功能:行模式识别(Row Pattern Recognition)。 行模式识别 行模式识别用于查找多行数据之间的规律。行模式识别通过指定一个模式(正则表达式),找到匹配该模式的一组数据行;并且可以对这些匹配的一组数据进行过滤、分组和聚合操作。行模式...

Tony.Dong的专栏 854

pandas_market_calendars-1.4.0.tar.gz

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

pandas_market_calendars-1.3.2.tar.gz

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

Python库 | pandas_market_calendars-0.19-py2.py3-none-any.whl

资源分类:Python库 所属语言:Python 资源全名:pandas_market_calendars-0.19-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.youkuaiyun.com/article/details/101784059

Python库 | pandas_market_calendars-0.8-py2.py3-none-any.whl

python库,解压后可用。 资源全名:pandas_market_calendars-0.8-py2.py3-none-any.whl

Cursor概述及环境配置

Cursor 是一款基于 AI 的代码编辑器,支持 VS Code 配置迁移和 Java 开发环境配置。主要功能分为 Cursor Settings(AI 相关设置)和 Editor Settings(基础编辑器设置)。用户可通过一键导入或手动方式迁移 VS Code 配置,配置包括主题、扩展和快捷键等。对于 Java 开发,需配置 JDK 和 Maven 路径,并安装 Java 扩展插件以获得完整开发体验,如代码补全、调试和 Maven 项目管理。此外,Cursor 支持汉化配置,用户可安装中文语言包切换

Knight 3557

车规级非易失存储选型指南:从AEC-Q100到ISO 26262的可靠性设计

非易失存储器是电子系统中负责长期保存关键数据与代码的核心组件,其可靠性直接决定了系统的长期稳定运行能力。在汽车电子领域,这一要求被提升到了极致,必须满足严苛的车规级标准。从原理上看,存储器的数据保持能力、擦写寿命等关键参数在高温、振动等恶劣环境下会急剧衰减,因此需要专门的设计与验证。其技术价值在于保障车辆全生命周期的功能安全与数据完整性,避免因存储失效导致的安全隐患或频繁维护。应用场景涵盖从发动机控制单元、自动驾驶域控制器到智能座舱的各类电子控制单元。本文聚焦于车规级非易失存储的选型,深入解析AEC-Q10

weixin_30938149的博客 458

MacOS M芯片部署ComfyUI:从环境排雷到插件生态一站式指南

本文为MacOS M系列芯片用户提供了一份详尽的ComfyUI部署指南。文章深入剖析了因架构差异导致的常见安装报错根源,并给出了基于MPS后端的正确PyTorch安装命令。从创建纯净Python虚拟环境、分步安装依赖,到验证GPU加速,手把手指导完成部署。同时,还推荐了包括管理器、汉化在内的必备插件,以完善使用生态,帮助用户一站式解决从环境搭建到效率提升的所有问题。

weixin_29261711的博客 994

Conda安装cuda指定版本遇到的一个大坑,导致pytorch无法使用cuda且nvcc -V显示错误的cuda版本

24年3月份的时候用conda install nvidia/label/cuda-11.x.x::cuda还挺正常的,能直接安装11.x.x版本的cuda,我还安利给同学用。但现在5月份不知道为什么这些命令都只会安装最新的cuda12.4,不知道是我哪里设置有问题还是官网的安装目录里的环境配置换了?我在三台不同的服务器上都尝试了安装不同版本的cuda,但最后安装下来的都是12.4版本。

weixin_43933424的博客 8893

保姆级教程:用SAP PS管理电梯/大型设备项目(ETO/ATO模式)从成本收集到开票结算

本文详细解析了SAP PS模块在ETO/ATO项目中的全流程成本管理实践,特别针对电梯/大型设备制造行业。从成本收集到开票结算,通过WBS元素、网络活动等核心架构设计,结合F-02、CJ20N等事务代码,实现设计、生产、物流及现场服务各阶段的精准成本控制,助力企业提升项目利润率与财务效率。

weixin_30444105的博客 458

MIPI CPHY学习笔记01:TX物理层一致性测试项解析(LP信令模式)

在手机、平板、智能手表等移动设备中,MIPI C-PHY是负责图像、数据传输的核心接口,它就像设备内部的“高速数据线”,而低功耗(LP)信令模式,是这条“数据线”的“省电模式”,专门用于设备待机、低负载等场景,既要保证信号稳定,又要最大限度降低功耗。物理层一致性测试,就是给这个“省电模式”做的“全面体检”,确保不同厂商的设备能兼容互通。今天,我们就聚焦MIPI C-PHY TX(发射端)的Group 1 LP信令测试,用通俗的语言拆解8个核心测试项,看懂“省电信号”的合格标准。

一只豌豆象的博客 304

海康威视iVMS-8700综合安防管理平台 文件读取漏洞复现

HIKVISION iVMS 综合安防管理平台download接口处存在任意文件读取漏洞,攻击者通过构造token绕过身份认证,读取服务器中的目录信息与敏感文件。使系统处于极不安全的状态。

0xSec 3308

Unreal从入门到精通之如何绘制用于VR的3DUI交互的手柄射线

之前我写过一篇文章《Unreal5从入门到精通之如何在VR中使用3DUI》,其中讲到使用WidgetComponent和3DUI进行交互。然而,这种方法存在一个问题:为了让射线可视化,我们需要勾选“调试/显示调试”,这样才能在手柄上看到代表其指向的一条红色射线。但最关键的问题是,这个显示调试信息的功能只属于Debug调试模式,也就是说,一旦将项目正式打包发布,这条射线辅助线就没有了。如下图所示:我就觉得Unreal官方真的是有点过分了,这不应该是最基本的功能么?难道我们VR要在Debug模式下发布?

TxNet 1612

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: 使用Python访问Dataframe中的单个或多个数据列
下一篇: RMSE评估指标Python实现
普通网友
博客等级 码龄4年 1009粉丝 1545原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值