Huk microserviciota ruwachkayku Tinkoff Invest API kaqwan llamk’ayta automatizacionpaq corredor willakuykunawan chaymanta comisiones yupaywan.

Программирование

Tinkoff Investmentspaq servicio de estadística nisqa wiñachiypa qhipanpi inspiradores nisqakunam karqan:

¿Imamantataq rimarisunchik?

  • Wiñariymanta aplicasqa partellan.
  • Chiqap yachay, experiencia, chaykunam ancha allin qullqi instrumentukunawan llamkaypi.
  • Llamkanapaq asuntokunamanta llapan qawariy

Chaymi, estadísticas comerciales nisqakunata yupayta munani hinaspa allinta ruwayta munani. 

Estadística serviciota llamkanamanta llamkanamanta ruway: 

  1. Tinkoff Invest API nisqawan tinkiynin
  2. Tinkoff Invest API kaqmanta willayta huk maskaqpi siq’iy
  3. Corredor willakuykunata hinaspa ruwaykunata chaskiy
  4. Interés nisqa willakuykunata yupay hinaspa lluqsiy
  5. Tukuchiykuna, hamuq pachapaq yuyaykuna ima

Tinkoff Invest API nisqawan tinkiynin

API kaqwan tinkinapaq, mayqin sdk kaqtapas qillqamanta hap’iyta atikunki https://github.com/Tinkoff/investAPI#sdk . Utaq npm paquete ` tinkoff-sdk-grpc-js `. Importantemi paqueteta musuq layaman musuqchasqa kananpaq ruwaqkuna. Churay

npm i tinkoff-sdk-grpc-js nisqa

Checking

const { paqarichiySdk } = mañakuy (‘tinkoff-sdk-grpc-js’);   // Kayhinata tarinapaq token   const TOKEN = ‘YOURAPI’;   // TCS registrokunapi tarinapaq ruwanapa sutin. const appSuti = ‘tcsstat’;   const sdk = Sdk ruway (TOKEN, appSuti); (async () => {     consola.log (suyay sdk.users.getAccounts ()); }) ();

Ruway: huk lista yupayniykimanta rikuchikunqa consola kaqpi. Ejemplopaq, t’aqwirisun matices nisqakunata:Huk microserviciota ruwachkayku Tinkoff Invest API kaqwan llamk'ayta automatizacionpaq corredor willakuykunawan chaymanta comisiones yupaywan.

  • Lista yupaykunapi kan huk “Inversión banco”, mayqinwanchus mana API llamk’achispa llamk’ayta atikunkichu
  • Ama hina kaspa, chakrakunaqa camelCase nisqapi hamun, qillqakunapitaq kay chakrakunaqa under_score nisqapi rikuchisqa kachkan. 
  • Tukuy hinantinpin kay hina kanqa, chaymi mana documentacionmanta huk chakrata hap’ispallachu copiayta atiwaq.

Hapinalla:

  • Kay codigotaqa tarinkimanmi proyecto sucursalpi

https://github.com/pskucherov/tcsstat/sacha/1 kaq llankay https://github.com/pskucherov/tcsstat/tupanachiy/1 kaq llankay   

Tinkoff Invest API kaqmanta willayta huk maskaqpi siq’iy

Next.js y socket.io nisqakunatam hapirqani. Kayqa manam sinchi yuyaychaychu, akllay munasqaykiman hina. 

npx ruway-qhipa-app@qhipa npm i socket.io socket.io-cliente

Chaylla amistad llamkanaman purinchik next+socket+investapi, chaymanta kay llamkanamanta Util t’aqapi tukuy detallespaq qhaway.  Chay detallekunatan willasaq: 

  • nodejs (servidor) ladupiqa, pages/api/investapi.js willañiqim kachkan. Kaypi socket.io servidorta ruwayku chaymanta investapi kaqwan tinkiyku.
  • Navegador (cliente) lado kaqpi, huk socket kaqnintakama servidorman tinkiyku chaymanta yupay willayta corredormanta mañayku. 
  • Servidorpi corredormanta willayta chaskiyku, chaymanta clienteman apachiyku. Cliente kaqpi chaskisqa kaqtinku, navegador kaqpi rikuchikunku. 

Ruway:  navegador consola kaqpi yupaykunamanta willayta qhawayta atiyku. Chayqa, qhipa ruwaypi, yupaykunamanta willayta rikurqayku servidor consola kaqpi (nodejs), kunan ruwaypi, kay willayta clienteman (navegador) t’ikrarqayku.

Huk microserviciota ruwachkayku Tinkoff Invest API kaqwan llamk'ayta automatizacionpaq corredor willakuykunawan chaymanta comisiones yupaywan.

Kunanqa ruwasun chaymanta huk yupayta akllayta atikunki maskaqmanta, chaymanta sichus mana token kanchu, chaymanta huk pantay consolaman apachisqa. Llamkayqa sasam, manataqmi imapas musuqchu, chaymi commitkunaman enlacekunallata quni

  1. https://github.com/pskucherov/tcsstat/commit/7e1ac57061e5e971588479015b06d8814d6609a9 nisqa yachay wasi
  2. https://github.com/pskucherov/tcsstat/commit/b28ac973a57494f5232589b4cb6b9fb13b8af759 nisqa yachay wasi 

Hapinalla:

  • Imaynatataq qatiqninpi amistadkunata tarina hinaspa socket nisqapiqa kaypi allinta willakun . 
  • Amistadpa código next+socket+investapi:

https://github.com/pskucherov/tcsstat/commit/a443a4ac1bb4f0aa898f638128755fe7391ee381 Pikunapaqchus kay patamanta sasa, chaymanta kay etapapi qhipakuyku chaymanta códigowan atipanakuyku. Tapukuyniyuq kaspaqa – tapukuy. https://github.com/pskucherov/tcsstat/sacha/2 kaq llankay https://github.com/pskucherov/tcsstat/tupanachiy/1 kaq llankay…2 kaq llankay

Corredor willakuykunata hinaspa ruwaykunata chaskiy

Kimsa ruwaykunam kan corredor nisqamanta willakuykunata hinaspa ruwaykunata chaskinapaq

  1. Willayta Broker nisqamanta chaskiy
  2. GetDividendosHawa llaqtamantaEmisora
  3. GetOperacionesByCursor nisqa

Qallariymantapachan ancha allin yachay: 

  • Chay corredor willakuyqa T-3 nisqapi ruwasqa kachkan, i.e. chaypi qhatuykunata qhawarichinku cheqaq hunt’asqa kasqanku qhepaman. 
  • Chayman hina, kay iskay p’unchay qhepa p’unchaypi kay willakuyta mañakunki chayqa, kinsa p’unchaymantan listoña kanqa. 
  • Qhipa p’unchawkunapaq tratokuna ruwanapaq, ruwaykunata chaskinapaq métodota llamk’achiyku, ichaqa yuyariy idninku chaymanta contenidonku tikrakunmanku corredor willakuy ruwasqa kasqanmanta.

Willayta Broker nisqamanta chaskiy

Huk corredor willayta chaskinaykipaq, id yupayta, qallariy p’unchawta chaymanta willakuypa tukukuy p’unchawninta hap’inayki tiyan, ichaqa mana aswan 31 p’unchawkunamanta. Huk mañakuyta apachiyku huk willayta ruwanapaq API kaqman kay generate _broker_report_request kaqpi , huk taskId kutichiypi tariy. Chay qhipaman, kay taskId llamk’achispa, get _broker_report_response kaqmanta willayta jap’iyku .

Chaynaqa documentacionmi nin, chiqaptaqa kanmi matices. Makiykikunata qaway:

  • TaskID wiñaypaq waqaychanayki tiyan exactamente kay p’unchawkunapaq. 
  • Yaqachus hina sichus chinkachinki chayqa, chaymanta mañasqa p’unchawkunapaq willakuyqa ñawpaqta hamunqa miray mañakuyman kutichispa, 
  • Hinaspa chaymantaqa manan hamunqachu ni imapipas.

Codigo qillqayta qallarisun

P’unchawta jap’inapaq ruway, kunan p’unchawmanta qichuyta qhawarispa

const getDateSubDay = (subP’unchaw = 5, qallariy = chiqap) => {     const p’unchaw = musuq P’unchaw ();     p’unchaw.setUTCDate (p’unchaw.getUTCDate () – subP’unchaw);       sichus (qallariy) {         p’unchaw.setUTCHours (0, 0, 0, 0);     } else {         p’unchaw.setUTCHours (23, 59, 59, 999);     }       kutiy p’unchaw; };

Willakuy miray mañakuy 

const brokerReport = suyay (sdk.operations.getBrokerReport)({         paqarichiyBrokerWillakuyMañakuy: {             yupayId,             manta,             manta,         }, });

Tukusqa:

  • Kamachiypa ñawpaq ruwayninpa rurun hina, taskId nisqatam chaskinchik. 
  • Willakuyqa corredorpa ladunpi paqarichiyta qallarikun. Mayk’aq wakichisqa mana riqsisqachu, suyayku chaymanta sapa kuti taskId aysayku willayta suyaspa.
  • Imanasqa? Imaraykuchus willakuy mana wakichisqa kaptinqa pantayta wikch’un. Sichus willakuy mana listochu kachkan corredorpa ladunpi, chaymanta kayqa pantaymi codigoykipi. Ama hina kaspa, ruway: 30058|INVALID_ARGUMENT|llamk’ana manaraq tukusqachu, ama hina kaspa, qhipaman hukmanta kallpachakuy

Willayta suyanapaq, chaskinapaq codigoqa kayhinam rikchakun.

const timer = async pacha => {     musuq Promesa kutichiy (allichay => setTimeout (allichay, pacha)); }   const getBrokerResponseByTaskId = async (taskId, p’anqa = 0) => {     kallpachakuy {         kutiy suyay (sdk.operations.getBrokerReport)({             getBrokerReportRequest: {                 taskId,                 p’anqa,             },         });     } hap’iy (e) {         consola.log (‘suyay’, e);         suyay pacha yupay(10000);         kutiy suyay getBrokerResponseByTaskId (taskId, p’anqa);     } };

Chaymantataq chay kikin magiapas pasakun. Scriptniyku sayachiyku, wakmanta qallariyku, mana taskIdniyuqchu kayku. taskId mañakuywan codigo ruwayku, ichaqa manaña taskIdta jap’iykuchu, aswanpas willayta chaylla. ¡Magia! Hinaspapas tukuy imapas allinmi kanman kayna kaptinqa. Ichaqa huk killamanta mana ima datospas kanqachu. Allinmi : .

  • Kaypipas kaypim huk chikan teoría nisqamanta willakun .
  • Código nisqa huñuspaqa, borradorqa kayhinam rikchakunqa.

https://github.com/pskucherov/tcsstat/sacha/paso3.1 https://github.com/pskucherov/tcsstat/tupanachiy/paso3.1

  • Sichus pipas kaywan tupan chayqa, allin hamusqayki chay asuntoman . Kay magiata allichasqanku qhepamanmi manaña atinqachu, imaynatapas hukniraymi kanqa. Ichaqa kunan pacha (03/21/2023) chaynallatam llamkan.

GetDividendosHawa llaqtamantaEmisora

Pipas yuyanman chay método ñawpaq kaqman rikch’akuq kaqta chaymanta huk sapalla métodota llamk’achiy atikunki maypichus ruwanakuna sutillata tikranki. Ichaqa manan adivinarqankuchu!  Chaypi sutichayqa ancha hukniraymi iskaynin ruwaykunapipas, kutichisqa willakuypipas. Hinaspa p’anqa yupayqa 0manta qallarikun, chaymantataq 1. Tukuy kaypi mana pantachinapaqqa, iskay chikan ruwaykunata qillqayqa aswan facilmi. Imataq mana riqsisqa, imaraykuchus llamkaypa lógica nisqapas kaqllam. Unay tiempo escupirqani huk método ruwayta munaspay hinaspa aswan pisi código kaptin. Kaypiqa manam ejemplokuna kanqachu.

GetOperacionesByCursor nisqa

Kimsantinmanta aswan munasqay. Manaña aswan chiqanchu chaypas, ichaqa aswan allin kaq. Huk mañakuyta ruwayku huk yupay ruway qallariymanta aswan atikuq p’unchawkama (huk yupayta wichq’ay utaq kunan kaq). Kutichiyta jap’iyku, kursuta jap’iyku chanta wakmanta mañakuyku mayk’aqchus datos kachkan.  Hinaspapas chay código nisqa aswan pisi rimayllapin kashan, hawapi ejemplokunamantaqa.

const timer = async pacha => {     musuq Promesa kutichiy (allichay => setTimeout (allichay, pacha)); }   const getOperationsByCursor = async (sdk, yupayId,manta,manta, kursor = ”) => {     kallpachakuy {         const reqData = {             yupayId,             manta,             manta,             limite: 1000,             estado: sdk.OperationState.OPERATION_STATE_EXECUTED,             manaCommissions: llulla,             manaTrades: llulla,             manaTutakuna: llulla,             kursor,         };           kutiy suyay sdk.operaciones.getOperacionesByCursor (reqData);     } hap’iy (e) {         suyay pacha yupay (60000);         kutiy suyay getOperationsByCursor (sdk, yupayId,manta, chayman, kursor = ”);     } };

Ruwanapaq borrador kaypi kachkan: https://github.com/pskucherov/tcsstat/tree/step3.3 https://github.com/pskucherov/tcsstat/compare/step3.3 Kunanqa chaskiq ruwaykunata yapanapaq wakichisqa kachkaniku mañakuyniyku. Sichus allin ruwasqa, chaymanta corredor willakuykunata tukuy yupaypa kayninpaq hapinayki tiyan. Hinallataq chinkasqa datukunapaq, chay kikin T-3kuna, operacionesmanta recarga. Ichaqa kaytaqa sapaq qelqamanmi t’aqasunman. Chay principal matices nisqakunawan tupanki chaymi operaciones nisqakunata peganapaq hinallataq huk informe de corretaje nisqatapas.

  •  Sichus kunan p’unchaw huk corredor willayta chaymanta ruwanakuna munasqa p’unchawkunapaq chaskirqanki, tukuyta willaypa tiyapuyninpi churay, chaymanta mana sasachakuykuna kanchu. 
  • Paqarin sasachakuyniyuq kanki mayk’aq willakuymanta chaymanta llamkanakunamanta qatiq raki willayta chaskinki chaymanta kunan kaq willaypa tiyapuyninwan tinkiyta tanteanki. 
  • Achka matices mana tupaqmanta utaq id tikraymanta procesamientomanta
  • Chaymanta OTC qhatupaq, id’s mana tupankuchu ni imapi.
  •  Hinallataqmi instrumentokuna sincronizado nisqapa maticesninpas, chaykunam yapamanta mana tupanchu, API nisqapa peculiaridadninkunarayku. Ichaqa chayqa huk willakuymi.

Llamkanakunamanta willayta jap’iyta ruwanaykuman yapayku. Hatun tapukuyqa kanqa maypi datos ruwasqa kanqa hinaspa waqaychasqa kanqa.

  •  Kikiykipaq ruwanki chayqa, hukniray dispositivokunamanta kikin willayta tukunki. Chaymantaqa servidorpi datokunata ruwanayki tiyan chaymanta waqaychanayki tiyan.
  • Sichus achka hukniray datokuna achka imaymana ruwaqkunawan mikhusqa kanki, chaymanta imachus aswan chaniyuq kaqta tanteanayki tiyan: llamk’achiqkunap utqaylla kaynin utaq laduykipi hierro waqaychay. Pipas mana tukukuq hardware qullqita quyta atin tukuy imata servidorninpi yupan chaymanta super usqhayta ruwan ruwaqkunapaq, ruwaqpa recursonkunata waqaychaspa, ahinataq pila chaymanta tráfico, mayqinchus telefonokunapi ancha chaniyuq.

Kutiyninpi, yupay navegador kaqpi mana aswan allin solucionchu principio kaqpi. Chayrayku, mana chaninniyuq kaqta, servidorniykupi qhawayku. Puchuqnintaqa clientemanmi saqiyku. Chiqaptam munani hapiyta hinaspa yupayta comisionta servidorpi. Ichaqa kaypin hamun “interactividad” nisqa matiz. Waranqa waranqa operacionkunata ruwasqaykita nisunman, chaykunata chaskinaykipaqqa phisqa minutollapin ruwakun. ¿Imakunatataq kay pachapi usuario kanqa? ¿Hilador? Puriy? Infa hayk’ataq churasqa karqan? Allinmi “suyay activo” llamk’achiyta mayk’aqchus ruwaypi kaq ruwaq imatapas rikunmanña. Kaypim kachkan Resultado:Huk microserviciota ruwachkayku Tinkoff Invest API kaqwan llamk'ayta automatizacionpaq corredor willakuykunawan chaymanta comisiones yupaywan.

  • P’anqata cargay
  • Llapan facturakuna mañakusqa
  • Chay qhipaman, llapa ruwaykuna comisiones nisqawan ruwasqa ruwaykunapaq mañasqa kanku llapa yupaykunapaq. Willayta chaskisqa kasqanmanhina, maskaqpi ruwasqa.

Mana sapa kuti ruwaykunapi willayta filtranaykupaq, sapa yupaypaq kikin ruwayniyku aysayku. Kay hina:

socket.emit (‘sdk:getOperationsCommissionResult_’ + yupayId, {                 imakuna: willakuy?.items,                 inProgress: Boolean (qhipa kaqCursor), });

Qallarinapaq borrador kaypi kachkan: https://github.com/pskucherov/tcsstat/tree/step3 https://github.com/pskucherov/tcsstat/compare/paso2…paso3 Ñawpaqman purichkanki. ¡Ancha allinmi kay chiruta ñawinchasqaykiqa! 

Interés nisqa willakuykunata yupay hinaspa lluqsiy

Pikuna ima willayta necesitasqankumanta dependen. Chayraykum chaylla willaykichik chay principal matices nisqawan tupanaykichikta.

Preciokunawan llamk’aspa 

Llapa qolqewan llank’aq runakunan yachanku qolqewan rantinakuyqa hunt’asqa yupaykunawanlla ruwakunanta. Chunkayuq puntomanta qhipaman chanikuna mana chiqan kasqanrayku chaymanta achka llamk’aykunawan pantay huñusqa kasqanrayku. Chay raykun llapa chaninkuna kay qatiq MoneyValue formatopi rikuchisqa kankuHuk microserviciota ruwachkayku Tinkoff Invest API kaqwan llamk'ayta automatizacionpaq corredor willakuykunawan chaymanta comisiones yupaywan.

panpa niraq Willay
kunan qaytu String ISO qullqi yupay
unidadkuna int64 Huñup hunt’asqa yupay rakin, mana allin yupaymi kanman
nano int32 Fraccional parte de la cantidad, kanmanmi negativo yupay

Sapaqchasqata ruwayku, chaymanta chanin chaninman apamuyku:

cita.unidades + cita.nano / 1e9

Futuros nisqa contratokunaq chanin

Futuros nisqakunaq chaninmi puntokunapi rikuchikun, qolqe hamuq pachayoq kaspaqa, tarifatan yachanayki. Hinaspapas sut’inmi chay precio en puntos hinallataq precio paso. Transaccionesmanta gananciata yupaptiykiqa, kayqa disparayta atin, imaraykuchus. sichus llapan qolqeta yupanki chaninwan askhawan mirachispa. Kaypiqa cuidakunaykim. Kunankamaqa qawasunmi imayna purinanta. Kayqa qullqi hamuq pachakunapaqmi, huk kitikunapiqa tukuy imapas allinmi kaywan.Huk microserviciota ruwachkayku Tinkoff Invest API kaqwan llamk'ayta automatizacionpaq corredor willakuykunawan chaymanta comisiones yupaywan. Huk microserviciota ruwachkayku Tinkoff Invest API kaqwan llamk'ayta automatizacionpaq corredor willakuykunawan chaymanta comisiones yupaywan.

OTC qhatu

Kay qhatuqa achka peculiaridadniyuqmi, chaymi chaypi operacionkunata sapaqmanta estudiasun.Operacionkunata sincronizar qallarispaykiqa, figi / ticker nisqatapas kikin formamanmi apamunayki, chaynapi instrumentuwan allinta tupanaykipaq. Kayta corredor willakuywan tinkiyta qallarinki chayqa, kikin ruwaypa tradeID kaqnin qallariypi ruwanakunapi cartakunayuq kasqan chaymanta mana corredor willakuypi kasqan. Chayrayku, mana tupachiyta atikunmanchu … ahem-ahem … tupanachiywan! Comercio pachata, tickerta chaymanta tupachiyta tupachirqani huk tradeId hukninpi kasqanmanta. Allinmi, manam yachanichu. Pipas kaywan tupan hinaspa pichus chaymanta llakikun, chay asuntoman hamuy otaq mosoqta qallariy.Huk microserviciota ruwachkayku Tinkoff Invest API kaqwan llamk'ayta automatizacionpaq corredor willakuykunawan chaymanta comisiones yupaywan.

Herramientakunapi yupay ruwaykuna

Manan atikunmanchu, mana qhawarispa, yupay ruwaykunata ruwayta llapan listawan. Mana q’uñimanta llamp’uman yapanapaq, sapa kuti qullqita qhawayku chaymanta ruwayku qullqi tupasqanmanta seguro kaspalla, chaymanta puntokuna munasqa qullqiman tikrasqa. Banco yupaykunawan llamk’aymanta yachaykunawan armasqa, sapa cuentakunapi comisión gastasqata yupasaqku. Kayhina: https://github.com/pskucherov/tcsstat/sacha/4 kaq llankay https://github.com/pskucherov/tcsstat/tupanachiy/3 kaq llankay …4 kaq llankayHuk microserviciota ruwachkayku Tinkoff Invest API kaqwan llamk'ayta automatizacionpaq corredor willakuykunawan chaymanta comisiones yupaywan.    

Microservicioqa listoñam kachkan!

https://github.com/pskucherov/tcsstat Tarea hina, qhawayta atikunki sichus yanapakuy llamk’an huk llasaq tinkiywan, mayk’aq tinkiykuna p’akisqa kanku, mayk’aq Internet t’inkisqa kanku, mayk’aq pantaykuna utaq vencido límites kaqmanta corredor kaqmanta. 

Tukuchiykuna, hamuq pachapaq yuyaykuna ima

  • Sapsi llamkanakunamanta yachasqa chaymanta Invest API kaqwan llamk’aymanta
  • Tiempo pasasqa ~ 10 horas
  • Sasachakuy pata ~ junior+ / pisi chawpi 

Sichus microserviciota allinchayta hinalla ruwanki chayqa, kay hina kaqwanmi tukuwaq

https://opexbot.info nisqapi

  Kaymi wiñariyniy, pikunachus sinchi qella kanku, paykunallamanta hamut’anankupaq, phawanankupaq, yupanankupaq ima. Chaypi analisiskunata yapayta yuyaykuni, ruwaqkunap mañakusqanmanhina. Sichus chay qillqasqa gustasurqanki chayqa, chaymanta suscribikuy telegrama canalniyman . Huk microserviciota ruwachkayku Tinkoff Invest API kaqwan llamk'ayta automatizacionpaq corredor willakuykunawan chaymanta comisiones yupaywan.

Pavel
Rate author
Add a comment

  1. Isakiiev

    Полезная статья. Не могу представить, сколько усилий автора потребовалось, чтобы все описать. Благодарю.

    Reply