如何选择合适的量化交易服务器

news2025/1/16 6:04:19

 

数量技术宅团队在CSDN学院推出了量化投资系列课程

欢迎有兴趣系统学习量化投资的同学,点击下方链接报名:

量化投资速成营(入门课程)

Python股票量化投资

Python期货量化投资

Python数字货币量化投资

C++语言CTP期货交易系统开发

数字货币JavaScript语言量化交易系统开发


所谓“工欲善其事,必先利其器”,对于量化交易来说,最后也是重要的一步,在于为我们的实盘策略选择一个运行的服务器。那么,应该如何选择合适的量化交易服务器?希望通过这篇分享,给大家提供一些帮助。

策略类型:中频 or 高频

对于中频策略,可以按照以下三方面,来综合考虑交易服务器的选择:

  1. 服务器以稳定为主,尽可能选择头部服务器提供商。同时,云服务器尽可能离交易所更近的物理位置。

  2. 网络带宽追求性价,例如阿里云分为流量付费和时间付费模式,在策略数据量不大的前提下,流量模式能大大节省服务器的网络费用。

  3. 服务器配置追求性价:贴近策略实际需求,如策略逻辑运算相对简单,则不需要在cpu和内存配置上提升太多,同时考虑交易资金量,资金量大的账户,在配置上优先提高。

对于高频策略,这里指的是期货、数字货币策略,托管服务器都是最优选择:

期货高频

  1. 托管服务器是必须的选择,同时使用的API配搭FPGA更佳(速度第一梯队),如果资金量、交易量足够达到门槛,上述配置都可以由期货公司提供,几乎不存在额外费用。

  2. 但如果策略对速度要求更高,需要自购服务器,那么托管服务器的成本,将显著提高。

数字货币高频

  1. 托管服务器同样是最佳的,但是部分交易所不存在托管服务器或对资金量有较高要求,此时可退而求其次选择服务器运营商提高的云服务器。

  2. 数字货币交易所分布于各国,服务器所在国所在城市,例如币安服务器在日本东京的aws,那我们的服务器最好选购aws的同一个区域。

  3. 选择服务器的地理位置时,可以通过不同服务器ping交易所的延迟,来选择最优的云服务商和地区。

  4. 涉及多地区套利,服务器选择在其中一个地区,同时在系统报单都优先报送较远的交易所,等待远端交易所成交后,报送近端交易所,近端交易所由于物理位置接近,成交率普遍会高一些。

服务器系统选择:Linux or Windows

 

如果我们的策略是借助三方平台完成的,例如tbquant,由于tbquant只支持windows, 或者我们自己的系统在windows上开发的,此时只能选择windows server作为服务器系统。

除此以外,更推荐使用Linux系统,如centos、ubuntu等系统,稳定性强、开源可优化、运算效率高;所以,如果交易策略是基于交易所API自主开发的系统,尽可能放在Linux平台上。

选择完成系统后,需要做一些关于全自动交易辅助配置,可通过代码+自动任务完成,例如,启动关闭策略(linux crontab),断线重连,异常情况告警(断线、重复报单、账户风控超标等),利用脚本发送邮件、钉钉等通知。

股票交易的选择

上述我们讲的主要是期货、数字货币相关的API。目前股票的开放API,一般来说是和券商深度绑定的,并且资金量有一定门槛,通常步骤是,达到资金量门槛,开放API,指定在特定提供托管服务器上使用。

目前券商已经对外放开了券商的API了,可以通过连券商的API让策略进行实盘交易,例如中泰的XTP,是纯自主研发的。但是,券商一般不给个人投资者提供接口,对于个人投资者,大多数券商的官网上都有网上交易,也就是通过web页面交易,这就意味着你可以模拟登录,通过http请求发送委托单。

 

如果你所在的券商没有web交易服务,理论上来讲也是可以通过分析手机app/交易软件的接口,模拟登录实现程序化交易的,不过实现的过程相对复杂,适合编程能力强的技术达人。

因此,股票的交易服务器选择对于两类不同的人群是不一样的,资金量达到券商门槛的,可以使用官方API和官方服务器,而资金量较小的个人投资者,使用云服务器,通过模拟web页面交易,似乎是唯一可行的选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/914774.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sql入门-多表查询

案例涉及表 ----------------------------------建表语句之前翻看之前博客文章 多表查询 -- 学生表 create table studen ( id int primary key auto_increment comment id, name varchar(50) comment 姓名, no varchar(10) comment 学号 ) comment 学生表; insert…

ES基础操作

1.创建索引 在 Postman 中,向 ES 服务器发 PUT 请求 : http://127.0.0.1:9200/shopping 后台日志 重复发送 PUT 请求添加索引 : http://127.0.0.1:9200/shopping ,会返回错误信息 : 2.获取单个索引相关信息 在 Postman 中&#…

【SpringSecurity】三、访问授权

文章目录 1、配置用户权限2、针对URL授权3、针对方法的授权 1、配置用户权限 继续上一章,给在内存中创建两个用户配置权限。配置权限有两种方式: 配置roles配置authorities //哪个写在后面哪个起作用 //角色变成权限后会加一个ROLE_前缀,比…

Flask狼书笔记 | 03_模板

文章目录 3 模板3.1 模板基本使用3.2 模板结构组织3.3 模板进阶 3 模板 模板(template):包含固定内容和动态部分的可重用文件。Jinja2模板引擎可用于任何纯文本文件。 3.1 模板基本使用 HTML实体:https://dev.w3.org/html5/htm…

启动Vue项目踩坑记录

前言 在启动自己的Vue项目时&#xff0c;遇到一些报错&#xff0c;当时很懵&#xff0c;解决了以后豁然开朗&#xff0c;特写此博客记录一下。 一、<template>里多加了个div标签 [vite] Internal server error: At least one <template> or <script> is req…

EureKa快速入门

EureKa快速入门 远程调用的问题 多个服务有多个端口&#xff0c;这样的话服务有多个&#xff0c;硬编码不太适合 eureKa的作用 将service的所有服务的端口全部记录下来 想要的话 直接从注册中心查询对于所有服务 每隔一段时间需要想eureKa发送请求 保证服务还存活 动手实践 …

odoo安装启动遇到的问题

问题&#xff1a;在第一次加载odoo配置文件的时候&#xff0c;启动失败 方法&#xff1a; 1、先检查odoo.conf的内容&#xff0c;尤其是路径 [options] ; This is the password that allows database operations: ; admin_passwd admin db_host 127.0.0.1 db_port 5432 d…

kotlin协程flow任务意外结束未emit数据retryWhen onEmpty(5)

kotlin协程flow任务意外结束未emit数据retryWhen onEmpty&#xff08;5&#xff09; import kotlinx.coroutines.delay import kotlinx.coroutines.flow.* import kotlinx.coroutines.runBlocking import kotlinx.coroutines.withTimeoutOrNullfun main(args: Array<String&…

【Java】基础练习(九)

1.结婚 创建一个Person类&#xff0c;如下: public class Person{private String name;private Character gender;private Integer age;private Boolean marry;// 省略 getter / settter / 构造 / toString / hashCode / equals }有一个类CAB&#xff0c;有一个canMarry方…

SpringBoot(二)

###SpringBoot原理分析 ###SpringBoot监控 ###SpringBoot项目部署 #SpringBoot自动配置 Condition&#xff1a;&#xff08;条件&#xff09; Condition是在Spring4.0增加的条件判断功能&#xff0c;通过这个功能可以实现选择性的创建Bean操作 SpringBoot是如何知道要创建…

如何在服务器上用kaggle下载数据集

S1 服务器上安装kaggle cli工具 pip install --user kaggleS2 服务器上创建kaggle目录 mkdir ~/.kaggleS3 进入kaggle账户创建token 生成token 点击右上角头像&#xff0c;选择setting 点击create new token 进入你的浏览器下载页&#xff0c;可以看到有了一个kaggle.jso…

快速了解什么是Cookie

&#x1f600;前言 本篇博文是关于Web 开发会话技术 -Cookie的介绍&#xff0c;希望你能够喜欢&#x1f60a; &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的…

Elasticsearch 入门安装

1.Elasticsearch 是什么 The Elastic Stack, 包括 Elasticsearch、 Kibana、 Beats 和 Logstash&#xff08;也称为 ELK Stack&#xff09;。能够安全可靠地获取任何来源、任何格式的数据&#xff0c;然后实时地对数据进行搜索、分析和可视化。 Elaticsearch&#xff0c;简称为…

0822|C++day2 引用+函数重载

一、左值引用(reference) 如果想要实现两个数据的交换&#xff0c;值传递不能交换实参&#xff0c;地址传递可以交换实参&#xff0c;会额外开辟空间 【1】概念 引用其实就是给变量起了一个别名&#xff0c;孙悟空(齐天大圣)C对C的一个最重要的扩充 【2】定义 数据类型 &am…

链表oj(复制随机链表)、栈和队列oj(循环队列)

文章目录 1.链表oj 2.栈和队列oj 文章内容 1.链表oj 1. 给定一个链表&#xff0c;每个结点包含一个额外增加的随机指针&#xff0c;该指针可以指向链表中的任何结点 或空结点。要求返回这个链表的深度拷贝。力扣 该题不仅要求复制链表&#xff0c;而且每个节点有两个指针域…

【C语言】自定义类型(结构体+枚举+联合)

一、结构体 1、结构体类型的声明 &#xff08;1&#xff09;结构的基础知识 结构是一些值的集合&#xff0c;这些值称为成员变量。结构的每个成员可以是不同类型的变量。 &#xff08;2&#xff09;结构的声明 举例&#xff1a; // 形容一名学生 struct Stu {char name[20];…

7.elasticsearch同步工具-logstah

1.logstah Logstash 是一个用于数据处理和转换的开源工具&#xff0c;它可以将来自不同源头的数据收集、转换、过滤&#xff0c;并将其发送到不同的目标。Logstash 是 ELK&#xff08;Elasticsearch、Logstash 和 Kibana&#xff09;技术栈的一部分&#xff0c;通常与 Elastics…

JVM理论知识

一、JVM内存结构 java的内存模型主要分为5个部分&#xff0c;分别是&#xff1a;JVM堆、JVM栈、本地栈、方法区还有程序计数器&#xff0c;他们的用途分别是&#xff1a; JVM堆&#xff1a;新建的对象都会放在这里&#xff0c;他是JVM中所占内存最大的区域。他又分为新生区还…

无处不在的拉普拉斯——边缘,斑点,金字塔

作为拿破仑的老师和“法国牛顿”&#xff0c;拉普拉斯在数学和天体力学中贡献颇多&#xff0c;但其实在图像处理中也会发现拉普拉斯的身影。怎么它又可以用来检测斑点&#xff0c;又可以检测边缘&#xff0c;又可以金字塔重建&#xff0c;还可以平滑&#xff0c;还可以增强细节…

redis 6个节点(3主3从),始终一个节点不能启动

redis节点&#xff0c;始终有一个节点不能启动起来 1.修改了配置文件 protected-mode no&#xff0c;重启 修改了配置文件 protected-mode no&#xff0c;重启redis问题依然存在 2、查看/var/log/message的redis日志 Aug 21 07:40:33 redisMaster kernel: Out of memory: K…