strategy-tools 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cetus/CetusStrategyApiConnection.d.ts +4 -17
- package/dist/cetus/CetusStrategyApiConnection.js +7 -8
- package/dist/cetus/CetusStrategyApiConnection.js.map +1 -1
- package/dist/cetus/types.d.ts +29 -0
- package/dist/cetus/types.js +12 -0
- package/dist/cetus/types.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/cetus/CetusStrategyApiConnection.ts +10 -19
- package/src/cetus/types.ts +31 -0
- package/src/index.ts +2 -1
- package/test/cetus/CetusStrategyApiConnection.test.ts +22 -10
|
@@ -1,20 +1,5 @@
|
|
|
1
|
-
import { ExternalApiConnection, StandardKeyGroup } from "itrm-tools";
|
|
2
|
-
|
|
3
|
-
id: number;
|
|
4
|
-
name: string;
|
|
5
|
-
settings: any;
|
|
6
|
-
memory: any;
|
|
7
|
-
account: string;
|
|
8
|
-
pair: string;
|
|
9
|
-
intermediary: string;
|
|
10
|
-
status: string;
|
|
11
|
-
}
|
|
12
|
-
export declare enum StrategyStatus {
|
|
13
|
-
RUNNING = "RUNNING",
|
|
14
|
-
BUY_ONLY = "BUY_ONLY",
|
|
15
|
-
SELL_ONLY = "SELL_ONLY",
|
|
16
|
-
STOPPED = "STOPPED"
|
|
17
|
-
}
|
|
1
|
+
import { ApiResponse, ExternalApiConnection, StandardKeyGroup } from "itrm-tools";
|
|
2
|
+
import { CetusStrategy, StrategyRate } from "./types";
|
|
18
3
|
export declare class CetusStrategyApiConnection extends ExternalApiConnection {
|
|
19
4
|
constructor(apiUrl: string, keys: StandardKeyGroup);
|
|
20
5
|
getStrategies(params: {
|
|
@@ -22,4 +7,6 @@ export declare class CetusStrategyApiConnection extends ExternalApiConnection {
|
|
|
22
7
|
pair: string;
|
|
23
8
|
account: string;
|
|
24
9
|
}): Promise<CetusStrategy[]>;
|
|
10
|
+
saveMemory(strategy: CetusStrategy): Promise<ApiResponse<null>>;
|
|
11
|
+
getRates(): Promise<StrategyRate[]>;
|
|
25
12
|
}
|
|
@@ -1,14 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CetusStrategyApiConnection =
|
|
3
|
+
exports.CetusStrategyApiConnection = void 0;
|
|
4
4
|
const itrm_tools_1 = require("itrm-tools");
|
|
5
|
-
var StrategyStatus;
|
|
6
|
-
(function (StrategyStatus) {
|
|
7
|
-
StrategyStatus["RUNNING"] = "RUNNING";
|
|
8
|
-
StrategyStatus["BUY_ONLY"] = "BUY_ONLY";
|
|
9
|
-
StrategyStatus["SELL_ONLY"] = "SELL_ONLY";
|
|
10
|
-
StrategyStatus["STOPPED"] = "STOPPED";
|
|
11
|
-
})(StrategyStatus || (exports.StrategyStatus = StrategyStatus = {}));
|
|
12
5
|
class CetusStrategyApiConnection extends itrm_tools_1.ExternalApiConnection {
|
|
13
6
|
constructor(apiUrl, keys) {
|
|
14
7
|
super("cetus", apiUrl, keys);
|
|
@@ -17,6 +10,12 @@ class CetusStrategyApiConnection extends itrm_tools_1.ExternalApiConnection {
|
|
|
17
10
|
const queryString = new URLSearchParams(params).toString();
|
|
18
11
|
return this.request(itrm_tools_1.RequestMethod.GET, `/v1/strategies?${queryString}`);
|
|
19
12
|
}
|
|
13
|
+
async saveMemory(strategy) {
|
|
14
|
+
return this.request(itrm_tools_1.RequestMethod.PUT, `/v1/strategies/${strategy.id}`, { memory: strategy.memory });
|
|
15
|
+
}
|
|
16
|
+
async getRates() {
|
|
17
|
+
return this.request(itrm_tools_1.RequestMethod.GET, `/v1/rates`);
|
|
18
|
+
}
|
|
20
19
|
}
|
|
21
20
|
exports.CetusStrategyApiConnection = CetusStrategyApiConnection;
|
|
22
21
|
//# sourceMappingURL=CetusStrategyApiConnection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CetusStrategyApiConnection.js","sourceRoot":"","sources":["../../src/cetus/CetusStrategyApiConnection.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"CetusStrategyApiConnection.js","sourceRoot":"","sources":["../../src/cetus/CetusStrategyApiConnection.ts"],"names":[],"mappings":";;;AAAA,2CAAiG;AAGjG,MAAa,0BAA2B,SAAQ,kCAAqB;IACjE,YAAY,MAAc,EAAE,IAAsB;QAC9C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,MAAuD;QAC9E,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,MAAa,CAAC,CAAC,QAAQ,EAAE,CAAC;QAClE,OAAO,IAAI,CAAC,OAAO,CAAkB,0BAAa,CAAC,GAAG,EAAE,kBAAkB,WAAW,EAAE,CAAC,CAAC;IAC7F,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,QAAuB;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAc,0BAAa,CAAC,GAAG,EAAE,kBAAkB,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACtH,CAAC;IAEM,KAAK,CAAC,QAAQ;QACjB,OAAO,IAAI,CAAC,OAAO,CAAiB,0BAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACxE,CAAC;CACJ;AAjBD,gEAiBC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface CetusStrategy {
|
|
2
|
+
id: number;
|
|
3
|
+
name: string;
|
|
4
|
+
settings: any;
|
|
5
|
+
memory: any;
|
|
6
|
+
account: string;
|
|
7
|
+
pair: string;
|
|
8
|
+
intermediary: string;
|
|
9
|
+
status: StrategyStatus;
|
|
10
|
+
}
|
|
11
|
+
export declare enum StrategyStatus {
|
|
12
|
+
RUNNING = "RUNNING",
|
|
13
|
+
BUY_ONLY = "BUY_ONLY",
|
|
14
|
+
SELL_ONLY = "SELL_ONLY",
|
|
15
|
+
STOPPED = "STOPPED"
|
|
16
|
+
}
|
|
17
|
+
export interface StrategyRate {
|
|
18
|
+
symbol: string;
|
|
19
|
+
source: string;
|
|
20
|
+
date: string;
|
|
21
|
+
bid?: string;
|
|
22
|
+
ask?: string;
|
|
23
|
+
prevDayClose?: string;
|
|
24
|
+
spot?: {
|
|
25
|
+
time: string;
|
|
26
|
+
price: string;
|
|
27
|
+
volume: string;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StrategyStatus = void 0;
|
|
4
|
+
var StrategyStatus;
|
|
5
|
+
(function (StrategyStatus) {
|
|
6
|
+
StrategyStatus["RUNNING"] = "RUNNING";
|
|
7
|
+
StrategyStatus["BUY_ONLY"] = "BUY_ONLY";
|
|
8
|
+
StrategyStatus["SELL_ONLY"] = "SELL_ONLY";
|
|
9
|
+
StrategyStatus["STOPPED"] = "STOPPED";
|
|
10
|
+
})(StrategyStatus || (exports.StrategyStatus = StrategyStatus = {}));
|
|
11
|
+
;
|
|
12
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cetus/types.ts"],"names":[],"mappings":";;;AAWA,IAAY,cAKX;AALD,WAAY,cAAc;IACtB,qCAAmB,CAAA;IACnB,uCAAqB,CAAA;IACrB,yCAAuB,CAAA;IACvB,qCAAmB,CAAA;AACvB,CAAC,EALW,cAAc,8BAAd,cAAc,QAKzB;AAcA,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ export { BinanceApiSigner as BinanceApiSigner } from './binance/BinanceApiSigner
|
|
|
2
2
|
export { BinanceConnection as BinanceConnection } from './binance/BinanceConnection';
|
|
3
3
|
export { BinanceOperationConnection as BinanceOperationConnection } from './binance/connection/BinanceOperationConnection';
|
|
4
4
|
export { BinanceParams as BinanceParams, BinanceResponse as BinanceResponse, BinanceAccountResponse as BinanceAccountResponse, BinanceSymbolStatus as BinanceSymbolStatus, BinanceOrderSide as BinanceOrderSide, BinanceOrderType as BinanceOrderType, BinanceTimeInForce as BinanceTimeInForce, BinanceOrder as BinanceOrder, BinanceOrderStatus as BinanceOrderStatus, BinanceCancelRestrictions as BinanceCancelRestrictions } from './binance/BinanceTypes';
|
|
5
|
-
export { CetusStrategyApiConnection as CetusStrategyApiConnection
|
|
5
|
+
export { CetusStrategyApiConnection as CetusStrategyApiConnection } from './cetus/CetusStrategyApiConnection';
|
|
6
|
+
export { CetusStrategy as CetusStrategy, StrategyStatus as StrategyStatus, StrategyRate as StrategyRate } from './cetus/types';
|
package/dist/index.js
CHANGED
|
@@ -16,5 +16,6 @@ Object.defineProperty(exports, "BinanceOrderStatus", { enumerable: true, get: fu
|
|
|
16
16
|
Object.defineProperty(exports, "BinanceCancelRestrictions", { enumerable: true, get: function () { return BinanceTypes_1.BinanceCancelRestrictions; } });
|
|
17
17
|
var CetusStrategyApiConnection_1 = require("./cetus/CetusStrategyApiConnection");
|
|
18
18
|
Object.defineProperty(exports, "CetusStrategyApiConnection", { enumerable: true, get: function () { return CetusStrategyApiConnection_1.CetusStrategyApiConnection; } });
|
|
19
|
-
|
|
19
|
+
var types_1 = require("./cetus/types");
|
|
20
|
+
Object.defineProperty(exports, "StrategyStatus", { enumerable: true, get: function () { return types_1.StrategyStatus; } });
|
|
20
21
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+DAAkF;AAAzE,oHAAA,gBAAgB,OAAoB;AAC7C,iEAAqF;AAA5E,sHAAA,iBAAiB,OAAqB;AAC/C,8FAA2H;AAAlH,wIAAA,0BAA0B,OAA8B;AACjE,uDAAgc;AAAjU,mHAAA,mBAAmB,OAAuB;AAAE,gHAAA,gBAAgB,OAAoB;AAAE,gHAAA,gBAAgB,OAAoB;AAAE,kHAAA,kBAAkB,OAAsB;AAAgC,kHAAA,kBAAkB,OAAsB;AAAE,yHAAA,yBAAyB,OAA6B;AAE/Z,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+DAAkF;AAAzE,oHAAA,gBAAgB,OAAoB;AAC7C,iEAAqF;AAA5E,sHAAA,iBAAiB,OAAqB;AAC/C,8FAA2H;AAAlH,wIAAA,0BAA0B,OAA8B;AACjE,uDAAgc;AAAjU,mHAAA,mBAAmB,OAAuB;AAAE,gHAAA,gBAAgB,OAAoB;AAAE,gHAAA,gBAAgB,OAAoB;AAAE,kHAAA,kBAAkB,OAAsB;AAAgC,kHAAA,kBAAkB,OAAsB;AAAE,yHAAA,yBAAyB,OAA6B;AAE/Z,iFAA8G;AAArG,wIAAA,0BAA0B,OAA8B;AACjE,uCAA8H;AAArF,uGAAA,cAAc,OAAkB"}
|
package/package.json
CHANGED
|
@@ -1,22 +1,5 @@
|
|
|
1
|
-
import { ExternalApiConnection, RequestMethod, StandardKeyGroup } from "itrm-tools";
|
|
2
|
-
|
|
3
|
-
export interface CetusStrategy {
|
|
4
|
-
id: number;
|
|
5
|
-
name: string;
|
|
6
|
-
settings: any;
|
|
7
|
-
memory: any;
|
|
8
|
-
account: string;
|
|
9
|
-
pair: string;
|
|
10
|
-
intermediary: string;
|
|
11
|
-
status: string;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export enum StrategyStatus {
|
|
15
|
-
RUNNING = "RUNNING",
|
|
16
|
-
BUY_ONLY = "BUY_ONLY",
|
|
17
|
-
SELL_ONLY = "SELL_ONLY",
|
|
18
|
-
STOPPED = "STOPPED"
|
|
19
|
-
}
|
|
1
|
+
import { ApiResponse, ExternalApiConnection, RequestMethod, StandardKeyGroup } from "itrm-tools";
|
|
2
|
+
import { CetusStrategy, StrategyRate } from "./types";
|
|
20
3
|
|
|
21
4
|
export class CetusStrategyApiConnection extends ExternalApiConnection {
|
|
22
5
|
constructor(apiUrl: string, keys: StandardKeyGroup) {
|
|
@@ -27,4 +10,12 @@ export class CetusStrategyApiConnection extends ExternalApiConnection {
|
|
|
27
10
|
const queryString = new URLSearchParams(params as any).toString();
|
|
28
11
|
return this.request<CetusStrategy[]>(RequestMethod.GET, `/v1/strategies?${queryString}`);
|
|
29
12
|
}
|
|
13
|
+
|
|
14
|
+
public async saveMemory(strategy: CetusStrategy) {
|
|
15
|
+
return this.request<ApiResponse>(RequestMethod.PUT, `/v1/strategies/${strategy.id}`, { memory: strategy.memory });
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
public async getRates() {
|
|
19
|
+
return this.request<StrategyRate[]>(RequestMethod.GET, `/v1/rates`);
|
|
20
|
+
}
|
|
30
21
|
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface CetusStrategy {
|
|
2
|
+
id: number;
|
|
3
|
+
name: string;
|
|
4
|
+
settings: any;
|
|
5
|
+
memory: any;
|
|
6
|
+
account: string;
|
|
7
|
+
pair: string;
|
|
8
|
+
intermediary: string;
|
|
9
|
+
status: StrategyStatus;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export enum StrategyStatus {
|
|
13
|
+
RUNNING = "RUNNING",
|
|
14
|
+
BUY_ONLY = "BUY_ONLY",
|
|
15
|
+
SELL_ONLY = "SELL_ONLY",
|
|
16
|
+
STOPPED = "STOPPED"
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface StrategyRate {
|
|
20
|
+
symbol: string;
|
|
21
|
+
source: string;
|
|
22
|
+
date: string;
|
|
23
|
+
bid?: string;
|
|
24
|
+
ask?: string;
|
|
25
|
+
prevDayClose?: string;
|
|
26
|
+
spot?: {
|
|
27
|
+
time: string;
|
|
28
|
+
price: string;
|
|
29
|
+
volume: string;
|
|
30
|
+
};
|
|
31
|
+
};
|
package/src/index.ts
CHANGED
|
@@ -3,4 +3,5 @@ export { BinanceConnection as BinanceConnection } from './binance/BinanceConnect
|
|
|
3
3
|
export { BinanceOperationConnection as BinanceOperationConnection } from './binance/connection/BinanceOperationConnection';
|
|
4
4
|
export { BinanceParams as BinanceParams, BinanceResponse as BinanceResponse, BinanceAccountResponse as BinanceAccountResponse, BinanceSymbolStatus as BinanceSymbolStatus, BinanceOrderSide as BinanceOrderSide, BinanceOrderType as BinanceOrderType, BinanceTimeInForce as BinanceTimeInForce, BinanceOrder as BinanceOrder, BinanceOrderStatus as BinanceOrderStatus, BinanceCancelRestrictions as BinanceCancelRestrictions } from './binance/BinanceTypes';
|
|
5
5
|
|
|
6
|
-
export { CetusStrategyApiConnection as CetusStrategyApiConnection
|
|
6
|
+
export { CetusStrategyApiConnection as CetusStrategyApiConnection } from './cetus/CetusStrategyApiConnection';
|
|
7
|
+
export { CetusStrategy as CetusStrategy, StrategyStatus as StrategyStatus, StrategyRate as StrategyRate } from './cetus/types'
|
|
@@ -1,27 +1,39 @@
|
|
|
1
1
|
import { CetusStrategy, CetusStrategyApiConnection } from "../../dist";
|
|
2
2
|
|
|
3
|
-
const API_URL = "
|
|
3
|
+
const API_URL = "http://localhost:8309";
|
|
4
4
|
const PUBLIC_KEY = "24df533e3b1ffa697bb98201ca7eeb9c6a25b0d5322b3817280fd78ac61f499b";
|
|
5
5
|
const SECRET_KEY = "WFCbWEDq4hJLrVjYZAOVWZlZou+Wly6Zpn9IR1DCoQzG4uireyxuYbqZeIj1JmLbbehzth+wIXU0Trve54fI1Q==";
|
|
6
6
|
const SIGN_KEY = "EYox9cKS3ZPk5KC6zGXYrxjOS9g5S21ik7CHcKtuip6cuhtsNYKM6kSrWH5R7d4qGTB07M/S1V7QC9G6VHyJRA==";
|
|
7
7
|
|
|
8
|
+
const STRATEGY_SEARCH = { name: "CMA Streamer", pair: "USDCOP", account: "CETUS" };
|
|
9
|
+
|
|
8
10
|
describe('testing Binance Signer', () => {
|
|
9
11
|
const connection = new CetusStrategyApiConnection(API_URL, { publicKey: PUBLIC_KEY, secretKey: SECRET_KEY, signKey: SIGN_KEY });
|
|
10
|
-
var strategy: CetusStrategy;
|
|
11
12
|
test("> test GET Strategies", async () => {
|
|
12
|
-
|
|
13
|
-
let strategies = await connection.getStrategies({ name: "CMA Streamer", pair: "USDCOP", account: "CETUS" });
|
|
13
|
+
let strategies = await connection.getStrategies(STRATEGY_SEARCH);
|
|
14
14
|
for (let strategy of strategies) {
|
|
15
|
-
console.log("> strategy:", strategy);
|
|
16
15
|
expect(strategy.id).toBeGreaterThan(0);
|
|
17
16
|
expect(strategy.name).toBe("CMA Streamer");
|
|
18
17
|
expect(strategy.account).toBe("CETUS");
|
|
19
18
|
expect(strategy.pair).toBe("USDCOP");
|
|
20
19
|
}
|
|
21
|
-
strategy = strategies[0];
|
|
22
|
-
} catch (err: any) { console.log("> err:", err.response); }
|
|
23
20
|
});
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
test("> test PUT strategies", async () => {
|
|
22
|
+
let strategy = (await connection.getStrategies(STRATEGY_SEARCH))[0];
|
|
23
|
+
expect(strategy).toBeDefined();
|
|
24
|
+
if (strategy) {
|
|
25
|
+
strategy.memory.rand = Math.random();
|
|
26
|
+
console.log("> strategy:", strategy);
|
|
27
|
+
let response = await connection.saveMemory(strategy);
|
|
28
|
+
expect(response.success).toBeTruthy();
|
|
29
|
+
let modifiedStrategy = (await connection.getStrategies(STRATEGY_SEARCH))[0];
|
|
30
|
+
expect(modifiedStrategy.memory.rand).toBe(strategy.memory.rand);
|
|
31
|
+
}
|
|
32
|
+
}, 15000);
|
|
33
|
+
test("> test GET rates", async () => {
|
|
34
|
+
let rates = await connection.getRates();
|
|
35
|
+
for (let rate of rates) {
|
|
36
|
+
expect(rate).toBeDefined();
|
|
37
|
+
}
|
|
38
|
+
});
|
|
27
39
|
});
|