From 330bf5da8517b348c798dc5535802404707b9039 Mon Sep 17 00:00:00 2001 From: tianea Date: Mon, 7 Mar 2022 16:15:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=8E=A5=E5=8F=A3=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=20=E6=96=B0=E5=BB=BA=E8=B4=A6=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/tz/platform/juejing/JueJinApi.java | 93 +++++++++++++++++++ .../com/tz/platform/juejing/bo/Indicator.java | 46 +++++++++ .../tz/platform/juejing/bo/ReportInfo.java | 16 ++++ 3 files changed, 155 insertions(+) create mode 100644 tz/competition/competition-service/src/main/java/com/tz/platform/juejing/JueJinApi.java create mode 100644 tz/competition/competition-service/src/main/java/com/tz/platform/juejing/bo/Indicator.java create mode 100644 tz/competition/competition-service/src/main/java/com/tz/platform/juejing/bo/ReportInfo.java diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/juejing/JueJinApi.java b/tz/competition/competition-service/src/main/java/com/tz/platform/juejing/JueJinApi.java new file mode 100644 index 0000000..96afab7 --- /dev/null +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/juejing/JueJinApi.java @@ -0,0 +1,93 @@ +package com.tz.platform.juejing; + +import cn.hutool.json.JSONUtil; +import com.tz.platform.common.core.base.BaseException; +import com.tz.platform.common.core.tools.HttpUtil; +import com.tz.platform.juejing.bo.AccountInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.util.StringUtils; + +import java.util.HashMap; +import java.util.Map; + +public class JueJinApi { + private String token = "157e2484a38880effebe57c4ee95d6c29984e2f8"; + private String baseUrl = "https://sim.sztzjy.com"; + private Map headers = new HashMap<>(); + private static Logger logger = LoggerFactory.getLogger(JueJinApi.class); + public JueJinApi(){ + headers.put("Authorization","bearer "+token); + } + + /** + * + * @param accountName 账号名称 + * @param initCash 初始资金 + * @param secType 交易类型 1 = 股票, 4 = 期货 + * @return + */ + public AccountInfo createAccount(String accountName,Long initCash,Integer secType){ + if(StringUtils.isEmpty(accountName)){ + throw new BaseException("账号名称不能为空"); + } + if(secType!=1&&secType!=4){ + throw new BaseException("交易类型错误"); + } + + if(initCash<0){ + throw new BaseException("初始资金不能为负"); + } + + String url = baseUrl +"/broker-rpcgw/v3/accounts"; + String param = "{\"account\": {\"title\": \""+accountName+"\", \"sec_types\": ["+secType+"], \"info\": {\"appid\": \"[GMBROKER]\"} }, \"init_cash\": "+initCash+", \"engine_id\": \"simulate\"}"; + String content = HttpUtil.postWithHeader( url,param,headers); + logger.info(content); + return JSONUtil.toBean(content,AccountInfo.class); + } + + /** + * 删除账户 + * @param accountId 账户ID + */ + public void deleteAccount(String accountId){ + String url = baseUrl+"/broker-rpcgw/v3/accounts?account_ids="+accountId; + String content = HttpUtil.delete(url,headers); + logger.info("{} 删除信息,{}",accountId,content); + } + + public String getCashInfo(String accountId){ + String url = baseUrl+"/broker-rpcgw/v3/account-trade/cash/"+accountId; + String content = HttpUtil.get(url,headers); + logger.info("{} 账户资金信息:{},",accountId,content); + return content; + } + + public String createReport(String accountId,String title){ + String url = "https://api.myquant.cn:9001/perfweb-rpcgw/api/v1/sim/detail/"+accountId+"?title="+title; + String content = HttpUtil.get(url,headers); + logger.info("报告生成请求: {}",content); + return ""; + } + + + public String test(){ + String url = "https://sim.sztzjy.com/sim?acc=2e41a913-9dc1-11ec-89b3-00163e0e6ad0"; + String content = HttpUtil.get(url,headers); + logger.info("测试结果:{}",content); + return ""; + } + + public static void main(String[] args) { + JueJinApi api = new JueJinApi(); + String accountId = "2e41a913-9dc1-11ec-89b3-00163e0e6ad0"; + +// AccountInfo info = api.createAccount("test2",1000000L,1); +// System.out.println(info.getAccount_id()); +// api.deleteAccount("4811913f-9dba-11ec-89b3-00163e0e6ad0"); +// api.getCashInfo("2e41a913-9dc1-11ec-89b3-00163e0e6ad0"); +// api.test(); + api.createReport(accountId,"report"+ System.currentTimeMillis()); + + } +} diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/juejing/bo/Indicator.java b/tz/competition/competition-service/src/main/java/com/tz/platform/juejing/bo/Indicator.java new file mode 100644 index 0000000..3f89c1e --- /dev/null +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/juejing/bo/Indicator.java @@ -0,0 +1,46 @@ +package com.tz.platform.juejing.bo; + +import lombok.Data; + +@Data +public class Indicator { + /** + * 累计收益率 + */ + private Long pnl_ratio; + + /** + * 年化收益率 + */ + private Long pnl_ratio_annual; + + /** + * 夏普比例 + */ + private Long sharp_ration; + + /** + * 最大回测 + */ + private Long max_drawdown; + + /** + * 开仓次数 + */ + private Integer open_count; + + /** + * 平仓次数 + */ + private Integer close_count; + + /** + * 胜率 + */ + private Long win_ratio; + + /** + * 卡玛比率 + */ + private Long calmar_raio; +} diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/juejing/bo/ReportInfo.java b/tz/competition/competition-service/src/main/java/com/tz/platform/juejing/bo/ReportInfo.java new file mode 100644 index 0000000..d8e9221 --- /dev/null +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/juejing/bo/ReportInfo.java @@ -0,0 +1,16 @@ +package com.tz.platform.juejing.bo; + +import lombok.Data; + +import java.util.Date; + +@Data +public class ReportInfo { + private Integer report_id; + private String account_id; + private String title; + private CashInfo cash; + private Indicator indicator; + private Date created_at; + private Date updated_at; +}