量化交易,你也可以赚大钱

量化交易零基础入门教程

初识量化交易

  • 量化交易是指借助现代统计学和数学的方法,利用计算机技术来进行交易的证券投资方式。便于理解的说,量化交易主要是做这样的事:

量化交易的价值何在?

  • 可以利用大量历史数据检验策略,效率提升百倍
  • 更科学更客观的衡量交易策略的效果
  • 全市场实时捕捉交易机会
  • 更多的盈利机会

做量化交易需要什么?

  • 要有各种数据。
  • 还要有一套量化交易的系统,

量化交易策略基本框架

从一个非常简单的交易策略开始

  • 先看一个非常简单的交易策略:
每天买100股的平安银行。
  • 为了让这个策略能让计算机执行,首先,要使策略符合“初始化+周期循环”框架,像这样:
  初始化:选定要交易的股票为平安银行
  每天循环:买100股的平安银行

常用的下单函数

  • order(security,amount),刚刚细讲过,含义是买卖一定数量的(单位:股)股票。security是股票代码,amount是数量,amount为负数时就是代表卖出了,需要知道的是,国内股票买入最小单位是1手即100股。例子如下:
  # 买入100股平安银行
  order("000001.XSHE",100)
  # 卖出100股平安银行
  order("000001.XSHE",-100)
  • order_target(security,amount),含义是通过买卖,将股票仓位调整至一定数量(单位:股)。security是股票代码,amount是数量。例子如下:
  # 调整平安银行的持股数量至1000股
  # 即,如果目前平安银行的持股数量低于1000股就买入,高于就是卖出,不高不低就不动。
  order_target("000001.XSHE",1000)
  • order_value(security,value),含义是买卖一定价值量(单位:元)股票。security是股票代码,value是价值量。value为负数时就是代表卖出了。例子如下:
  # 买入10000元的平安银行
  # 如果当前股票市价是10元,则代表买入1000股
  # 如果除不开系统会自动调整成相近的合理数量。卖出时也会。
  order_value("000001.XSHE",10000)
  # 卖出10000元的平安银行
  # 如果当前股票市价是100元,则代表卖出100股
  order_value("000001.XSHE",-10000)
  • order_target_value(security,value),通过买卖,将股票仓位调整至一定价值量(单位:元)。security是股票代码,value是价值量。例子如下:
  # 调整平安银行的持股价值量至10000元
  # 即,如果目前平安银行的持股价值量(按股票市价算)低于10000元就买入,高于就是卖出,不高不低就不动。
  order_target_value("000001.XSHE",10000)

读取context中的数据与条件

def initialize(context):
      run_daily(period,time='every_bar')
      g.security = '000001.XSHE'

  def period(context):
      order(g.security, 100)

量化交易,你也可以赚大钱_第1张图片

止损

  def initialize(context):
      run_daily(period,time='every_bar')
      g.security = '000001.XSHE'

  def period(context):
      # 买入股票
      order(g.security, 100)
      # 获得股票持仓成本
      cost=context.portfolio.positions['000001.XSHE'].avg_cost
      # 获得股票现价
      price=context.portfolio.positions['000001.XSHE'].price
      # 计算收益率
      ret=price/cost-1
      # 打印日志
      print('成本价:%s' % cost)
      print('现价:%s' % price)
      print('收益率:%s' % ret)
      # 如果收益率小于-0.01,即亏损达到1%则卖出股票,幅度可以自己调,一般10%
      if ret<-0.01:
          order_target('000001.XSHE',0)
          print('触发止损')

小任务

  • 闰年代码实现:
from datetime import datatime

def run_year(date):
	run_year = []
	both = []
	neither = []
	for dates in date:
		time = datetime.strptime.strptime(str(dates),"Y").year
		if time % 4==0:
			if time%100==0:
				print("%s既是闰年,又是世纪年"%dates)
			else:
				print("%s是闰年"%dates)
				run_year.append(dates)
		else:
			neither.apend(dates)
		return tun_year, both, neither

小任务

from jqdata import *
def initialize(context):
	#购买比亚迪股票
	g.security = '002594.XSHE'
	g.buy_time = '2018-03-01'
	g.sell_time = '2018-03-21'
	run_daily(period,time = 'every_bar')


def period(context):
	date = context.current_dt.strftime('%Y-%m-%d')
	if date == g.buy_time:
		order(g.security,100)
		print('买一手比亚迪')
	elif date == g.sell_time:
		order_target(g.security,0)
		print("溜了")
	else:
		print("wait")
	

部分代码转至:https://www.joinquant.com/view/community/detail/7570870ccf37ba48007261992d2e543a

你可能感兴趣的:(python,量化交易,python,人工智能,数据分析,大数据)