交易所系统开发成熟技术案例及分析丨交易所开发源码版

本文涉及的产品
图片翻译,图片翻译 100张
语种识别,语种识别 100万字符
文档翻译,文档翻译 1千页
简介:  区块链平台这些底层技术,又形成包括区块链钱包、区块链浏览器、节点竞选、矿池、开发组件、开发模块、技术社区及项目社群等一系列的生态系统,这些生态系统的完善程度直接决定着区块链底层平台的使用效率和效果。

  区块链平台这些底层技术,又形成包括区块链钱包、区块链浏览器、节点竞选、矿池、开发组件、开发模块、技术社区及项目社群等一系列的生态系统,这些生态系统的完善程度直接决定着区块链底层平台的使用效率和效果。

  量化交易系统有很多种,包括跨平台搬砖、趋势交易、对冲交易等。

  1、跨平台搬砖是指,当不同目标平台价差达到一定金额,在价高的平台卖出,在价低的平台买入。

  2、趋势交易会更加复杂一些,它根据趋势的指标来发出卖出和买入的信号。

  3、对冲是指同时进行两笔与行情相关、买卖方向相反、数量相当、盈亏相抵的交易,以达到对冲风险的效果。量化交易的特点量化交易是一个比较新的概念,它最鲜明的特征就是运用模型。

  import requests

  from time import sleep

  from datetime import datetime,time

  from dateutil import parser

  #__init__,构造,初始化,实例化

  class AstockTrading(object):

  def __init__(self,strategy_name):

  self._strategy_name=strategy_name

  self._Dt=[]#交易时间

  self._Open=[]#开盘价

  self._High=[]#最高价

  self._Low=[]#最低价

  self._Close=[]#最新价

  self._Volume=[]

  self._tick=[]#数据

  self._last_bar_start_minute=None#最后一次更新bar的时间

  self._isNewBar=False#是否有新bar

  self._ma20=None

  #当前订单,dict,字典

  self._current_orders={}

  #历史订单

  self._history_orders={}

  self._order_number=0

  def get_tick(self):

  headers={'Referer':"https://finance.sina.com.cn"}

  page=requests.get("https://hq.sinajs.cn/list=sh600519",headers=headers)

  stock_info=page.text

  mt_info=stock_info.replace(""","").split("=")[1].split(",")

  #最新价

  last=float(mt_info[1])

  trade_datetime=mt_info[30]+''+mt_info[31]

  self._tick=(trade_datetime,last)

  def get_history_data_from_local_machine(self):

  #tushare数据来源

  #self.Open=[1,2,3]

  #self.High=[2,3,4]

  pass

  #how save and import history data?

  #策略
  def bar_generator(self):

  #assume we have history data already

  #1、update bars,calculate 5 minutes ma20,not daily data

  #2、compare last and ma20->buy or sell or pass

  #assume we have history data,Open,High,Low,Close,Dt

  #这里可以是5minutes、10minutes、15minutes、20minutes、30minutes

  if self._tick[0].minute%5==0 and self._tick[0].minute!=self._last_bar_start_minute:

  self._last_bar_start_minute=self._tick[0].minute

  self._Open.insert(0,self._tick[1])

  self._High.insert(0,self._tick[1])

  self._Low.insert(0,self._tick[1])

  self._Close.insert(0,self._tick[1])

  self._Dt.insert(0,self._tick[0])

  self._isNewBar=True

  else:

  #update current bar

  self._High[0]=max(self._High[0],self._tick[1])

  self._Low[0]=max(self._Low[0],self._tick[1])

  self._Close[0]=self._tick[1]

  self._Dt[0]=self._tick[0]

  self._isNewBar=False

  def _buy(self,price,volume):

  #create an order

  self._order_number+=1

  key="order"+str(self._order_number)

  self._current_orders[key]={

  "open_datetime":self._Dt[0],

  "open_price":price,

  "volume":volume#股数

  }

  pass

  def _sell(self,key,price):

  self._current_orderskey=price

  self._current_orderskey=self._Dt[0]

  #move order from current orders to history orders

  self._history_orders[key]=self._current_orders.pop(key)

  def strategy(self):

  #last<0.95ma20,long position(仓位),last>ma201.05,sell

  if self._isNewBar:

  sum_=0

  for item in self._Close[1:21]:

  sum_=sum_+item

  self._ma20=sum_/20

  if 0==len(self._current_orders):

  if self._Close[0]<0.95*self._ma20:

  #100000/44.28=2258 44.28是当前价格,10万指的你拥有的钱

  #2258->2200 shares

  volume=int(100000/self._Close[0]/100)*100

  self._buy(self._Close[0]+0.01,volume)#这里的0.01是为了防止挂单,我们需要即可买入

  elif 1==len(self._current_orders):

  if self._Close[0]>self._ma20*1.05:

  key=self._current_orders.keys()[0]

  self._sell(key,self._Close[0]-0.01)

  else:#len()=2

  raise ValueError("we have more then 1 current orders")

  #Close[0]in between 0.95ma20 and 1.05ma20,do nothing

  ma=AstockTrading('600036')#类实例化

  ma.get_history_data_from_local_machine()

  #交易时间是9:30-11:30,13:00-15:00

  while time(9,26)<datetime.now().time()<time(11,32)

  or time(13)<datetime.now().time()<time(15,2):

  ma.get_tick()

  ma.bar_generator()

  ma.strategy()

  #trade_time=parser.parse(ma._tick[0]).time()

  #sleep(3)

目录
打赏
0
0
0
0
36
分享
相关文章
SQL vs. NoSQL:如何根据大数据需求选择合适数据库
【4月更文挑战第8天】本文对比分析了SQL与NoSQL数据库在大数据项目中的应用。SQL数据库适合结构化数据、强一致性和复杂事务处理,如金融系统,而NoSQL则适用于半结构化和非结构化数据、高并发及大数据场景,如社交网络。选择时应考虑业务需求、技术栈、团队经验和成本效益,以找到最佳解决方案。随着技术发展,NewSQL和Multi-model数据库也提供了更多选择。
685 0
电商平台手机销售数据采集与分析
随着科技的进步,尤其是手机的普及,国民生活变得更加便捷。现今,手机销售已从传统的实体店模式转向电商平台,这一转变加剧了市场竞争,给手机厂商带来了新的挑战。为了应对挑战,电商平台越来越重视手机销售情况与用户体验,利用数据分析成为了解市场趋势的关键手段。本章节聚焦于某电商平台的手机销售及售后数据收集,通过深入分析商品销售状况与用户反馈,旨在探索有效的营销策略,助力电商平台与手机行业的共同进步。
307 1
数据中台驱动下的工业软件集成
当前大中型离散制造型企业信息化建设过程中,普遍存在数据交互复杂度高、基础数据语义多样化,以及升级维护难度大等痛点。本文引入阿里云数据总线、服务总线以及数字工厂等产品,探讨一种基于工业数据中台的工业软件集成解决方案。
3299 0
数据中台驱动下的工业软件集成
VUE element-ui下拉菜单el-select获取label值或value的值
VUE element-ui下拉菜单el-select获取label值或value的值
2284 0
VUE element-ui下拉菜单el-select获取label值或value的值
有哪些“极简风”页面设计的办公协同工具?再不怕眼花缭乱啦!
在快节奏的现代职场中,极简风页面设计的协同工具成为提升工作效率的重要手段。本文介绍了10款极简风设计的办公协同工具,包括板栗看板、Notion、Trello、Slack、Asana、Figma、Invision、Moqups、Coda和Dropbox Paper。这些工具不仅界面简洁直观,功能强大,还能帮助团队高效协作,让工作更加井然有序。
184 43
有哪些“极简风”页面设计的办公协同工具?再不怕眼花缭乱啦!
|
11月前
单模、多模能混合使用吗?这篇给您讲明白!
单模、多模能混合使用吗?这篇给您讲明白!
244 5
Serverless 应用引擎操作报错合集之删除通配符域名时遇到了报错,该如何处理
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
Entity Framework Core 实现多数据库支持超厉害!配置连接、迁移与事务,开启多元数据库之旅!
【8月更文挑战第31天】在现代软件开发中,为了满足不同业务需求及环境要求,常需支持多个数据库系统。Entity Framework Core(EF Core)作为一款强大的对象关系映射(ORM)框架,通过数据库提供程序与多种数据库如SQL Server、MySQL、PostgreSQL、Oracle等交互。开发者可通过安装相应NuGet包并配置`DbContextOptionsBuilder`来指定不同数据库连接,从而实现多数据库支持。
1063 0
|
12月前
|
idea新建spring boot 项目右键无package及java类的选项
idea新建spring boot 项目右键无package及java类的选项
453 5
基于SpringBoot+Vue信息化在线教学平台的设计与实现(源码+部署说明+演示视频+源码介绍+lw)(1)
基于SpringBoot+Vue信息化在线教学平台的设计与实现(源码+部署说明+演示视频+源码介绍+lw)
116 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问