ITPub博客

首页 > 区块链 > 区块链 > 量化合约跟单交易系统开发说明分析,量化合约跟单交易源码平台开发

量化合约跟单交易系统开发说明分析,量化合约跟单交易源码平台开发

原创 区块链 作者:MrsFu123 时间:2022-05-27 17:10:06 0 删除 编辑


代码如下解析:


  import pandas as pd


  import matplotlib.pyplot as plt


  import backtrader as bt


  import backtrader.feeds as btfeed


  import backtrader.indicators as btind


  from backtrader import analyzers


  import pyalgotrade


  import PySimpleGUI as sg


  import akshare as ak


  import pandas as pd


  import datetime


  stock=sg.popup_get_file('输入股票代码比如sz002466')


  start_date=sg.popup_get_file('输入数据开始时间比如20200101')


  start_cash=sg.popup_get_file('输入开始资金比如1000000')


  #定义测试类


  class testStrategy(bt.Strategy):


  #定义记录函数


  def log(self,txt,dt=None):


  dt=dt or self.datas[0].datetime.date(0)


  print('%s,%s'%(dt.isoformat(),txt))


  #初始化数据


  def __init__(self):


  self.dataclose=self.datas[0].close


  #定义交易状态检测函数,交易前


  def notify_order(self,order):


  #如果交易提交/接受


  if order.status in[order.Submitted,order.Accepted]:


  print('交易提交,交易接受')


  #如果交易完成


  if order.status in[order.Completed]:


  #如果交易类型是买


  if order.isbuy():


  self.log('买的价格,%.2f'%order.executed.price)


  #如果交易类型是卖


  elif order.issell():


  self.log('卖的价格,%.2f'%order.executed.price)


  self.bar_executed=len(self)


  #如果交易交易取消,保证金不足,交易拒绝


  elif order.status in[order.Canceled,order.Margin,order.Rejected]:


  self.log('交易取消/保证金不足/交易拒绝')


  self.order=None


  #主交易函数


  def next(self):


  self.log('收盘价,%.2f'%self.dataclose[0])


  #写交易函数,连续下跌3天买入,连续上涨3天卖出


  #如果今天的价格小于昨天的价格


  if self.dataclose[0]<self.dataclose[-1]:


  #如果昨天的价格小于前天的价格


  if self.dataclose[-1]<self.dataclose[-2]:


  #记录买卖的价格


  self.log('买的价格%.2f'%self.dataclose[0])


  self.buy(size=200)#单位为股,代表1手


  elif self.dataclose[0]>self.dataclose[-1]:


  if self.dataclose[-1]>self.dataclose[-2]:


  self.log('卖出的价格%.2f'%self.dataclose[0])


  self.sell(size=100)


  #简单例子


  if __name__=="__main__":


  #将大脑实例化


  cerebro=bt.Cerebro()


  cerebro.addstrategy(testStrategy)


  #加入数据


  df=ak.stock_zh_a_daily(symbol=stock,start_date=start_date)


  df.index=pd.to_datetime(df['date'])


  data=btfeed.PandasData(dataname=df)


  cerebro.adddata(data=data)


  #设置开始资金


  cerebro.broker.set_cash(int(start_cash))


  #设置交易费用


  cerebro.broker.setcommission(0.003)


  print('开始值{}'.format(cerebro.broker.getvalue()))


  cerebro.run()


  print('最终值{}'.format(cerebro.broker.getvalue()))


  cerebro.plot(style='candle')


  plt.show()


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69993319/viewspace-2897593/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
区块链系统开发商:15920073069 薇電

注册时间:2021-01-15

  • 博文量
    19
  • 访问量
    10510