交易所源码案例丨交易所APP开发丨交易所系统开发(海外版)

简介:  区块链技术概括起来是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术。其实,区块链技术并不是一种单一的、全新的技术,而是多种现有技术整合的结果,这些技术与数据库巧妙地组合在一起,形成了一种新的数据记录、传递、存储与呈现的方式

  区块链技术概括起来是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术。其实,区块链技术并不是一种单一的、全新的技术,而是多种现有技术整合的结果,这些技术与数据库巧妙地组合在一起,形成了一种新的数据记录、传递、存储与呈现的方式

  什么是量化交易?确切地说,量化交易属于人工智能的一个应用分支,它利用计算机的强大运算能力,用数学模型来模仿人的思维作出决策,通过数据建模、统计学分析、程序设计等工具

  区块链技术是一种新型互联网技术,它是一种公开的、分布式的账簿,可以有效核查和永久记录各方之间的交易。具体来说,它是由网络上一个个储存区块组成的相互连接的链条,在每个区块中,储存着一定时间内网络链条中所有交流信息的数据。由于数据在每个区块上都有实时记录,也就使得区块链具备去中心化和不可篡改的特点。

  1.移动平均

  def MA(df,n):

  MA=Series(rolling_mean(df['Close'],n),name='MA_'+str(n))

  df=df.join(MA)

  return df

  2.指数移动平均

  def EMA(df,n):

  EMA=Series(ewma(df['Close'],span=n,min_periods=n-1),name='EMA_'+str(n))

  df=df.join(EMA)

  return df

  3.动量

  def MOM(df,n):

  M=Series(df['Close'].diff(n),name='Momentum_'+str(n))

  df=df.join(M)

  return df

  4.变化率

  def ROC(df,n):

  M=df['Close'].diff(n-1)

  N=df['Close'].shift(n-1)

  ROC=Series(M/N,name='ROC_'+str(n))

  df=df.join(ROC)

  return df

  5.均幅指标

  def ATR(df,n):

  i=0

  TR_l=[0]

  while i<df.index[-1]:

  TR=max(df.get_value(i+1,'High'),df.get_value(i,'Close'))-min(df.get_value(i+1,'Low'),df.get_value(i,'Close'))

  TR_l.append(TR)

  i=i+1

  TR_s=Series(TR_l)

  ATR=Series(ewma(TR_s,span=n,min_periods=n),name='ATR_'+str(n))

  df=df.join(ATR)

  return df

  6.布林线

  def BBANDS(df,n):

  MA=Series(rolling_mean(df['Close'],n))

  MSD=Series(rolling_std(df['Close'],n))

  b1=4*MSD/MA

  B1=Series(b1,name='BollingerB_'+str(n))

  df=df.join(B1)

  b2=(df['Close']-MA+2MSD)/(4MSD)

  B2=Series(b2,name='Bollinger%b_'+str(n))

  df=df.join(B2)

  return df

  7.转折、支撑、阻力点

  def PPSR(df):

  PP=Series((df['High']+df['Low']+df['Close'])/3)

  R1=Series(2*PP-df['Low'])

  S1=Series(2*PP-df['High'])

  R2=Series(PP+df['High']-df['Low'])

  S2=Series(PP-df['High']+df['Low'])

  R3=Series(df['High']+2*(PP-df['Low']))

  S3=Series(df['Low']-2*(df['High']-PP))

  psr={'PP':PP,'R1':R1,'S1':S1,'R2':R2,'S2':S2,'R3':R3,'S3':S3}

  PSR=DataFrame(psr)

  df=df.join(PSR)

  return df

  8.随机振荡器(%K线)

  def STOK(df):

  SOk=Series((df['Close']-df['Low'])/(df['High']-df['Low']),name='SO%k')

  df=df.join(SOk)

  return df

  9.随机振荡器(%D线)

  def STO(df,n):

  SOk=Series((df['Close']-df['Low'])/(df['High']-df['Low']),name='SO%k')

  SOd=Series(ewma(SOk,span=n,min_periods=n-1),name='SO%d_'+str(n))

  df=df.join(SOd)

  return df

  10.三重指数平滑平均线

  def TRIX(df,n):

  EX1=ewma(df['Close'],span=n,min_periods=n-1)

  EX2=ewma(EX1,span=n,min_periods=n-1)

  EX3=ewma(EX2,span=n,min_periods=n-1)

  i=0

  ROC_l=[0]

  while i+1<=df.index[-1]:

  ROC=(EX3[i+1]-EX3<i>)/EX3<i>

  ROC_l.append(ROC)

  i=i+1

  Trix=Series(ROC_l,name='Trix_'+str(n))

  df=df.join(Trix)

  return df

  11.平均定向运动指数

  def ADX(df,n,n_ADX):

  i=0

  UpI=[]

  DoI=[]

  while i+1<=df.index[-1]:

  UpMove=df.get_value(i+1,'High')-df.get_value(i,'High')

  DoMove=df.get_value(i,'Low')-df.get_value(i+1,'Low')

  if UpMove>DoMove and UpMove>0:

  UpD=UpMove

  else:UpD=0

  UpI.append(UpD)

  if DoMove>UpMove and DoMove>0:

  DoD=DoMove

  else:DoD=0

  DoI.append(DoD)

  i=i+1

  i=0

  TR_l=[0]

  while i<df.index[-1]:

  TR=max(df.get_value(i+1,'High'),df.get_value(i,'Close'))-min(df.get_value(i+1,'Low'),df.get_value(i,'Close'))

  TR_l.append(TR)

  i=i+1

  TR_s=Series(TR_l)

  ATR=Series(ewma(TR_s,span=n,min_periods=n))

  UpI=Series(UpI)

  DoI=Series(DoI)

  PosDI=Series(ewma(UpI,span=n,min_periods=n-1)/ATR)

  NegDI=Series(ewma(DoI,span=n,min_periods=n-1)/ATR)

  ADX=Series(ewma(abs(PosDI-NegDI)/(PosDI+NegDI),span=n_ADX,min_periods=n_ADX-1),name='ADX_'+str(n)+'_'+str(n_ADX))

  df=df.join(ADX)

  return df

  12.MACD

  def MACD(df,n_fast,n_slow):

  EMAfast=Series(ewma(df['Close'],span=n_fast,min_periods=n_slow-1))

  EMAslow=Series(ewma(df['Close'],span=n_slow,min_periods=n_slow-1))

  MACD=Series(EMAfast-EMAslow,name='MACD_'+str(n_fast)+'_'+str(n_slow))

  MACDsign=Series(ewma(MACD,span=9,min_periods=8),name='MACDsign_'+str(n_fast)+'_'+str(n_slow))

  MACDdiff=Series(MACD-MACDsign,name='MACDdiff_'+str(n_fast)+'_'+str(n_slow))

  df=df.join(MACD)

  df=df.join(MACDsign)

  df=df.join(MACDdiff)

  return df

  13.梅斯线(高低价趋势反转)

  def MassI(df):

  Range=df['High']-df['Low']

  EX1=ewma(Range,span=9,min_periods=8)

  EX2=ewma(EX1,span=9,min_periods=8)

  Mass=EX1/EX2

  MassI=Series(rolling_sum(Mass,25),name='Mass Index')

  df=df.join(MassI)

  return df

  14.涡旋指标

  def Vortex(df,n):

  i=0

  TR=[0]

  while i<df.index[-1]:

  Range=max(df.get_value(i+1,'High'),df.get_value(i,'Close'))-min(df.get_value(i+1,'Low'),df.get_value(i,'Close'))

  TR.append(Range)

  i=i+1

  i=0

  VM=[0]

  while i<df.index[-1]:

  Range=abs(df.get_value(i+1,'High')-df.get_value(i,'Low'))-abs(df.get_value(i+1,'Low')-df.get_value(i,'High'))

  VM.append(Range)

  i=i+1

  VI=Series(rolling_sum(Series(VM),n)/rolling_sum(Series(TR),n),name='Vortex_'+str(n))

  df=df.join(VI)

  return df

  15.KST振荡器

  def KST(df,r1,r2,r3,r4,n1,n2,n3,n4):

  M=df['Close'].diff(r1-1)

  N=df['Close'].shift(r1-1)

  ROC1=M/N

  M=df['Close'].diff(r2-1)

  N=df['Close'].shift(r2-1)

  ROC2=M/N

  M=df['Close'].diff(r3-1)

  N=df['Close'].shift(r3-1)

  ROC3=M/N

  M=df['Close'].diff(r4-1)

  N=df['Close'].shift(r4-1)

  ROC4=M/N

  KST=Series(rolling_sum(ROC1,n1)+rolling_sum(ROC2,n2)2+rolling_sum(ROC3,n3)3+rolling_sum(ROC4,n4)*4,name='KST_'+str(r1)+'_'+str(r2)+'_'+str(r3)+'_'+str(r4)+'_'+str(n1)+'_'+str(n2)+'_'+str(n3)+'_'+str(n4))

  df=df.join(KST)

  return df

  16.相对强度指标

  def RSI(df,n):

  i=0

  UpI=[0]

  DoI=[0]

  while i+1<=df.index[-1]:

  UpMove=df.get_value(i+1,'High')-df.get_value(i,'High')

  DoMove=df.get_value(i,'Low')-df.get_value(i+1,'Low')

  if UpMove>DoMove and UpMove>0:

  UpD=UpMove

  else:UpD=0

  UpI.append(UpD)

  if DoMove>UpMove and DoMove>0:

  DoD=DoMove

  else:DoD=0

  DoI.append(DoD)

  i=i+1

  UpI=Series(UpI)

  DoI=Series(DoI)

  PosDI=Series(ewma(UpI,span=n,min_periods=n-1))

  NegDI=Series(ewma(DoI,span=n,min_periods=n-1))

  RSI=Series(PosDI/(PosDI+NegDI),name='RSI_'+str(n))

  df=df.join(RSI)

  return df

  17.真实强度指标

  def TSI(df,r,s):

  M=Series(df['Close'].diff(1))

  aM=abs(M)

  EMA1=Series(ewma(M,span=r,min_periods=r-1))

  aEMA1=Series(ewma(aM,span=r,min_periods=r-1))

  EMA2=Series(ewma(EMA1,span=s,min_periods=s-1))

  aEMA2=Series(ewma(aEMA1,span=s,min_periods=s-1))

  TSI=Series(EMA2/aEMA2,name='TSI_'+str(r)+'_'+str(s))

  df=df.join(TSI)

  return df

  18.吸筹/派发指标

  def ACCDIST(df,n):

  ad=(2df['Close']-df['High']-df['Low'])/(df['High']-df['Low'])df['Volume']

  M=ad.diff(n-1)

  N=ad.shift(n-1)

  ROC=M/N

  AD=Series(ROC,name='Acc/Dist_ROC_'+str(n))

  df=df.join(AD)

  return df

  19.佳庆指标CHAIKIN振荡器

  def Chaikin(df):

  ad=(2df['Close']-df['High']-df['Low'])/(df['High']-df['Low'])df['Volume']

  Chaikin=Series(ewma(ad,span=3,min_periods=2)-ewma(ad,span=10,min_periods=9),name='Chaikin')

  df=df.join(Chaikin)

  return df

  20.资金流量与比率指标

  def MFI(df,n):

  PP=(df['High']+df['Low']+df['Close'])/3

  i=0

  PosMF=[0]

  while i<df.index[-1]:

  if PP[i+1]>PP<i>:

  PosMF.append(PP[i+1]*df.get_value(i+1,'Volume'))

  else:

  PosMF.append(0)

  i=i+1

  PosMF=Series(PosMF)

  TotMF=PP*df['Volume']

  MFR=Series(PosMF/TotMF)

  MFI=Series(rolling_mean(MFR,n),name='MFI_'+str(n))

  df=df.join(MFI)

  return df

  21.能量潮指标

  def OBV(df,n):

  i=0

  OBV=[0]

  while i<df.index[-1]:

  if df.get_value(i+1,'Close')-df.get_value(i,'Close')>0:

  OBV.append(df.get_value(i+1,'Volume'))

  if df.get_value(i+1,'Close')-df.get_value(i,'Close')==0:

  OBV.append(0)

  if df.get_value(i+1,'Close')-df.get_value(i,'Close')<0:

  OBV.append(-df.get_value(i+1,'Volume'))

  i=i+1

  OBV=Series(OBV)

  OBV_ma=Series(rolling_mean(OBV,n),name='OBV_'+str(n))

  df=df.join(OBV_ma)

  return df

  22.强力指数指标

  def FORCE(df,n):

  F=Series(df['Close'].diff(n)*df['Volume'].diff(n),name='Force_'+str(n))

  df=df.join(F)

  return df

  23.简易波动指标

  def EOM(df,n):

  EoM=(df['High'].diff(1)+df['Low'].diff(1))(df['High']-df['Low'])/(2df['Volume'])

  Eom_ma=Series(rolling_mean(EoM,n),name='EoM_'+str(n))

  df=df.join(Eom_ma)

  return df

  24.顺势指标

  def CCI(df,n):

  PP=(df['High']+df['Low']+df['Close'])/3

  CCI=Series((PP-rolling_mean(PP,n))/rolling_std(PP,n),name='CCI_'+str(n))

  df=df.join(CCI)

  return df

  25.估波指标

  def COPP(df,n):

  M=df['Close'].diff(int(n*11/10)-1)

  N=df['Close'].shift(int(n*11/10)-1)

  ROC1=M/N

  M=df['Close'].diff(int(n*14/10)-1)

  N=df['Close'].shift(int(n*14/10)-1)

  ROC2=M/N

  Copp=Series(ewma(ROC1+ROC2,span=n,min_periods=n),name='Copp_'+str(n))

  df=df.join(Copp)

  return df

  26.肯特纳通道

  def KELCH(df,n):

  KelChM=Series(rolling_mean((df['High']+df['Low']+df['Close'])/3,n),name='KelChM_'+str(n))

  KelChU=Series(rolling_mean((4df['High']-2df['Low']+df['Close'])/3,n),name='KelChU_'+str(n))

  KelChD=Series(rolling_mean((-2df['High']+4df['Low']+df['Close'])/3,n),name='KelChD_'+str(n))

  df=df.join(KelChM)

  df=df.join(KelChU)

  df=df.join(KelChD)

  return df

  27.终极指标(终极振荡器)

  def ULTOSC(df):

  i=0

  TR_l=[0]

  BP_l=[0]

  while i<df.index[-1]:

  TR=max(df.get_value(i+1,'High'),df.get_value(i,'Close'))-min(df.get_value(i+1,'Low'),df.get_value(i,'Close'))

  TR_l.append(TR)

  BP=df.get_value(i+1,'Close')-min(df.get_value(i+1,'Low'),df.get_value(i,'Close'))

  BP_l.append(BP)

  i=i+1

  UltO=Series((4rolling_sum(Series(BP_l),7)/rolling_sum(Series(TR_l),7))+(2rolling_sum(Series(BP_l),14)/rolling_sum(Series(TR_l),14))+(rolling_sum(Series(BP_l),28)/rolling_sum(Series(TR_l),28)),name='Ultimate_Osc')

  df=df.join(UltO)

  return df

  28.唐奇安通道指标

  def DONCH(df,n):

  i=0

  DC_l=[]

  while i<n-1:

  DC_l.append(0)

  i=i+1

  i=0

  while i+n-1<df.index[-1]:

  DC=max(df['High'].ix[i:i+n-1])-min(df['Low'].ix[i:i+n-1])

  DC_l.append(DC)

  i=i+1

  DonCh=Series(DC_l,name='Donchian_'+str(n))

  DonCh=DonCh.shift(n-1)

  df=df.join(DonCh)

  return df

相关文章
|
1月前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
141 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
29天前
|
安全 API Swift
如何在苹果内购开发中获取App Store Connect API密钥-共享密钥理解内购安全-优雅草卓伊凡
如何在苹果内购开发中获取App Store Connect API密钥-共享密钥理解内购安全-优雅草卓伊凡
106 15
如何在苹果内购开发中获取App Store Connect API密钥-共享密钥理解内购安全-优雅草卓伊凡
|
24天前
|
Web App开发 编解码 算法
布谷一对一直播源码开发:阿里云视频语音通话社交交友App的必备功能
在当今移动社交领域,一对一视频和语音通话功能已成为用户期待的基础配置。从熟人社交到陌生人交友,从专业咨询到情感陪伴,实时音视频互动能力直接决定了社交App的用户留存和市场竞争力。山东布谷科技将深入探讨一对一直播源码开发高质量一对一视频和语音通话功能的关键要素和技术实现方案。
布谷一对一直播源码开发:阿里云视频语音通话社交交友App的必备功能
|
17天前
|
人工智能 小程序 API
【一步步开发AI运动APP】四、使用相机组件抽帧
本文介绍了如何使用`ai-camera`组件开发AI运动APP,助力开发者深耕AI运动领域。`ai-camera`是专为AI运动场景设计的相机组件,支持多平台,提供更强的抽帧处理能力和API。文章详细讲解了获取相机上下文、执行抽帧操作以及将帧保存到相册的功能实现,并附有代码示例。无论是AI运动APP还是其他场景,该组件都能满足预览、拍照、抽帧等需求。下篇将聚焦人体识别检测,敬请期待!
|
10天前
|
人工智能 开发框架 小程序
工会成立100周年纪念,开发职工健身AI运动小程序、APP方案推荐
为庆祝中华全国总工会成立100周年,特推出基于AI技术的智能健身系统,以小程序和APP形式呈现,助力职工健康生活。方案包括:1) 小程序插件,支持多种运动识别,开箱即用;2) APP插件,提供更高精度的运动检测;3) 成熟的「AI乐运动」系统,支持赛事活动管理。这些方案满足不同需求,推动全民健身体验升级,彰显工会对职工健康的关怀。
|
13天前
|
人工智能 小程序 开发者
【一步步开发AI运动APP】六、运动计时计数能调用
本文章介绍了如何通过【一步步开发AI运动APP】系列博文,利用uniAPP插件开发高性能的AI运动应用。文中详细说明了创建运动分析器、进行运动分析、监听计数变化以及停止/重置分析等功能实现步骤。插件内置多种常见运动(如跳绳、俯卧撑等),支持自定义扩展,满足健身、体测等场景需求。示例代码展示了人体检测、运动计时计数及UI更新的完整流程,帮助开发者快速上手并深耕AI运动领域。
|
9天前
|
缓存 开发工具 开发者
鸿蒙NEXT开发App相关工具类(ArkTs)
这段代码展示了一个名为鸿蒙NEXT开发 `AppUtil` 的工具类,主要用于管理鸿蒙应用的上下文、窗口、状态栏、导航栏等配置。它提供了多种功能,例如设置灰阶模式、颜色模式、字体类型、屏幕亮度、窗口属性等,并支持获取应用包信息(如版本号、包名等)。该工具类需在 UIAbility 的 `onWindowStageCreate` 方法中初始化,以便缓存全局变量。代码由鸿蒙布道师编写,适用于鸿蒙系统应用开发,帮助开发者更便捷地管理和配置应用界面及系统属性。
|
17天前
|
人工智能 小程序 API
【一步步开发AI运动APP】五、人体检测能力调用
本文介绍如何开发性能更强、体验更优的AI运动APP,涵盖人体检测、实例创建、检测识别、骨骼图绘制及完整代码实现。通过API `createHumanDetector`,可灵活配置高性能、高精度或多人检测模式,省去模型部署麻烦。检测结果可通过`yz-pose-grapher`组件高效渲染骨骼图。最后提醒使用完毕需调用`destroy()`释放资源,下篇将聚焦运动检测分析,敬请期待!
|
18天前
|
人工智能 开发框架 小程序
【一步步开发AI运动APP】二、跨平台APP AI运动识别方案介绍
本系列博文旨在帮助开发者从【AI运动小程序】迈向性能更优的【AI运动APP】开发。通过「云智AI运动识别」uni-app版插件,提供本地原生极速识别、精准姿态检测及运动计时计数功能,支持健身系统、线上赛事、学生体测、康复锻炼等多场景应用。插件无需云端依赖,一次付费永久使用,成本低且扩展性强。同时兼容uni-app与uni-app x框架,适合不同技术背景的开发者快速上手,助力抢占AI辅助运动市场。下篇将介绍插件引入,敬请期待!
|
19天前
|
人工智能 小程序 前端开发
【一步步开发AI运动APP】一、写在最前
本文介绍新系列【一步步开发AI运动APP】,旨在帮助开发者突破小程序限制,打造性能更强、体验更佳的AI运动APP。相比小程序,APP可充分利用CPU/GPU算力,实现高精度人体检测、多人检测等复杂功能。本系列基于跨平台框架`uni`及扩展插件`uni AI运动识别插件`,适合有小程序开发经验的开发者。内容涵盖抽帧、人体识别、运动分析、姿态交互等,逐步进阶实现完整AI运动APP,并支持多手机平台发布。

热门文章

最新文章