iq-option-client 1.3.3

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.
Files changed (155) hide show
  1. package/LICENSE +16 -0
  2. package/README.md +531 -0
  3. package/dist/bin/IQOption.d.ts +2 -0
  4. package/dist/bin/IQOption.js +100 -0
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.js +26 -0
  7. package/dist/lib/Helper/Logger/ILogger.d.ts +39 -0
  8. package/dist/lib/Helper/Logger/ILogger.js +3 -0
  9. package/dist/lib/Helper/Logger/LogLevel.d.ts +10 -0
  10. package/dist/lib/Helper/Logger/LogLevel.js +23 -0
  11. package/dist/lib/Helper/Logger/LoggerContext.d.ts +59 -0
  12. package/dist/lib/Helper/Logger/LoggerContext.js +49 -0
  13. package/dist/lib/Helper/Logger/LoggerFactory.d.ts +22 -0
  14. package/dist/lib/Helper/Logger/LoggerFactory.js +87 -0
  15. package/dist/lib/Helper/Logger/WinstonLogger.d.ts +21 -0
  16. package/dist/lib/Helper/Logger/WinstonLogger.js +56 -0
  17. package/dist/lib/Helper/Logger/index.d.ts +5 -0
  18. package/dist/lib/Helper/Logger/index.js +30 -0
  19. package/dist/lib/Helper/LoggerHelper.d.ts +11 -0
  20. package/dist/lib/Helper/LoggerHelper.js +48 -0
  21. package/dist/lib/Helper/SleepHelper.d.ts +6 -0
  22. package/dist/lib/Helper/SleepHelper.js +15 -0
  23. package/dist/lib/Helper/index.d.ts +3 -0
  24. package/dist/lib/Helper/index.js +20 -0
  25. package/dist/lib/Service/IQOptionService/Adapter/StreamAdapter.d.ts +16 -0
  26. package/dist/lib/Service/IQOptionService/Adapter/StreamAdapter.js +47 -0
  27. package/dist/lib/Service/IQOptionService/Adapter/index.d.ts +1 -0
  28. package/dist/lib/Service/IQOptionService/Adapter/index.js +26 -0
  29. package/dist/lib/Service/IQOptionService/Builder/OrderBuilder.d.ts +44 -0
  30. package/dist/lib/Service/IQOptionService/Builder/OrderBuilder.js +91 -0
  31. package/dist/lib/Service/IQOptionService/Builder/OrderRequest.d.ts +28 -0
  32. package/dist/lib/Service/IQOptionService/Builder/OrderRequest.js +20 -0
  33. package/dist/lib/Service/IQOptionService/Builder/index.d.ts +2 -0
  34. package/dist/lib/Service/IQOptionService/Builder/index.js +27 -0
  35. package/dist/lib/Service/IQOptionService/Command/CommandInvoker.d.ts +13 -0
  36. package/dist/lib/Service/IQOptionService/Command/CommandInvoker.js +35 -0
  37. package/dist/lib/Service/IQOptionService/Command/GetProfileCommand.d.ts +13 -0
  38. package/dist/lib/Service/IQOptionService/Command/GetProfileCommand.js +20 -0
  39. package/dist/lib/Service/IQOptionService/Command/ICommand.d.ts +13 -0
  40. package/dist/lib/Service/IQOptionService/Command/ICommand.js +11 -0
  41. package/dist/lib/Service/IQOptionService/Command/SendOrderCommand.d.ts +14 -0
  42. package/dist/lib/Service/IQOptionService/Command/SendOrderCommand.js +20 -0
  43. package/dist/lib/Service/IQOptionService/Command/index.d.ts +4 -0
  44. package/dist/lib/Service/IQOptionService/Command/index.js +29 -0
  45. package/dist/lib/Service/IQOptionService/Error/AuthenticationError.d.ts +7 -0
  46. package/dist/lib/Service/IQOptionService/Error/AuthenticationError.js +22 -0
  47. package/dist/lib/Service/IQOptionService/Error/ConnectionError.d.ts +7 -0
  48. package/dist/lib/Service/IQOptionService/Error/ConnectionError.js +22 -0
  49. package/dist/lib/Service/IQOptionService/Error/ErrorHandler.d.ts +17 -0
  50. package/dist/lib/Service/IQOptionService/Error/ErrorHandler.js +58 -0
  51. package/dist/lib/Service/IQOptionService/Error/IQOptionError.d.ts +15 -0
  52. package/dist/lib/Service/IQOptionService/Error/IQOptionError.js +46 -0
  53. package/dist/lib/Service/IQOptionService/Error/OrderError.d.ts +7 -0
  54. package/dist/lib/Service/IQOptionService/Error/OrderError.js +22 -0
  55. package/dist/lib/Service/IQOptionService/Error/RetryStrategy.d.ts +42 -0
  56. package/dist/lib/Service/IQOptionService/Error/RetryStrategy.js +67 -0
  57. package/dist/lib/Service/IQOptionService/Error/Retryable.d.ts +20 -0
  58. package/dist/lib/Service/IQOptionService/Error/Retryable.js +36 -0
  59. package/dist/lib/Service/IQOptionService/Error/TimeoutError.d.ts +7 -0
  60. package/dist/lib/Service/IQOptionService/Error/TimeoutError.js +23 -0
  61. package/dist/lib/Service/IQOptionService/Error/index.d.ts +8 -0
  62. package/dist/lib/Service/IQOptionService/Error/index.js +33 -0
  63. package/dist/lib/Service/IQOptionService/Factory/StreamFactory.d.ts +17 -0
  64. package/dist/lib/Service/IQOptionService/Factory/StreamFactory.js +43 -0
  65. package/dist/lib/Service/IQOptionService/Factory/StreamType.d.ts +9 -0
  66. package/dist/lib/Service/IQOptionService/Factory/StreamType.js +22 -0
  67. package/dist/lib/Service/IQOptionService/Factory/index.d.ts +2 -0
  68. package/dist/lib/Service/IQOptionService/Factory/index.js +27 -0
  69. package/dist/lib/Service/IQOptionService/Helper/InputValidator.d.ts +34 -0
  70. package/dist/lib/Service/IQOptionService/Helper/InputValidator.js +101 -0
  71. package/dist/lib/Service/IQOptionService/Helper/RequestIdGenerator.d.ts +18 -0
  72. package/dist/lib/Service/IQOptionService/Helper/RequestIdGenerator.js +37 -0
  73. package/dist/lib/Service/IQOptionService/Helper/index.d.ts +2 -0
  74. package/dist/lib/Service/IQOptionService/Helper/index.js +27 -0
  75. package/dist/lib/Service/IQOptionService/IQOptionApi.d.ts +96 -0
  76. package/dist/lib/Service/IQOptionService/IQOptionApi.js +343 -0
  77. package/dist/lib/Service/IQOptionService/IQOptionExpired.d.ts +7 -0
  78. package/dist/lib/Service/IQOptionService/IQOptionExpired.js +27 -0
  79. package/dist/lib/Service/IQOptionService/IQOptionStreamCandleGenerated.d.ts +55 -0
  80. package/dist/lib/Service/IQOptionService/IQOptionStreamCandleGenerated.js +88 -0
  81. package/dist/lib/Service/IQOptionService/IQOptionStreamOptionClose.d.ts +33 -0
  82. package/dist/lib/Service/IQOptionService/IQOptionStreamOptionClose.js +59 -0
  83. package/dist/lib/Service/IQOptionService/IQOptionStreamTradersSentiment.d.ts +46 -0
  84. package/dist/lib/Service/IQOptionService/IQOptionStreamTradersSentiment.js +84 -0
  85. package/dist/lib/Service/IQOptionService/IQOptionStreamUserAlerts.d.ts +40 -0
  86. package/dist/lib/Service/IQOptionService/IQOptionStreamUserAlerts.js +79 -0
  87. package/dist/lib/Service/IQOptionService/IQOptionWrapper.d.ts +51 -0
  88. package/dist/lib/Service/IQOptionService/IQOptionWrapper.js +111 -0
  89. package/dist/lib/Service/IQOptionService/IQOptionWs.d.ts +56 -0
  90. package/dist/lib/Service/IQOptionService/IQOptionWs.js +125 -0
  91. package/dist/lib/Service/IQOptionService/Interface/IAuthService.d.ts +12 -0
  92. package/dist/lib/Service/IQOptionService/Interface/IAuthService.js +11 -0
  93. package/dist/lib/Service/IQOptionService/Interface/IIQOptionStream.d.ts +9 -0
  94. package/dist/lib/Service/IQOptionService/Interface/IIQOptionStream.js +11 -0
  95. package/dist/lib/Service/IQOptionService/Interface/IWebSocketClient.d.ts +26 -0
  96. package/dist/lib/Service/IQOptionService/Interface/IWebSocketClient.js +3 -0
  97. package/dist/lib/Service/IQOptionService/Interface/index.d.ts +3 -0
  98. package/dist/lib/Service/IQOptionService/Interface/index.js +28 -0
  99. package/dist/lib/Service/IQOptionService/Model/IQOptionAction.d.ts +23 -0
  100. package/dist/lib/Service/IQOptionService/Model/IQOptionAction.js +36 -0
  101. package/dist/lib/Service/IQOptionService/Model/IQOptionCandle.d.ts +61 -0
  102. package/dist/lib/Service/IQOptionService/Model/IQOptionCandle.js +11 -0
  103. package/dist/lib/Service/IQOptionService/Model/IQOptionCurrency.d.ts +9 -0
  104. package/dist/lib/Service/IQOptionService/Model/IQOptionCurrency.js +22 -0
  105. package/dist/lib/Service/IQOptionService/Model/IQOptionCurrencyType.d.ts +8 -0
  106. package/dist/lib/Service/IQOptionService/Model/IQOptionCurrencyType.js +21 -0
  107. package/dist/lib/Service/IQOptionService/Model/IQOptionInitializationData.d.ts +117 -0
  108. package/dist/lib/Service/IQOptionService/Model/IQOptionInitializationData.js +14 -0
  109. package/dist/lib/Service/IQOptionService/Model/IQOptionInstrumentType.d.ts +4 -0
  110. package/dist/lib/Service/IQOptionService/Model/IQOptionInstrumentType.js +9 -0
  111. package/dist/lib/Service/IQOptionService/Model/IQOptionInstruments.d.ts +22 -0
  112. package/dist/lib/Service/IQOptionService/Model/IQOptionInstruments.js +3 -0
  113. package/dist/lib/Service/IQOptionService/Model/IQOptionMarket.d.ts +100 -0
  114. package/dist/lib/Service/IQOptionService/Model/IQOptionMarket.js +113 -0
  115. package/dist/lib/Service/IQOptionService/Model/IQOptionMarketInvert.d.ts +6 -0
  116. package/dist/lib/Service/IQOptionService/Model/IQOptionMarketInvert.js +108 -0
  117. package/dist/lib/Service/IQOptionService/Model/IQOptionMode.d.ts +7 -0
  118. package/dist/lib/Service/IQOptionService/Model/IQOptionMode.js +20 -0
  119. package/dist/lib/Service/IQOptionService/Model/IQOptionModel.d.ts +13 -0
  120. package/dist/lib/Service/IQOptionService/Model/IQOptionModel.js +26 -0
  121. package/dist/lib/Service/IQOptionService/Model/IQOptionName.d.ts +8 -0
  122. package/dist/lib/Service/IQOptionService/Model/IQOptionName.js +21 -0
  123. package/dist/lib/Service/IQOptionService/Model/IQOptionOptionClosed.d.ts +43 -0
  124. package/dist/lib/Service/IQOptionService/Model/IQOptionOptionClosed.js +11 -0
  125. package/dist/lib/Service/IQOptionService/Model/IQOptionOptionOpened.d.ts +39 -0
  126. package/dist/lib/Service/IQOptionService/Model/IQOptionOptionOpened.js +11 -0
  127. package/dist/lib/Service/IQOptionService/Model/IQOptionProfile.d.ts +152 -0
  128. package/dist/lib/Service/IQOptionService/Model/IQOptionProfile.js +11 -0
  129. package/dist/lib/Service/IQOptionService/Model/IQOptionResult.d.ts +17 -0
  130. package/dist/lib/Service/IQOptionService/Model/IQOptionResult.js +30 -0
  131. package/dist/lib/Service/IQOptionService/Model/IQOptionTime.d.ts +12 -0
  132. package/dist/lib/Service/IQOptionService/Model/IQOptionTime.js +25 -0
  133. package/dist/lib/Service/IQOptionService/Model/index.d.ts +17 -0
  134. package/dist/lib/Service/IQOptionService/Model/index.js +42 -0
  135. package/dist/lib/Service/IQOptionService/Repository/IQOptionRepository.d.ts +26 -0
  136. package/dist/lib/Service/IQOptionService/Repository/IQOptionRepository.js +3 -0
  137. package/dist/lib/Service/IQOptionService/Repository/WebSocketRepository.d.ts +19 -0
  138. package/dist/lib/Service/IQOptionService/Repository/WebSocketRepository.js +99 -0
  139. package/dist/lib/Service/IQOptionService/Repository/index.d.ts +2 -0
  140. package/dist/lib/Service/IQOptionService/Repository/index.js +27 -0
  141. package/dist/lib/Service/IQOptionService/Strategy/BinaryOrderStrategy.d.ts +15 -0
  142. package/dist/lib/Service/IQOptionService/Strategy/BinaryOrderStrategy.js +66 -0
  143. package/dist/lib/Service/IQOptionService/Strategy/DigitalOrderStrategy.d.ts +15 -0
  144. package/dist/lib/Service/IQOptionService/Strategy/DigitalOrderStrategy.js +83 -0
  145. package/dist/lib/Service/IQOptionService/Strategy/IOrderStrategy.d.ts +10 -0
  146. package/dist/lib/Service/IQOptionService/Strategy/IOrderStrategy.js +3 -0
  147. package/dist/lib/Service/IQOptionService/Strategy/index.d.ts +3 -0
  148. package/dist/lib/Service/IQOptionService/Strategy/index.js +28 -0
  149. package/dist/lib/Service/IQOptionService/index.d.ts +16 -0
  150. package/dist/lib/Service/IQOptionService/index.js +41 -0
  151. package/dist/lib/Service/index.d.ts +1 -0
  152. package/dist/lib/Service/index.js +26 -0
  153. package/dist/lib/index.d.ts +2 -0
  154. package/dist/lib/index.js +27 -0
  155. package/package.json +67 -0
@@ -0,0 +1,96 @@
1
+ import * as Core from "../..";
2
+ import { IQOptionWs } from "./IQOptionWs";
3
+ /**
4
+ * IQOption api.
5
+ */
6
+ export declare class IQOptionApi {
7
+ /**
8
+ * Max wait profile response.
9
+ */
10
+ private readonly maxWaitProfile;
11
+ /**
12
+ * Max wait profile response.
13
+ */
14
+ private readonly maxWaitToSendOrder;
15
+ /**
16
+ * Max wait profile response.
17
+ */
18
+ private readonly maxWaitToInitializationData;
19
+ /**
20
+ * Max wait profile response.
21
+ */
22
+ private readonly maxWaitToGetDigitalInstrumentData;
23
+ /**
24
+ * IQ option wrapper.
25
+ */
26
+ private readonly iqOptionWrapper;
27
+ /**
28
+ * IQ Option WS.
29
+ */
30
+ private readonly iqOptionWs;
31
+ /**
32
+ * Queue order send.
33
+ */
34
+ private readonly orderPlacementQueue;
35
+ /**
36
+ * Queue order send.
37
+ */
38
+ private readonly nextRequestIDQueue;
39
+ /**
40
+ * IQOption API.
41
+ *
42
+ * @param email
43
+ * @param password
44
+ */
45
+ constructor(email: string, password: string);
46
+ /**
47
+ * Connect async.
48
+ */
49
+ connectAsync(): Promise<Core.IQOptionProfile>;
50
+ /**
51
+ * Get iq option ws.
52
+ */
53
+ getIQOptionWs(): IQOptionWs;
54
+ /**
55
+ * Wait to get user profile.
56
+ */
57
+ profileAsync(): Promise<Core.IQOptionProfile>;
58
+ /**
59
+ * Send order.
60
+ *
61
+ * @param market
62
+ * @param side
63
+ * @param time
64
+ * @param userBalanceId
65
+ * @param profitPercent
66
+ * @param amount
67
+ */
68
+ sendOrderBinary(market: Core.IQOptionMarket, side: Core.IQOptionModel, time: number, userBalanceId: number, profitPercent: number, amount: number, orderId?: number): Promise<Core.IQOptionOptionOpened>;
69
+ /**
70
+ * Send order digital.
71
+ *
72
+ * @param market
73
+ * @param side
74
+ * @param realTime
75
+ * @param userBalanceId
76
+ * @param amount
77
+ * @param instrumentIndex
78
+ * @param orderId
79
+ */
80
+ sendOrderDigital(market: Core.IQOptionMarket, side: Core.IQOptionModel, realTime: number, userBalanceId: number, amount: number, instrumentIndex: number, orderId?: number): Promise<Core.IQOptionOptionOpened>;
81
+ /**
82
+ * Get initialization data.
83
+ */
84
+ getInitializationData(): Promise<Core.IQOptionInitializationData>;
85
+ /**
86
+ *
87
+ * @param market
88
+ * @returns
89
+ */
90
+ getDigitalOptionInstruments(market: Core.IQOptionMarket): Promise<Core.IQOptionInstruments>;
91
+ /**
92
+ * Get next request id.
93
+ * @deprecated Use RequestIdGenerator.getNext() instead
94
+ */
95
+ getNextRequestID(): Promise<number>;
96
+ }
@@ -0,0 +1,343 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IQOptionApi = void 0;
4
+ /*
5
+ * Copyright (C) 2020 Wellington Rocha
6
+ * All Rights Reserved.
7
+ *
8
+ * Unauthorized copying of this file, via any medium is strictly prohibited.
9
+ *
10
+ * Proprietary and confidential.
11
+ */
12
+ const bottleneck_1 = require("bottleneck");
13
+ const moment = require("moment-timezone");
14
+ const Core = require("../..");
15
+ const IQOptionWrapper_1 = require("./IQOptionWrapper");
16
+ const IQOptionWs_1 = require("./IQOptionWs");
17
+ const InputValidator_1 = require("./Helper/InputValidator");
18
+ const RequestIdGenerator_1 = require("./Helper/RequestIdGenerator");
19
+ /**
20
+ * IQOption api.
21
+ */
22
+ class IQOptionApi {
23
+ /**
24
+ * IQOption API.
25
+ *
26
+ * @param email
27
+ * @param password
28
+ */
29
+ constructor(email, password) {
30
+ /**
31
+ * Max wait profile response.
32
+ */
33
+ this.maxWaitProfile = 5000;
34
+ /**
35
+ * Max wait profile response.
36
+ */
37
+ this.maxWaitToSendOrder = 5000;
38
+ /**
39
+ * Max wait profile response.
40
+ */
41
+ this.maxWaitToInitializationData = 5000;
42
+ /**
43
+ * Max wait profile response.
44
+ */
45
+ this.maxWaitToGetDigitalInstrumentData = 5000;
46
+ /**
47
+ * Queue order send.
48
+ */
49
+ this.orderPlacementQueue = new bottleneck_1.default({
50
+ maxConcurrent: 1,
51
+ minTime: 1,
52
+ });
53
+ /**
54
+ * Queue order send.
55
+ */
56
+ this.nextRequestIDQueue = new bottleneck_1.default({
57
+ maxConcurrent: 1,
58
+ });
59
+ Core.logger().silly("IQOptionApi::constructor");
60
+ // Validate inputs
61
+ InputValidator_1.InputValidator.validateEmail(email);
62
+ InputValidator_1.InputValidator.validatePassword(password);
63
+ this.iqOptionWrapper = new IQOptionWrapper_1.IQOptionWrapper(email, password);
64
+ this.iqOptionWs = new IQOptionWs_1.IQOptionWs();
65
+ }
66
+ /**
67
+ * Connect async.
68
+ */
69
+ connectAsync() {
70
+ Core.logger().silly("IQOptionApi::connectAsync");
71
+ return this.iqOptionWrapper
72
+ .auth()
73
+ .then((token) => {
74
+ return this.iqOptionWs
75
+ .connect()
76
+ .then(async () => this.iqOptionWs.send(Core.IQOptionName.SSID, token, await this.getNextRequestID()))
77
+ .then(() => this.profileAsync())
78
+ .catch((e) => Promise.reject(e));
79
+ })
80
+ .catch((e) => Promise.reject(e));
81
+ }
82
+ /**
83
+ * Get iq option ws.
84
+ */
85
+ getIQOptionWs() {
86
+ return this.iqOptionWs;
87
+ }
88
+ /**
89
+ * Wait to get user profile.
90
+ */
91
+ profileAsync() {
92
+ Core.logger().silly("IQOptionApi::profileAsync");
93
+ return new Promise((resolve, reject) => {
94
+ const listener = (message) => {
95
+ const messageJSON = JSON.parse(message.toString());
96
+ if (messageJSON.name === Core.IQOptionAction.PROFILE) {
97
+ this.iqOptionWs.socket().off("message", listener);
98
+ resolve(messageJSON.msg);
99
+ }
100
+ };
101
+ this.iqOptionWs.socket().on("message", listener);
102
+ setTimeout(() => {
103
+ this.iqOptionWs.socket().off("message", listener);
104
+ reject("It was not possible to receive the profile.");
105
+ }, this.maxWaitProfile);
106
+ });
107
+ }
108
+ /**
109
+ * Send order.
110
+ *
111
+ * @param market
112
+ * @param side
113
+ * @param time
114
+ * @param userBalanceId
115
+ * @param profitPercent
116
+ * @param amount
117
+ */
118
+ async sendOrderBinary(market, side, time, userBalanceId, profitPercent, amount, orderId) {
119
+ // Validate inputs
120
+ InputValidator_1.InputValidator.validateMarket(market);
121
+ InputValidator_1.InputValidator.validateTime(time);
122
+ InputValidator_1.InputValidator.validateUserBalanceId(userBalanceId);
123
+ InputValidator_1.InputValidator.validateProfitPercent(profitPercent);
124
+ InputValidator_1.InputValidator.validateAmount(amount);
125
+ return this.orderPlacementQueue.schedule(async () => {
126
+ Core.logger().silly(`IQOptionApi::sendOrder`, {
127
+ market,
128
+ side,
129
+ time,
130
+ amount,
131
+ });
132
+ const requestID = orderId !== null && orderId !== void 0 ? orderId : RequestIdGenerator_1.RequestIdGenerator.getNext();
133
+ return this.iqOptionWs
134
+ .send(Core.IQOptionName.SEND_MESSAGE, {
135
+ name: Core.IQOptionAction.BINARY_OPEN_OPTION,
136
+ version: "1.0",
137
+ body: {
138
+ active_id: market,
139
+ direction: side,
140
+ option_type_id: 3,
141
+ expired: time,
142
+ price: amount,
143
+ user_balance_id: userBalanceId,
144
+ refund_value: 0, // Refund value not currently supported by API
145
+ profit_percent: profitPercent,
146
+ },
147
+ }, requestID)
148
+ .then(() => {
149
+ return new Promise((resolve, reject) => {
150
+ const listener = (message) => {
151
+ var _a;
152
+ const messageJSON = JSON.parse(message.toString());
153
+ if (messageJSON.name ===
154
+ Core.IQOptionAction.BINARY_OPTION_OPENED) {
155
+ if (messageJSON.request_id === String(requestID)) {
156
+ if ((_a = messageJSON.msg) === null || _a === void 0 ? void 0 : _a.message) {
157
+ this.iqOptionWs
158
+ .socket()
159
+ .off("message", listener);
160
+ reject(messageJSON.msg);
161
+ }
162
+ this.iqOptionWs
163
+ .socket()
164
+ .off("message", listener);
165
+ resolve(messageJSON.msg);
166
+ }
167
+ }
168
+ if (messageJSON.name ===
169
+ Core.IQOptionAction.BINARY_OPTION_REJECT) {
170
+ if (messageJSON.request_id === String(requestID)) {
171
+ }
172
+ }
173
+ };
174
+ this.iqOptionWs.socket().on("message", listener);
175
+ setTimeout(() => {
176
+ this.iqOptionWs.socket().off("message", listener);
177
+ reject("It was not possible to send order.");
178
+ }, this.maxWaitToSendOrder);
179
+ });
180
+ });
181
+ });
182
+ }
183
+ /**
184
+ * Send order digital.
185
+ *
186
+ * @param market
187
+ * @param side
188
+ * @param realTime
189
+ * @param userBalanceId
190
+ * @param amount
191
+ * @param instrumentIndex
192
+ * @param orderId
193
+ */
194
+ async sendOrderDigital(market, side, realTime, userBalanceId, amount, instrumentIndex, orderId) {
195
+ // Validate inputs
196
+ InputValidator_1.InputValidator.validateMarket(market);
197
+ InputValidator_1.InputValidator.validateTime(realTime);
198
+ InputValidator_1.InputValidator.validateUserBalanceId(userBalanceId);
199
+ InputValidator_1.InputValidator.validateAmount(amount);
200
+ if (instrumentIndex < 0) {
201
+ throw new Error("Instrument index must be >= 0");
202
+ }
203
+ Core.logger().silly(`IQOptionApi::sendOrder`, {
204
+ market,
205
+ side,
206
+ realTime,
207
+ amount,
208
+ });
209
+ const requestID = orderId !== null && orderId !== void 0 ? orderId : RequestIdGenerator_1.RequestIdGenerator.getNext();
210
+ const timeCalculated = Math.floor(parseInt(moment().tz("UTC").add(realTime, "minutes").format("mm"), undefined) / realTime) * realTime;
211
+ const time = moment
212
+ .tz(moment().tz("UTC").format("YYYY-MM-DD HH:00:00"), "UTC")
213
+ .add(timeCalculated, "minutes")
214
+ .format("HHmmss");
215
+ const sideDigital = side === Core.IQOptionModel.BUY ? "C" : "P";
216
+ const date = moment().tz("UTC").format("YYYYMMDD");
217
+ return this.iqOptionWs
218
+ .send(Core.IQOptionName.SEND_MESSAGE, {
219
+ name: Core.IQOptionAction.DIGITAL_OPEN_OPTION,
220
+ version: "2.0",
221
+ body: {
222
+ user_balance_id: userBalanceId,
223
+ instrument_id: `do${market}A${date}D${time}T${realTime}M${sideDigital}SPT`,
224
+ amount: String(amount),
225
+ asset_id: market,
226
+ instrument_index: instrumentIndex,
227
+ },
228
+ }, requestID)
229
+ .then(() => {
230
+ return new Promise((resolve, reject) => {
231
+ const listener = (message) => {
232
+ const messageJSON = JSON.parse(message.toString());
233
+ if (messageJSON.name ===
234
+ Core.IQOptionAction.DIGITAL_OPEN_PLACED &&
235
+ messageJSON.request_id === String(requestID) &&
236
+ messageJSON.status === 2000) {
237
+ this.iqOptionWs.socket().off("message", listener);
238
+ resolve(messageJSON.msg);
239
+ }
240
+ if (messageJSON.name ===
241
+ Core.IQOptionAction.DIGITAL_OPEN_PLACED &&
242
+ messageJSON.request_id === String(requestID) &&
243
+ messageJSON.status === 5000) {
244
+ this.iqOptionWs.socket().off("message", listener);
245
+ reject(messageJSON.msg);
246
+ }
247
+ };
248
+ this.iqOptionWs.socket().on("message", listener);
249
+ setTimeout(() => {
250
+ this.iqOptionWs.socket().off("message", listener);
251
+ reject("It was not possible to send order.");
252
+ }, this.maxWaitToSendOrder);
253
+ });
254
+ });
255
+ // });
256
+ }
257
+ /**
258
+ * Get initialization data.
259
+ */
260
+ getInitializationData() {
261
+ return this.orderPlacementQueue.schedule(async () => {
262
+ Core.logger().silly(`IQOptionApi::getInitializationData`);
263
+ const requestID = RequestIdGenerator_1.RequestIdGenerator.getNext();
264
+ return this.iqOptionWs
265
+ .send(Core.IQOptionName.SEND_MESSAGE, {
266
+ name: Core.IQOptionAction.GET_INITIALIZATION_DATA,
267
+ version: "3.0",
268
+ body: {},
269
+ }, requestID)
270
+ .then(() => {
271
+ return new Promise((resolve, reject) => {
272
+ const listener = (message) => {
273
+ const messageJSON = JSON.parse(message.toString());
274
+ if (messageJSON.name ===
275
+ Core.IQOptionAction.INITIALIZATION_DATA) {
276
+ this.iqOptionWs
277
+ .socket()
278
+ .off("message", listener);
279
+ resolve(messageJSON.msg);
280
+ }
281
+ };
282
+ this.iqOptionWs.socket().on("message", listener);
283
+ setTimeout(() => {
284
+ this.iqOptionWs.socket().off("message", listener);
285
+ reject("No initialization data.");
286
+ }, this.maxWaitToInitializationData);
287
+ });
288
+ });
289
+ });
290
+ }
291
+ /**
292
+ *
293
+ * @param market
294
+ * @returns
295
+ */
296
+ getDigitalOptionInstruments(market) {
297
+ // Validate inputs
298
+ InputValidator_1.InputValidator.validateMarket(market);
299
+ return this.orderPlacementQueue.schedule(async () => {
300
+ Core.logger().silly(`IQOptionApi::getDigitalOptionInstruments`);
301
+ const requestID = RequestIdGenerator_1.RequestIdGenerator.getNext();
302
+ return this.iqOptionWs
303
+ .send(Core.IQOptionName.SEND_MESSAGE, {
304
+ name: Core.IQOptionAction
305
+ .GET_DIGITAL_OPTION_INSTRUMENTS,
306
+ version: "1.0",
307
+ body: {
308
+ instrument_type: "digital-option",
309
+ asset_id: market,
310
+ },
311
+ }, requestID)
312
+ .then(() => {
313
+ return new Promise((resolve, reject) => {
314
+ const listener = (message) => {
315
+ const messageJSON = JSON.parse(message.toString());
316
+ if (messageJSON.request_id === String(requestID)) {
317
+ this.iqOptionWs
318
+ .socket()
319
+ .off("message", listener);
320
+ resolve(messageJSON.msg);
321
+ }
322
+ };
323
+ this.iqOptionWs.socket().on("message", listener);
324
+ setTimeout(() => {
325
+ this.iqOptionWs.socket().off("message", listener);
326
+ reject("No digital instruments data.");
327
+ }, this.maxWaitToGetDigitalInstrumentData);
328
+ });
329
+ });
330
+ });
331
+ }
332
+ /**
333
+ * Get next request id.
334
+ * @deprecated Use RequestIdGenerator.getNext() instead
335
+ */
336
+ getNextRequestID() {
337
+ return this.nextRequestIDQueue.schedule(() => {
338
+ return Promise.resolve(RequestIdGenerator_1.RequestIdGenerator.getNext());
339
+ });
340
+ }
341
+ }
342
+ exports.IQOptionApi = IQOptionApi;
343
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVFPcHRpb25BcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL1NlcnZpY2UvSVFPcHRpb25TZXJ2aWNlL0lRT3B0aW9uQXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7O0dBT0c7QUFDSCwyQ0FBb0M7QUFDcEMsMENBQTBDO0FBQzFDLDhCQUE4QjtBQUM5Qix1REFBb0Q7QUFDcEQsNkNBQTBDO0FBQzFDLDREQUF5RDtBQUN6RCxvRUFBaUU7QUFFakU7O0dBRUc7QUFDSCxNQUFhLFdBQVc7SUErQ3BCOzs7OztPQUtHO0lBQ0gsWUFBWSxLQUFhLEVBQUUsUUFBZ0I7UUFwRDNDOztXQUVHO1FBQ2MsbUJBQWMsR0FBVyxJQUFJLENBQUM7UUFFL0M7O1dBRUc7UUFDYyx1QkFBa0IsR0FBVyxJQUFJLENBQUM7UUFFbkQ7O1dBRUc7UUFDYyxnQ0FBMkIsR0FBVyxJQUFJLENBQUM7UUFFNUQ7O1dBRUc7UUFDYyxzQ0FBaUMsR0FBVyxJQUFJLENBQUM7UUFhbEU7O1dBRUc7UUFDYyx3QkFBbUIsR0FBRyxJQUFJLG9CQUFVLENBQUM7WUFDbEQsYUFBYSxFQUFFLENBQUM7WUFDaEIsT0FBTyxFQUFFLENBQUM7U0FDYixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNjLHVCQUFrQixHQUFHLElBQUksb0JBQVUsQ0FBQztZQUNqRCxhQUFhLEVBQUUsQ0FBQztTQUNuQixDQUFDLENBQUM7UUFTQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDaEQsa0JBQWtCO1FBQ2xCLCtCQUFjLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLCtCQUFjLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGlDQUFlLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzVELElBQUks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
@@ -0,0 +1,7 @@
1
+ import { IQOptionTime } from "./Model";
2
+ /**
3
+ * IQOption Expired.
4
+ *
5
+ * @param time
6
+ */
7
+ export declare const iqOptionExpired: (time: IQOptionTime) => number;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.iqOptionExpired = void 0;
4
+ /*
5
+ * Copyright (C) 2020 Wellington Rocha
6
+ * All Rights Reserved.
7
+ *
8
+ * Unauthorized copying of this file, via any medium is strictly prohibited.
9
+ *
10
+ * Proprietary and confidential.
11
+ */
12
+ const moment = require("moment");
13
+ /**
14
+ * IQOption Expired.
15
+ *
16
+ * @param time
17
+ */
18
+ const iqOptionExpired = (time) => {
19
+ if (moment().seconds() > 30) {
20
+ time = time + 1;
21
+ }
22
+ const m = moment().add(time, "minutes").utcOffset(0);
23
+ m.set({ second: 0, millisecond: 0 });
24
+ return m.unix();
25
+ };
26
+ exports.iqOptionExpired = iqOptionExpired;
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVFPcHRpb25FeHBpcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9TZXJ2aWNlL0lRT3B0aW9uU2VydmljZS9JUU9wdGlvbkV4cGlyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7Ozs7R0FPRztBQUNILGlDQUFrQztBQUdsQzs7OztHQUlHO0FBQ0ksTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUFrQixFQUFVLEVBQUU7SUFDMUQsSUFBSSxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUMxQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBQ0QsTUFBTSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBUFcsUUFBQSxlQUFlLG1CQU8xQiJ9
@@ -0,0 +1,55 @@
1
+ import { Readable } from "stream";
2
+ import * as Core from "../..";
3
+ import { IIQOptionStream } from "./Interface/IIQOptionStream";
4
+ import { IQOptionWs } from "./IQOptionWs";
5
+ /**
6
+ * Stream candle generated.
7
+ */
8
+ export declare class IQOptionStreamCandleGenerated extends Readable implements IIQOptionStream {
9
+ /**
10
+ * Socket.
11
+ */
12
+ private readonly iqOptionWS;
13
+ /**
14
+ * Market.
15
+ */
16
+ private readonly market;
17
+ /**
18
+ * Time.
19
+ */
20
+ private readonly time;
21
+ /**
22
+ * Constructor.
23
+ *
24
+ * @param iqOptionWS
25
+ * @param market
26
+ * @param time
27
+ */
28
+ constructor(iqOptionWS: IQOptionWs, market: Core.IQOptionMarket, time: Core.IQOptionTime);
29
+ /**
30
+ * Default read
31
+ */
32
+ _read(): void;
33
+ /**
34
+ * Listerner event
35
+ */
36
+ listener(): Promise<void>;
37
+ /**
38
+ * Start stream.
39
+ */
40
+ startStream(): Promise<void>;
41
+ /**
42
+ * Subscribe
43
+ *
44
+ * @param market string
45
+ * @param time number
46
+ * @returns void
47
+ */
48
+ subscribe(market: Core.IQOptionMarket, time: Core.IQOptionTime): Promise<void>;
49
+ /**
50
+ * On message.
51
+ *
52
+ * @param message
53
+ */
54
+ private parseMessage;
55
+ }
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IQOptionStreamCandleGenerated = void 0;
4
+ /*
5
+ * Copyright (C) 2020 Wellington Rocha
6
+ * All Rights Reserved.
7
+ *
8
+ * Unauthorized copying of this file, via any medium is strictly prohibited.
9
+ *
10
+ * Proprietary and confidential.
11
+ */
12
+ const stream_1 = require("stream");
13
+ const Core = require("../..");
14
+ /**
15
+ * Stream candle generated.
16
+ */
17
+ class IQOptionStreamCandleGenerated extends stream_1.Readable {
18
+ /**
19
+ * Constructor.
20
+ *
21
+ * @param iqOptionWS
22
+ * @param market
23
+ * @param time
24
+ */
25
+ constructor(iqOptionWS, market, time) {
26
+ super({ objectMode: true });
27
+ this.iqOptionWS = iqOptionWS;
28
+ this.market = market;
29
+ this.time = time;
30
+ }
31
+ /**
32
+ * Default read
33
+ */
34
+ _read() { }
35
+ /**
36
+ * Listerner event
37
+ */
38
+ async listener() {
39
+ Core.logger().silly("IQOptionStreamCandleGenerated::listener");
40
+ this.iqOptionWS
41
+ .socket()
42
+ .on("message", (data) => this.parseMessage(data.toString()));
43
+ return Promise.resolve();
44
+ }
45
+ /**
46
+ * Start stream.
47
+ */
48
+ async startStream() {
49
+ Core.logger().silly("IQOptionStreamCandleGenerated::startStream");
50
+ return this.subscribe(this.market, this.time)
51
+ .then(() => this.listener())
52
+ .then(() => Promise.resolve())
53
+ .catch((e) => Promise.reject(e));
54
+ }
55
+ /**
56
+ * Subscribe
57
+ *
58
+ * @param market string
59
+ * @param time number
60
+ * @returns void
61
+ */
62
+ subscribe(market, time) {
63
+ Core.logger().silly("IQOptionStreamCandleGenerated::subscribe");
64
+ if (!this.iqOptionWS.isConnected()) {
65
+ return Promise.reject("Socket is not connected.");
66
+ }
67
+ const message = {
68
+ name: Core.IQOptionAction.CANDLE_GENERATED,
69
+ params: {
70
+ routingFilters: { active_id: market, size: time },
71
+ },
72
+ };
73
+ return Promise.resolve(this.iqOptionWS.send(Core.IQOptionName.SUBSCRIBE_MESSAGE, message));
74
+ }
75
+ /**
76
+ * On message.
77
+ *
78
+ * @param message
79
+ */
80
+ parseMessage(message) {
81
+ const messageJSON = JSON.parse(message);
82
+ if (messageJSON.name === Core.IQOptionAction.CANDLE_GENERATED) {
83
+ this.emit("data", messageJSON.msg);
84
+ }
85
+ }
86
+ }
87
+ exports.IQOptionStreamCandleGenerated = IQOptionStreamCandleGenerated;
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVFPcHRpb25TdHJlYW1DYW5kbGVHZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL1NlcnZpY2UvSVFPcHRpb25TZXJ2aWNlL0lRT3B0aW9uU3RyZWFtQ2FuZGxlR2VuZXJhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7O0dBT0c7QUFDSCxtQ0FBa0M7QUFDbEMsOEJBQThCO0FBSTlCOztHQUVHO0FBQ0gsTUFBYSw2QkFDVCxTQUFRLGlCQUFRO0lBa0JoQjs7Ozs7O09BTUc7SUFDSCxZQUNJLFVBQXNCLEVBQ3RCLE1BQTJCLEVBQzNCLElBQXVCO1FBRXZCLEtBQUssQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssS0FBVSxDQUFDO0lBRXZCOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFFBQVE7UUFDakIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxVQUFVO2FBQ1YsTUFBTSxFQUFFO2FBQ1IsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxXQUFXO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUNsRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ3hDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDM0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUM3QixLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksU0FBUyxDQUNaLE1BQTJCLEVBQzNCLElBQXVCO1FBRXZCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRztZQUNaLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQjtZQUMxQyxNQUFNLEVBQUU7Z0JBQ0osY0FBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO2FBQ3BEO1NBQ0osQ0FBQztRQUNGLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FDckUsQ0FBQztJQUNOLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssWUFBWSxDQUFDLE9BQWU7UUFDaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzVELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxDQUFDO0lBQ0wsQ0FBQztDQUNKO0FBckdELHNFQXFHQyJ9
@@ -0,0 +1,33 @@
1
+ import { Readable } from "stream";
2
+ import { IIQOptionStream } from "./Interface/IIQOptionStream";
3
+ import { IQOptionWs } from "./IQOptionWs";
4
+ /**
5
+ * Stream candle generated.
6
+ */
7
+ export declare class IQOptionStreamOptionClose extends Readable implements IIQOptionStream {
8
+ /**
9
+ * Socket.
10
+ */
11
+ private readonly iqOptionWS;
12
+ /**
13
+ * Constructor.
14
+ *
15
+ * @param iqOptionWS
16
+ * @param market
17
+ */
18
+ constructor(iqOptionWS: IQOptionWs);
19
+ /**
20
+ * Default read
21
+ */
22
+ _read(): void;
23
+ /**
24
+ * Start stream.
25
+ */
26
+ startStream(): Promise<void>;
27
+ /**
28
+ * On message.
29
+ *
30
+ * @param message
31
+ */
32
+ private parseMessage;
33
+ }