From 9f953914eb5964997a3cc8b7d3774e44d63e9fe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Dezzy?= Date: Mon, 5 Aug 2024 14:29:08 -0300 Subject: [PATCH] feat(iqoption): Update websocket URL to use gomerebroker.com --- .../iqoption/typescript/placeDigitalOption.ts | 8 +- packages/iqoption/lib/IQOptionProvider.ts | 4 +- packages/iqoption/lib/types.ts | 359 +++++++++++++++++- .../iqoption/lib/websocket/WebSocketClient.ts | 2 +- .../digital-options/PlaceDigitalOption.ts | 33 +- 5 files changed, 389 insertions(+), 17 deletions(-) diff --git a/examples/iqoption/typescript/placeDigitalOption.ts b/examples/iqoption/typescript/placeDigitalOption.ts index f56cc0a..a96a505 100644 --- a/examples/iqoption/typescript/placeDigitalOption.ts +++ b/examples/iqoption/typescript/placeDigitalOption.ts @@ -1,7 +1,7 @@ import '../../loadEnv' import { Hemes } from '@hemes/core' -import { IQOptionProvider, BaseIQOptionProvider } from '@hemes/iqoption' +import { IQOptionProvider, BaseIQOptionProvider, ActivePair } from '@hemes/iqoption' async function run() { const hemes = new Hemes(IQOptionProvider).getProvider() @@ -12,10 +12,10 @@ async function run() { }) const position = await account.placeDigitalOption({ - active: 'EURUSD', + active: ActivePair.APPLE, direction: 'call', - expiration_period: 'm1', - price: 1, + expiration_period: 'm5', + price: 1000, }) console.log('\n', 'Position:', JSON.stringify(position), '\n') diff --git a/packages/iqoption/lib/IQOptionProvider.ts b/packages/iqoption/lib/IQOptionProvider.ts index 80ec89b..0eceb12 100644 --- a/packages/iqoption/lib/IQOptionProvider.ts +++ b/packages/iqoption/lib/IQOptionProvider.ts @@ -25,7 +25,7 @@ export class IQOptionProvider implements BaseIQOptionProvider { constructor() { this.api = axios.create({ - baseURL: 'https://trade.avalonbroker.io/api', + baseURL: 'https://trade.gomerebroker.com/api', }) this.webSocket = new WebSocketClient() @@ -46,7 +46,7 @@ export class IQOptionProvider implements BaseIQOptionProvider { await this.webSocket.subscribe() const authApi = axios.create({ - baseURL: 'https://api.trade.avalonbroker.io/v2/', + baseURL: 'https://api.trade.gomerebroker.com/v2/', }) if (this.isCorsBypassEnabled) { diff --git a/packages/iqoption/lib/types.ts b/packages/iqoption/lib/types.ts index 32b56b9..9b54e8d 100644 --- a/packages/iqoption/lib/types.ts +++ b/packages/iqoption/lib/types.ts @@ -20,7 +20,7 @@ export interface BaseIQOptionProvider { } export interface PlaceDigitalOption { - active: Active + active: ActivePair direction: PositionDirection expiration_period: DigitalOptionExpirationPeriod price: number @@ -551,3 +551,360 @@ export type Active = | 'CAN' | 'VIAC' | 'TFC' + | 'BTC' + + +export enum ActivePair { + ALL = 0, + EURRUB = 9, + COMMBK = 13, + DAIM = 14, + DBFRA = 15, + EOAN = 16, + BPLON = 23, + GAZPROM = 27, + ROSNEFT = 28, + SBERS = 29, + YAHOO = 40, + AIG = 41, + BOA = 42, + VERIZON = 56, + WMART = 57, + DAX30 = 66, + DJIA = 67, + FTSE = 68, + NSDQ = 69, + NK = 70, + SP = 71, + BTCX = 73, + + EURUSD_OTC = 76, + EURGBP_OTC = 77, + USDCHF_OTC = 78, + EURJPY_OTC = 79, + NZDUSD_OTC = 80, + GBPUSD_OTC = 81, + EURRUB_OTC = 82, + USDRUB_OTC = 83, + GBPJPY_OTC = 84, + USDJPY_OTC = 85, + AUDCAD_OTC = 86, + + YANDEX = 95, + + PAN = 97, + + + GBPCHF = 103, + GBPAUD = 104, + + BMW = 110, + LUFTHANSA = 111, + + SMI_INDEX = 166, + SSE_INDEX = 169, + HANG_SENG = 170, + + SPASX200 = 208, + TOPIX500 = 209, + DX = 210, + + SIN_FAKE = 213, + + BRENT_OIL_JUL_16 = 215, + + NTDOY = 218, + USDTRY = 220, + + + BTCUSD = 816, + XRPUSD = 817, + ETHUSD = 818, + LTCUSD = 819, + DSHUSD = 821, + BCHUSD = 824, + OMGUSD = 825, + ZECUSD = 826, + ETCUSD = 829, + BTCUSD_L = 830, + ETHUSD_L = 831, + LTCUSD_L = 834, + BCHUSD_L = 836, + QTMUSD = 845, + XLMUSD = 847, + TRXUSD = 858, + EOSUSD = 864, + IOTUSD_L = 1116, + XLMUSD_L = 1117, + NEOUSD_L = 1118, + ADAUSD_L = 1119, + XEMUSD_L = 1120, + TRXUSD_L = 1242, + EOSUSD_L = 1244, + + + + EURUSD = 1, + EURGBP = 2, + GBPJPY = 3, + EURJPY = 4, + GBPUSD = 5, + USDJPY = 6, + AUDCAD = 7, + NZDUSD = 8, + USDRUB = 10, + USDCHF = 72, + AUDUSD = 99, + USDCAD = 100, + AUDJPY = 101, + GBPCAD = 102, + EURCAD = 105, + CHFJPY = 106, + CADCHF = 107, + EURAUD = 108, + USDNOK = 168, + EURNZD = 212, + USDSEK = 219, + USDPLN = 866, + AUDCHF = 943, + AUDNZD = 944, + CADJPY = 945, + EURCHF = 946, + GBPNZD = 947, + NZDCAD = 948, + NZDJPY = 949, + EURNOK = 951, + CHFSGD = 952, + EURSGD = 955, + AUDNOK = 986, + AUDSEK = 988, + AUDSGD = 989, + CADNOK = 993, + CADPLN = 994, + EURDKK = 1007, + EURMXN = 1008, + EURZAR = 1011, + NOKJPY = 1024, + NOKSEK = 1025, + NZDSGD = 1031, + SEKJPY = 1038, + SGDJPY = 1041, + USDDKK = 1045, + NZDCHF = 1048, + USDCZK = 1050, + USDHUF = 1051, + + AMAZON = 31, + APPLE = 32, + BAIDU = 33, + CISCO = 34, + FACEBOOK = 35, + GOOGLE = 36, + INTEL = 37, + MSFT = 38, + CITI = 45, + COKE = 46, + GE = 48, + GM = 49, + GS = 50, + JPM = 51, + MCDON = 52, + MORSTAN = 53, + NIKE = 54, + XAUUSD = 74, + XAGUSD = 75, + ALIBABA = 87, + TWITTER = 113, + FERRARI = 133, + TESLA = 167, + MMM_US = 252, + ABT_US = 253, + ABBV_US = 254, + ACN_US = 255, + ATVI_US = 256, + ADBE_US = 258, + AAP_US = 259, + AA_US = 269, + MO_US = 278, + AMGN_US = 290, + T_US = 303, + ADSK_US = 304, + BAC_US = 313, + BBY_US = 320, + BA_US = 324, + BMY_US = 328, + CAT_US = 338, + CTL_US = 344, + CVX_US = 349, + CTAS_US = 356, + CTXS_US = 360, + CL_US = 365, + CMCSA_US = 366, + CXO_US = 369, + COP_US = 370, + ED_US = 371, + COST_US = 374, + CVS_US = 379, + DHI_US = 380, + DHR_US = 381, + DRI_US = 382, + DVA_US = 383, + DAL_US = 386, + DVN_US = 388, + DLR_US = 390, + DFS_US = 391, + DISCA_US = 392, + DOV_US = 397, + DTE_US = 400, + ETFC_US = 404, + EMN_US = 405, + EBAY_US = 407, + ECL_US = 408, + EIX_US = 409, + EMR_US = 413, + ETR_US = 415, + EQT_US = 417, + EFX_US = 418, + EQR_US = 420, + ESS_US = 421, + EXPD_US = 426, + EXR_US = 428, + XOM_US = 429, + FFIV_US = 430, + FRT_US = 433, + FIS_US = 435, + FITB_US = 436, + FSLR_US = 437, + FE_US = 438, + FISV_US = 439, + FLS_US = 441, + FMC_US = 443, + FBHS_US = 448, + FCX_US = 450, + GILD_US = 460, + HAS_US = 471, + HON_US = 480, + IBM_US = 491, + KHC_US = 513, + LMT_US = 528, + MA_US = 542, + MDT_US = 548, + MU_US = 553, + NFLX_US = 569, + NEE_US = 575, + NVDA_US = 586, + PYPL_US = 597, + PFE_US = 603, + PM_US = 605, + PG_US = 617, + QCOM_US = 626, + DGX_US = 628, + RTN_US = 630, + CRM_US = 645, + SLB_US = 647, + SBUX_US = 666, + SYK_US = 670, + DIS_US = 689, + VZ_US = 723, + V_US = 726, + WMT_US = 729, + WBA_US = 730, + SNAP = 756, + AMD = 760, + ALGN = 761, + ANSS = 762, + DRE = 772, + IDXX = 775, + RMD = 781, + SU = 783, + TFX = 784, + TMUS = 785, + QQQ = 796, + SPY = 808, + DBX = 889, + SPOT = 891, + LLOYL_CHIX = 894, + VODL_CHIX = 895, + BARCL_CHIX = 896, + TSCOL_CHIX = 897, + BPL_CHIX = 898, + HSBAL_CHIX = 899, + RBSL_CHIX = 900, + BLTL_CHIX = 901, + MRWL_CHIX = 902, + STANL_CHIX = 903, + RRL_CHIX = 904, + MKSL_CHIX = 905, + BATSL_CHIX = 906, + ULVRL_CHIX = 908, + EZJL_CHIX = 909, + ADSD_CHIX = 910, + ALVD_CHIX = 911, + BAYND_CHIX = 912, + BMWD_CHIX = 913, + CBKD_CHIX = 914, + COND_CHIX = 915, + DAID_CHIX = 916, + DBKD_CHIX = 917, + DPWD_CHIX = 919, + DTED_CHIX = 920, + EOAND_CHIX = 921, + MRKD_CHIX = 922, + TKAD_CHIX = 924, + VOW3D_CHIX = 925, + ENELM_CHIX = 926, + ENIM_CHIX = 927, + FCAM_CHIX = 928, + PIRCM_CHIX = 929, + PSTM_CHIX = 930, + TITM_CHIX = 931, + UCGM_CHIX = 932, + SANE_CHIX = 937, + BBVAE_CHIX = 938, + TEFE_CHIX = 939, + AIRP_CHIX = 940, + HEIOA_CHIX = 941, + ORP_CHIX = 942, + JUVEM = 958, + MANU = 966, + UKOUSD = 969, + USOUSD = 971, + EEM = 1203, + FXI = 1204, + IWM = 1205, + GDX = 1206, + XOP = 1209, + XLK = 1210, + XLE = 1211, + XLU = 1212, + IEMG = 1213, + XLY = 1214, + IYR = 1215, + SQQQ = 1216, + SMH = 1218, + EWJ = 1219, + XLB = 1221, + DIA = 1222, + TLT = 1223, + SDS = 1224, + EWW = 1225, + XME = 1227, + QID = 1229, + ACB = 1288, + CGC = 1289, + CRON = 1290, + GWPH = 1291, + MJ = 1292, + TLRY = 1293, + BUD = 1294, + LYFT = 1313, + PINS = 1315, + ZM = 1316, + UBER = 1334, + MELI = 1335, + BYND = 1336, + WORK = 1343, + FDJP = 1350, + VIAC = 1352, + TFC = 13 +} diff --git a/packages/iqoption/lib/websocket/WebSocketClient.ts b/packages/iqoption/lib/websocket/WebSocketClient.ts index f912f1f..dd6a012 100644 --- a/packages/iqoption/lib/websocket/WebSocketClient.ts +++ b/packages/iqoption/lib/websocket/WebSocketClient.ts @@ -32,7 +32,7 @@ export class WebSocketClient implements BaseWebSocketClient { public async subscribe(): Promise { return new Promise(resolve => { - this.webSocket = new WebSocket('wss://ws.trade.avalonbroker.io/echo/websocket') + this.webSocket = new WebSocket('wss://ws.trade.gomerebroker.com/echo/websocket') this.webSocket.on('open', () => { console.log('WebSocket connected') diff --git a/packages/iqoption/lib/websocket/events/requests/digital-options/PlaceDigitalOption.ts b/packages/iqoption/lib/websocket/events/requests/digital-options/PlaceDigitalOption.ts index d1f6610..aaf5625 100644 --- a/packages/iqoption/lib/websocket/events/requests/digital-options/PlaceDigitalOption.ts +++ b/packages/iqoption/lib/websocket/events/requests/digital-options/PlaceDigitalOption.ts @@ -1,7 +1,7 @@ import { formatToTimeZone } from 'date-fns-timezone' import { - Active, + ActivePair, DigitalOptionExpirationPeriod, PositionDirection, } from '../../../../types' @@ -15,17 +15,19 @@ type AbbreviatedPositionDirection = { interface PlaceDigitalOptionRequestMessage { name: 'digital-options.place-digital-option' - version: '1.0' + version: '2.0' body: { user_balance_id: number instrument_id: string amount: string + instrument_index: number + asset_id: number } } interface PlaceDigitalOptionRequestArgs { user_balance_id: number - active: Active + active: ActivePair direction: PositionDirection expiration_period: DigitalOptionExpirationPeriod price: number @@ -36,8 +38,16 @@ const abbreviatedPositionDirection: AbbreviatedPositionDirection = { put: 'P', } +// do816A20240805D165000T5MCSPT +// do1A20240805D165000T1MPSPT + +// do1A20240805D172500T5CSPT + +// doBITCOIN202408051650PT5MCSPT +// doEURUSD202408051700PT5MCSPT + function buildDigitalOptionIdentifier( - active: Active, + active: ActivePair, expirationPeriod: DigitalOptionExpirationPeriod, direction: PositionDirection ) { @@ -59,12 +69,15 @@ function buildDigitalOptionIdentifier( const digitalOptionIdentifier = 'do' + active + - expirationTimeFormatted + - 'PT' + + 'A' + + expirationTimeFormatted.substring(0, 8) + // dateFormat + 'D' + + expirationTimeFormatted.substring(8, 12) + // timeFormat + '00T' + expirationPeriodTime + - 'M' + + "M" + abbreviatedPositionDirection[direction] + - 'SPT' + 'SPT'; return digitalOptionIdentifier } @@ -92,11 +105,13 @@ export class PlaceDigitalOptionRequest extends Request< return { name: 'digital-options.place-digital-option', - version: '1.0', + version: '2.0', body: { user_balance_id, instrument_id: digitalOptionIdentifier, amount: String(price), + instrument_index: 797064, + asset_id: Number(active) }, } }