量化交易机器人开发源码现货合约对冲策略

351 阅读4分钟

  自动交易系统由几个元素组成。您需要决定要交易的市场,创建特征来识别交易逻辑并制定策略来实施该逻辑来买卖货币。您的系统应该决定何时进入和退出交易,考虑交易成本并通过回测(但不是过度拟合)进行优化。

  首先要先确定量化投资组合研发的框架:

  一、图表和数据:利用第三方网站或者软件量化交易机器人系统13z开4z77发z558,的数据下载后建立组合。

  二、策略和回测:利用第三方平台建立组合,对策略进行优化和调整。

  三、智能投资:公司自己购买数据,建立自己的底层平台,拥有自己的核心算法

  第二步我们要知道正期望的交易系统需要满足哪些条件?

  一个交易系统,假设胜率是P,赢亏比是R=W/L,系统期望值为M。

  M=P*W-(1-P)*L

  正期望系统一共有三个

  一、高盈亏比及高胜率

  二、低盈亏比及高胜率

  三、高盈亏比及低胜率

  正期望值系统:

  给大家分享两种常见的盈利系统:

  1、操作方式是盈亏比放大,运用趋势跟踪交易,靠放大盈亏比获利。

  模型:海龟趋势交易系统

  2、盈亏比为1:1的趋势交易,止损适当放大,靠胜率优势来获利。

  模型:日内随机交易系统

  第三步就是量化投资组合研发:好的组合能让整个账户的资金曲线更好的增长,那怎么设计组合呢?

  1.智能组合生成:根据投资者的投资回报率,生成该回报率下性价比最高(风险最低)的投资组合。

  2.智能组合筛选:查看投资组合过往表现及预期未来投资结果,筛选投资组合。

  3.智能组合购买:一键购买,同步买入组合所有品种。

  4、智能组合收藏:方便管理,保存购买组合的详细信息,包括品种名字和品种占比

  5、智能组合账户跟踪:通过手机App和微信查询投资组合的净值变动,月度提醒组合的调仓管理。

  我们在其中保存市场行情信息。我们希望我们的系统可以处理各种市场行精,所以我们先讲一下通用的方法。但是我们要开发的是一个简单的回测系统,所以在初期版本中,我们尽量将问题简化,等核心功能全部实现之后,我们再添加这些可扩展功能比较合理。

  我们先来定义一个金融分析系统的配置类:

  class FasConfig(object):

  TDT_ASDK='asdk'#A股日K线数据

  def init(self):

  self.name='fas.bktr.FasConfig'

  def new_tick_data(self,tick_data_type,symbol,timestamp,**args):

  if tick_data_type==FasConfig.TDT_ASDK:

  return AsdkTickData(symbol,timestamp,

  open_price=args['open_price'],

  high_price=args['high_price'],

  low_price=args['low_price'],

  close_price=args['close_price'],

  total_volume=args['total_volume']

  )

  return None

  fas_config=FasConfig()

  我们在其中定义了FasConfig类和一个实例,在类中我们定义了TickData类型的常量,目前我们只研究A股K线行情,因此只有一个常量定义,后面随着系统越来越完善,会定义更多的常量。

  我们在new_tick_data方法中,生成一个新的TickData子类实例。tick_data_type指定子类类型,symbol是金融标的代码,timestamp是时间点,**args是以字典形式传过来的可变数量参数。由上面的代码可以看到,这个方法最终会生成一个AsdkTickData类实例。

  下面我们来看市场数据类:

  class MarketData(object):

  def init(self):

  self.name='fas.bktr.MarketData'

  self.__tick_datas={}

  def add_close_price(self,symbol,timestamp,close_price):

  if symbol not in self.__tick_datas:

  tick_data=fas_config.new_tick_data(

  fas_config.TDT_ASDK,symbol,timestamp,

  open_price=1.0,high_price=2.0,low_price=3.0,

  close_price=4.0,total_volume=5.0

  )

  print('tick_data:{0};'.format(tick_data.close_price))

  在这个类中,我们定义私有属性__tick_datas来保存行情数据,其是一个字典,键值为标的代码。

  在add_close_price方法中,如果标的代码不在行情字典中,则生成一个新的对应的TickData子类实例。请大家注意,前面3个参数分别指定的TickData的子类,标的代码和时间点,后面的参数会形成**args参数表示的字典。这样就可以生成任意的行情数据类了。