当前位置: 首页 > article >正文

个人量化成功之路-----获取实时OHLC的数据

昨天有一个客户说自己之前交易主要看OHLC线,想问量化软件如何实现获取实时一分钟OHLC的数据并生产图像。

有朋友可能不熟悉OHLC这个名字哈,其实跟K线/蜡烛图的数据是一样的,和蜡烛图的区别只是表现形式的不一致。

O为open、开盘价,H为high、最高价,L为low、最低价,C为close、收盘价。

在外汇中,OHLC为开盘汇率、最高汇率、最低汇率、收盘汇率。

那么在量化软件中如何获取实时一分钟数据呢?上代码

def connact(self):
        '''
        链接qmt
        '''
        try:
            self.trader.connect()
            print(self.trader.balance())
            print(self.trader.position())
            return True
        except Exception as e:
            print("运行错误:",e)
            print('{}连接失败'.format('qmt'))
            return False
    def trader_func(self):
        '''
        交易函数
        '''
        #检查是否是交易时间
        if self.trader.check_is_trader_date_1(trader_time=4,start_date=9,end_date=14,start_mi=0,jhjj='否'):
            #读取订阅数据
            df=self.data.get_market_data_ex(stock_list=self.stock_list,period='1m',
                                            start_time='20240101',end_time='20500101',count=-1)
            #解析数据
            for stock in self.stock_list:
                data=pd.DataFrame()
                hist=df[stock]
                data['date']=hist.index
                data['close']=hist['close'].tolist()
                data['short_line']=data['close'].rolling(self.short_line).mean()
                data['long_line']=data['close'].rolling(self.long_line).mean()

我们给客户的模拟端和实盘软件,最小时间间隔的实时行情是3秒的数据,可以获取每三秒的OHLC价格指标,更长的时间级别也可以,一分钟、十五分钟、一小时都行

我简单写了一个例子,获取实时的一分钟价格数据,如果你仔细看“#解析数据” 可以发现,OHLC4个价格从订阅数据的DataFrame中获取

下面图片,有很多数据接口,可以1对1帮助您解决代码、软件或者策略问题。

接下来,我们也可以把OHLC画在图里,

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = [18,6]
#设置中文
sns.set_style('darkgrid',{'font.sans-serif':['SimHei','Arial']})

df_stock = pd.read_excel('./data/stockexample.xlsx')
#将时间作为行索引
df_stock.set_index('日期',inplace=True)

#OHLC
new_df = df_stock.loc[:,['开盘','最高','最低','收盘']]

sns.lineplot(data=new_df.iloc[:150])

看一下结果,用不同颜色的线表示OHLC

同样,我们也可以用相同的数据画K线图

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

#k线图时间单位必须整数
import matplotlib.dates as dates
import mpl_finance as mf

plt.rcParams['figure.figsize'] = [18,6]
#设置中文
sns.set_style('darkgrid',{'font.sans-serif':['SimHei','Arial']})

df_stock = pd.read_excel('./data/stockexample.xlsx')
#将时间作为行索引
df_stock.set_index('日期',inplace=True)

#OHLC
new_df = df_stock.loc[:,['开盘','最高','最低','收盘']]
new_df = new_df.iloc[:100]

#转换时间为整数
#默认的df series ndarray list tuple 只认识zip()生成器zip(整数时间 ,O,H,L,C)
zip_data = zip(dates.date2num(new_df.index.to_pydatetime()),new_df.开盘,new_df.最高,new_df.最低,new_df.收盘)


#K线图和3D图有相同的特质 都没有尺寸对象
ax = plt.gca()

plt.title('stockexampleOHLC-K线图')

mf.candlestick_ohlc(ax,zip_data,colorup='r',colordown='g',width=5)

#必须把时间调整回来
ax.xaxis_date()

#把X轴倾斜
plt.xticks(rotation=45)


http://www.kler.cn/news/318057.html

相关文章:

  • 设计模式六大原则:面向对象设计的核心
  • 不靠学历,不拼年资,怎么才能月入2W?
  • 电商安全新挑战:筑起数字防御长城,守护业务与数据安全
  • Java反射机制入门:解锁运行时类信息的秘密
  • 新闻文本分类识别系统Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+TensorFlow+Django网页界面
  • 面经3——中和农信
  • Redisson分布式锁分析,可重入、可续锁(看门狗)
  • html知识点框架
  • 成为谷歌开发者专家(GDE)的经历
  • LTE协议栈学习
  • 分布式计算技术是什么?在数据集成值得作用?
  • 记某学校小程序漏洞挖掘
  • Array.prototype.slice.call()
  • ARPGDemo第一阶段
  • 构建安全的Linux计算环境:最佳实践与策略
  • 第17周 第3章Servlet开发应用实践 --- 配置默认首页与通配符映射
  • 潮玩宇宙大逃杀宝石游戏搭建开发
  • 在Java中,有没有其他方式可以替代List<Map<String,Object>>来存储和处理数据?
  • Linux快速安装ClickHouse
  • 【leetcode练习·二叉树】用「遍历」思维解题 I
  • Flutter为Android添加签名并打包
  • 数值计算 --- 平方根倒数快速算法(上)
  • 虚拟机与物理机的文件共享
  • 【LLM学习之路】9月23日24日 第十、十一天 Attention代码解读
  • 将硬盘的GPT 转化为MBR格式
  • 如何完成等保的建设整改
  • Apache Doris 实践
  • MySQL的数据库课程设计的基本步骤和考虑因素
  • 大小端字节序 和 内存高低地址顺序
  • 3. 函数