量化交易系统开发逻辑策略编写 | 量化交易系统开发源码示例(go语言版)

简介: 一个基本的量化交易系统大致上有两个分层:资金管理层与 ( 商品 策略 ) 层。 框架 ( 模组 ) 决定好了,再更有系统地强化各个模组,进而更接近交易本质。 初阶的交易者多数先选定一个邻近市场,如外汇或是熟悉的台股、台指期、台指选择权,并进行策略的开发。 一个基本策略的框架大致上如下,可以分成数个模组,设计者可以依循这样的框架进行一个初步策略开发或交易程式撰写:

一个基本的量化交易系统大致上有两个分层:资金管理层与 ( 商品 策略 ) 层。 框架 ( 模组 ) 决定好了,再更有系统地强化各个模组,进而更接近交易本质。 初阶的交易者多数先选定一个邻近市场,如外汇或是熟悉的台股、台指期、台指选择权,并进行策略的开发。 一个基本策略的框架大致上如下,可以分成数个模组,设计者可以依循这样的框架进行一个初步策略开发或交易程式撰写:

多空指标 也就是多数人所认知的技术分析,诸如均线、KD、MACD、董诠通道、布林通道等大家耳熟能详的指标,场内游戏者希望能够藉此探知当前市场状态,是多或空。

交易合约模组 这个模组会较为细分,因不同交易所提供的商品与合约不同,使用这一模组可以快速选定特定商品与合约进行交易。

风控模组 交易员可以设置停损、加码、减码等动作,以及交易杠杆比例。

交易执行模组 这个模组会负责开平仓的讯号执行,以及订单的管理。

数据管理模组 这个模组通常会包括行情数据、财务数据、以及交易记录。

运算模组 这个模组可以进行技术指标计算、机器学习以及深度计算。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import yfinance as yf

设置交易账号相关信息

账号 = 'xxx'
密码 = 'xxx'
经纪商 = 'xxx'

获取股票历史数据

ticker = 'AAPL' # 以苹果公司(AAPL)为例
start_date = '2010-01-01'
end_date = '2022-03-17'
data = yf.download(ticker, start=start_date, end=end_date)

计算移动平均线

data['ma5'] = data['Adj Close'].rolling(window=5).mean()
data['ma20'] = data['Adj Close'].rolling(window=20).mean()

绘制K线图,并添加移动平均线

fig, ax = plt.subplots()
ax.plot(data.index, data['Adj Close'])
ax.plot(data.index, data['ma5'])
ax.plot(data.index, data['ma20'])
ax.set_xlabel('Date')
ax.set_ylabel('Price')
plt.show()

判断是否买入或卖出股票

if data['Adj Close'] > data['ma5'] and data['Adj Close'] > data['ma20']:
print('买入')
elif data['Adj Close'] < data['ma5'] and data['Adj Close'] < data['ma20']:
print('卖出')
else:
print('暂时不动')

相关文章
|
3天前
|
存储 Go API
一个go语言编码的例子
【7月更文挑战第2天】本文介绍Go语言使用Unicode字符集和UTF-8编码。Go中,`unicode/utf8`包处理编码转换,如`EncodeRune`和`DecodeRune`。`golang.org/x/text`库支持更多编码转换,如GBK到UTF-8。编码规则覆盖7位至21位的不同长度码点。
69 1
一个go语言编码的例子
|
6天前
|
JSON 算法 测试技术
在go语言中调试程序
【6月更文挑战第29天】Go语言内置`testing`包支持单元测试、基准测试和模糊测试。`go test`命令可执行测试,如`-run`选择特定测试,`-bench`运行基准测试,`-fuzz`进行模糊测试。
17 2
在go语言中调试程序
|
5天前
|
安全 Go
Go语言的iota关键字有什么用途?
**Go语言中的`iota`是常量生成器,用于在`const`声明中创建递增的常量。`iota`在每个新的`const`块重置为0,然后逐行递增,简化了枚举类型或常量序列的定义。例如,定义星期枚举:** ```markdown ```go type Weekday int const ( Sunday Weekday = iota // 0 Monday // 1 Tuesday // 2 ... ) ``` 同样,`iota`可用于定义不同组的常量,如状态码和标志位,保持各自组内的递增,提高代码可读性。
|
17小时前
|
监控 搜索推荐 Go
万字详解!在 Go 语言中操作 ElasticSearch
本文档通过示例代码详细介绍了如何在Go应用中使用`olivere/elastic`库,涵盖了从连接到Elasticsearch、管理索引到执行复杂查询的整个流程。
6 0
|
4天前
|
IDE Linux Go
记录一个go语言与IDE之间的问题
【7月更文挑战第1天】本文介绍在IDE中调试Go应用可能遇到的问题。当问题与IDE的自动完成有关,可以试着使用其他编辑器如Linux的vim是否无此问题。这可以验证表明IDE可能不完全兼容最新语言版本,建议使用无自动检测工具临时解决。
22 0
|
8天前
|
编译器 Go C++
必知的技术知识:go语言快速入门教程
必知的技术知识:go语言快速入门教程
|
9天前
|
编译器 Go 开发者
|
Go
一个golang并行库源码解析
## 场景 有这样一种场景:四个任务A、B、C, D,其中任务B和C需要并发执行,得到结果1, 任务A执行得到结果2, 结果1和2作为任务D的参数传入,然后执行任务D得到最终结果。我们可以将任务执行顺序用如下图标识: ``` jobA jobB jobC \ \ / \ \ / \ middle \ /
2117 0
|
13天前
|
安全 测试技术 Go
Go语言在高并发场景下的应用
在当今互联网高速发展的时代,高并发已成为众多应用系统面临的核心问题。本文探讨了Go语言在高并发场景下的优势,并通过具体实例展示了其在实际应用中的效果和性能表现。
|
10天前
|
Go
go语言map、实现set
go语言map、实现set
14 0