Jiwasax mä microservicio lurasktanwa Tinkoff Invest API ukampi, ukax corretaje ukan yatiyawinakap ukhamarak comisión ukan jakthapiwinakap automatizar lurañataki.

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

Tinkoff Investments ukan servicio de estadística ukan lurañapatak ch’amanchirinakax akanakawa:

¿Kunatsa yatjjatasini?

  • Desarrollo tuqit aplicat chiqakiw utji.
  • Chiqpach yatiñanaka ukhamaraki yatxatatanaka, ukaxa wali wakiskiriwa qullqituqita instrumentunakampi irnaqañataki.
  • Irnaqañatakix kuna jan walt’awinakas utji ukanak uñakipaña

Ukhama, nayax estadísticas comerciales ukanakat jakthapiñ munta ukat mä conveniente ukham lurañ munta. 

Mä servicio de estadísticas ukax mä juk’a pacharuw lurasi: 

  1. Tinkoff Invest API ukar uñt’ayaña
  2. Tinkoff Invest API ukan yatiyawinakap mä navegador ukan apsuña
  3. Corredor yatiyawinak katuqaña ukhamaraki transacciones ukanaka katuqaña
  4. Jakhuwi ukatxa mistuwi yatiyawi interés
  5. Tukuyañataki ukhamaraki jutïri pachataki amtanaka

Tinkoff Invest API ukar uñt’ayaña

API ukar mantañatakix, kuna sdk ukax documentación ukan apsusispaw https://github.com/Tinkoff/investAPI#sdk . Jan ukax npm ukax ` tinkoff-sdk-grpc-js `. Wali askiw uka paquete ukax qhipa versión ukar machaqar tukuyata, ukax lurayirinakan luratawa. Uchaña

npm nayax tinkoff-sdk-grpc-js ukat juk’ampinaka

Uñakipt’aña

const { lurañaSdk } = mayiwi (‘tinkoff-sdk-grpc-js’);   // Token ukax akham jikxatasi   const TOKEN = ‘YOURAPI’;   // Aplicación ukan sutipax kunatix TCS registros ukan jikxatasi. const appName = ‘tcsstat’ ukax mä jach’a uñacht’äwiwa;   const sdk = lurañaSdk (TOKEN, appSuti); (async () => {     consola.log (suyt’añani sdk.users.getAccounts ()); }) ();

Ukax akhamawa: mä lista de cuentas ukaw consola ukan uñacht’ayasini. Amuyt’añataki, kuna matices ukanakas utji uk uñakipt’añäni:Jiwasax mä microservicio lurasktanwa Tinkoff Invest API ukampi, ukax corretaje ukan yatiyawinakap ukhamarak comisión ukan jakthapiwinakap automatizar lurañataki.

  • Cuentas ukan listapanx mä “banco de inversión” ukaw utji, ukampirus janiw API apnaqañax irnaqañjamäkiti
  • Uñt’apxañani, yapunakax camelCase ukan juti, ukampirus documentación ukanx uka yapunakax under_score ukan uñacht’ayatawa. 
  • Taqi chiqanw ukham utjani, ukhamax janiw documentación ukan mä yapu apsuñakikiti ukat copiañas wakisispati.

Wakiskiri:

  • Aka código ukax proyecto sucursal ukan jikxatasi

https://github.com/pskucherov/tcsstat/quqa/paso1 https://github.com/pskucherov/tcsstat/comparar/paso1   

Tinkoff Invest API ukan yatiyawinakap mä navegador ukan apsuña

Nayax next.js ukat socket.io ukanak apsuwaytwa. Akax janiw mä ch’aman iwxt’awikiti, jumatakix ajlliñamawa. 

npx luraña-jutir-app@qhipa npm i socket.io socket.io-cliente

Jank’akiw next+socket+investapi amistat lurañ thakhir sarapxta, ukatx aka thakhin Util t’aqap uñakipt’apxta taqi yatiyawinakataki.  Nayax uka tuqit qhanañcht’ä: 

  • nodejs (servidor) tuqinx mä pages/api/investapi.js qillqataw utji. Akax kawkhantix socket.io servidor ukax lurasiski ukatx investapi ukaruw uñt’ayasi.
  • Navegador (cliente) tuqinxa, mä socket tuqiw servidor ukarux mantapxta ukatx corredor ukan cuentan datos ukanakap mayipxta. 
  • Servidor ukan corredor ukan datos ukanakax katuqapxta, ukatx cliente ukar apayapxta. Kunawsatix cliente ukan katuqatäki ukhax navegador ukan uñacht’ayatawa. 

Resultado:  consola de navegador ukanx cuentas ukanakat yatiyawinak uñjaraksnawa. Mä arunxa, qhipa t’aqapanx consola de servidor (nodejs) ukan cuentanakat yatiyawinak uñjapxta, jichha pachanx uka yatiyawinak cliente (navegador) ukar apayapxta.

Jiwasax mä microservicio lurasktanwa Tinkoff Invest API ukampi, ukax corretaje ukan yatiyawinakap ukhamarak comisión ukan jakthapiwinakap automatizar lurañataki.

Jichhax lurañäni ukhamat mä cuenta navegador ukan ajlliñamataki, ukat jan token utjkchi ukhax mä pantjasiw consola ukar apayani. Irnaqawix sapurukiwa ukatx janiw kuna machaqäkiti, ukatwa commits ukar enlaces ukanakak churta

  1. Ukhamaraki, ukaxa mä juk’a pachanakwa lurasirakispa.. 1588479015b06d8814d6609a9
  2. Ukhamaraki, ukaxa mä juk’a pachanakwa lurasirakispa 

Wakiskiri:

  • Kunjamas jutïrin amigonak jikxatañax ukat socket ukax aka chiqanw sum qhanañchasi . 
  • Código de amistad ukax jutir+socket+investapi:

https://github.com/pskucherov/tcsstat/commit/a443a4ac1bb4f0aa898f638128755fe7391ee381 Khitinakatix aka pata tuqinx ch’amawa, ukhamax aka pachanx qhipararaktanwa ukatx código ukamp apasxaraktanwa. Jiskt’awinaka utjipanxa – jiskt’añani. https://github.com/pskucherov/tcsstat/quqa/2 t’aqa https://github.com/pskucherov/tcsstat/comparar/paso1…paso2

Corredor yatiyawinak katuqaña ukhamaraki transacciones ukanaka katuqaña

Kimsa thakhiw utji corretaje ukan yatiyawinakap katuqañataki ukhamarak transacciones ukanaka

  1. BrokerReport ukax mä juk’a pachanakanwa
  2. GetDividendosAnqäx markankirEmisora
  3. GetOperationsByCursor ukax mä juk’a pachanakanwa

Qalltatpachaw aka yatiñax wali aski: 

  • Uka corretaje ukan yatiyawipax T-3 ukan luratawa, i.e. comercionakax chiqpachan phuqhasiñapatakix ukan uñacht’ayatawa. 
  • Ukarjamaxa, aka qhipa pä urutaki aka yatiyawi mayipxäta ukhaxa, kimsa urutxa wakicht’atäxaniwa. 
  • Qhipa urunakatakix tratos lurañatakix, operaciones ukanakar katuqañatakix método ukampiw apnaqapxta, ukampis amtañani, id ukat contenido ukax mayjt’aspawa informe de corretaje ukan luratapat.

BrokerReport ukax mä juk’a pachanakanwa

Mä informe de corretaje uka apsuñatakixa, id de cuenta, qalltawi uru ukhamaraki tukuyaña uru yatiyawi apsuñawa, ukampisa janiwa 31 urunakatxa jiläñapäkiti. Mä mayiw apayanipxta mä yatiyaw lurañataki API ukar generate _broker_report_request , mä taskId jaysañataki. Uka qhipatxa, aka taskId apnaqasa, get _broker_report_response ukan yatiyawinak apsusipxta .

Ukhamaw documentación ukax siwa, chiqpachanx matices ukanakaw utji. Amparanakam uñjapxam:
  • TaskID ukax wiñayatakiw chiqaparu uka urunakatak imañax wakisi. 
  • Kunjamatixa chhaqhayata ukhaxa, ukatxa mayita urunakatakixa yatiyawixa nayraqata jutaniwa generación mayiwiru jaysañataki, 
  • Ukat ukapachax janiw kunjamatsa jutkaniti.
Jiwasax codigo qillqañ qalltañäni

Uka uru apsuñataki thakhi, jichha uruta apsutanaka amuyt’asa

const getDateSubDay = (subDay = 5, qalltaña = chiqa) => {     const uru = machaq Uraqi ();     uru.setUTCDate (uru.getUTCDate () – jisk’a uru);       ukaxa (qalltaña) {         uru.setUTCHours (0, 0, 0, 0);     } else {         uru.setUTCHours (23, 59, 59, 999);     }       kutt’ayaña uru; };

Yatiyawi generación mayiwi 

const brokerReport = suyt’aña (sdk.operations.getBrokerReport)({         generateBrokerReportRequest: {             cuentaId,             ukat,             ukat,         }, });

Utjiri:

  • Nayrïr phuqhawi kamachirjamaxa, taskId ukax jikxatasiwayi. 
  • Yatiyäwix corredor ukan uñstayañ qalltawayi. Kunawsatix wakicht’atäki ukhax jan uñt’atäki ukhax suyt’apxta ukatx sapa kutiw taskId ukx yatiyäw suyt’asax jaqukipapxta.
  • Kunata? Kunatix yatiyawix jan wakicht’atäkchi ukhax mä pantjasiw jaquntawayi. Yatiyäwix jan wakicht’atäkchi ukhax corredor tuqinxa, ukax mä pantjasiwiwa código ukanxa. Uñakipt’aña: 30058|INVALID_ARGUMENT|luräwix janiw tukuykiti, qhipat mayamp yant’aña

Mä yatiyäw suyt’añatakis ukat katuqañatakis código ukax mä juk’a uñtasitawa.

const timer = async pacha => {     kutt’ayaña machaq Promesa (askichaña => setTimeout (askichaña, pacha)); }   const getBrokerResponseByTaskId = async (taskId, página = 0) => {     yant’aña {         kutt’ayaña suyt’aña (sdk.operations.getBrokerReport)({             getBrokerReportRequest: {                 taskId,                 página,             },         });     } katjaña (e) {         consola.log (‘suyt’aña’, e);         suyt’aña pacha(10000);         kutt’ayaña suyt’aña getBrokerResponseByTaskId (taskId, panka);     } };

Ukatxa pachpa magia ukaw lurasi. Jiwasan script ukax sayt’ayatawa, wasitat qalltañawa, janiw taskId ukax utjkiti. Jiwasax taskId mayiwimpiw código phuqhapxta, ukampis janiw taskId ukax jikxatasxiti, jan ukasti jank’akiw yatiyaw katuqapxta. ¡Magia! Ukat sapa kuti ukhamakïspa ukhaxa, taqi kunas walikïspawa. Ukampis mä phaxsitxa janiw kuna datos ukanakas utjkaniti. Ukax wali askiwa :

  • Mä juk’a teoría ukax akan ukat akan uñacht’ayatawa .
  • Código ukar mayacht’asax, borrador ukax mä juk’a uñtasitawa.

https://github.com/pskucherov/tcsstat/quqa/paso3.1 https://github.com/pskucherov/tcsstat/comparar/paso3.1

  • Maynitix aka tuqit jikxataschi ukhaxa, uka jan walt’äwirux walikpun jutapxtaxa . Uka magia askichañ tukuyatatxa, ch’amapax chhaqtxaniwa ukat kunjamatsa mayjäxaniwa. Ukampis jichha pachanx (03/21/2023) ukhamakiw irnaqaski.

GetDividendosAnqäx markankirEmisora

Maynix amuyt’aspawa, uka lurawix nayrïr lurawimp kikipawa ukatx mä sapa lurawimpiw apnaqasispa, ukanx lurawinakan sutipakiw mayjt’ayasispa. Ukampis ¡janiw amuyapkänti!  Ukan sutichañax wali mayjawa, kunayman lurawinakans ukhamarak kutt’ayat yatiyawinakansa. Ukatx panka jakthapiwix 0 ukhat qalltawayi, ukatx 1. Taqi ukanakan jan ch’axwañatakix pä yaqha thakhi qillqt’añax juk’amp jasakiwa. Ukax muspharkañawa, kunatix irnaqawin lógica ukax pachpakïskiwa. Nayax jaya pachaw thuqt’asta kunapachatix mä método lurañ yant’kayäta ukatx juk’a código ukaw utjäna. Aka chiqanx janiw kuna uñacht’äwinakas utjkaniti.

GetOperationsByCursor ukax mä juk’a pachanakanwa

Kimsatxa nayatakix wali munatänwa. Janis jukʼamp chiqapäkchixa, ukampis jukʼamp sumäki. Mä cuenta lurañ qalltawitpach mä mayiw lurapxta, kuna pachas (mä cuenta jist’antañ jan ukax jichha pacha jist’antañkama). Jiwasax jaysäwi katuqtanwa, cursor apsuñasa ukat wasitat mayiñasa kunapachatix datos utjki ukhakama.  Ukat uka códigox jukʼamp jiskʼakiwa, uka uñachtʼäwinakat sipansa.

const timer = async pacha => {     kutt’ayaña machaq Promesa (askichaña => setTimeout (askichaña, pacha)); }   const getOperationsByCursor = async (sdk, cuentaId, ukat, ukat, cursor = ”) => {     yant’aña {         const reqData = {             cuentaId,             ukat,             ukat,             límite: 1000,             estado: sdk.OperationState.OPERATION_STATE_EXECUTED,             janComisiones: k’ari,             janTrades: k’ari,             janOvernights: k’ari,             cursor,         };           kutt’ayaña suyt’aña sdk.operaciones.getOperacionesByCursor (reqData);     } katjaña (e) {         suyt’aña pacha (60000);         kutt’ayaña suyt’aña getOperationsByCursor (sdk, cuentaId, ukat, ukat, cursor = ”);     } };

Irnaqañatakix borrador ukax akankiwa: https://github.com/pskucherov/tcsstat/tree/step3.3 https://github.com/pskucherov/tcsstat/compare/step3.3 Jichhax katuqañ lurawinakamp yapxatañatakix wakicht’atätanwa jiwasana mayiwisa. Chiqapa luratächi ukhaxa, ukaxa wakisiwa yatiyawinakxa corretaje ukaxa taqpacha utjatapata cuenta ukataki. Ukat chhaqhat datos ukatakix uka pachpa T-3s, operaciones ukanakat recargar. Ukampis ukajj yaqha yatichäwiruw jaljasispa. Uka jach’a matices ukanakax uñt’ayasiñatakix operaciones de pegamento ukat mä informe de corretaje ukanakaw utji.

  •  Jichhürunakanx mä informe de corretaje ukat transacciones ukanak katuqapxtaxa kuna urunakas wakisi, taqi ukanakx base de datos ukar uchañaw wakisi, ukhamax janiw kuna jan walt’awinakas utjkiti. 
  • Qhipürux jan walt’awinakaw utjani, kunapachatix yatiyäwit ukhamarak lurawinakat jutir chimpunak katuqapkäta ukatx utjki uka base de datos ukamp sincronización lurañ amtapxäta. 
  • Walja matices ukanakax mismatched jan ukax id mayjt’ayañ tuqitwa proceso ukat qhipatxa
  • Ukat OTC qhathutakix id ukax janiw kunas kikipäkiti.
  •  Ukhamarakiw matices de instrumentos sincronizados, ukax wasitat janiw coincidikiti, kunatix peculiaridades de la API. Ukampis ukajj yaqha sarnaqäwiwa.

Jiwasan aplicación ukar operaciones ukanakat yatiyawinak katuqañ yapxatañäni. Jilïr jiskt’awix kawkhans datos ukax lurasini ukatx kawkhans imatäni ukawa.

  •  Juma pachpa lurañamaxa, kunaymana dispositivonakatxa pachpa datos ukanakxa manq’añamawa. Ukatxa, servidor ukan datos ukanakax lurañaw wakisi ukat imañawa.
  • Walja kunayman datos ukanak walja kunayman apnaqirinakan manq’antatächi ukhaxa, kunas juk’amp wakiskirïki uk amtañamawa: apnaqirinakan jank’akïtapa jan ukax hierro ladoman qhispiyatapa. Khitinakatix mä jan tukuskir hardware ukar aljañ yatipki ukax taqi kuns servidor ukan jakthapi ukat apnaqirinakatakix super rápido ukham tukuyi, apnaqirin yänakap qhispiyañataki, kunjamakitix pila ukat tráfico, ukax teléfonos ukanx wali wakiskiriwa.

Ukatxa, navegador ukan jakthapiwix janiw principio tuqitx juk’amp suma solución ukhamäkiti. Ukatwa, kunatix jan jila qullqin utjki ukax servidor ukan uñjtanwa. Jilt’irinakax clienteruw jaytapxta. Chiqpachans servidor ukan comisión apsuñ munta ukat jakthapiñ munta. Ukampis akanx “interactividad” sata matiz ukaw juti. Waranq waranq operacionanakaw utji sañani ukat phisqa minutos ukjaw ukanak katuqañatakix munasispa. ¿Kunas apnaqirix aka pachanx utjani? ¿Spinner ukax? Jiltäwi? Infa tuqitxa qawqha qullqis apkatata? “Suyt’añ activo” apnaqañax wali askiwa, kunawsatix proceso ukan apnaqirix nayratpach kuns uñjkaspän ukhaxa. Akax Resultado ukawa:Jiwasax mä microservicio lurasktanwa Tinkoff Invest API ukampi, ukax corretaje ukan yatiyawinakap ukhamarak comisión ukan jakthapiwinakap automatizar lurañataki.

  • Ukax mä juk’a pachanakanwa
  • Taqi facturas ukanakaxa mayitawa
  • Uka qhipatxa, taqi lurawinakawa comisiones ukanakampi lurata lurawinakata taqi cuentas ukanakataki mayitarakini. Kunjamatix datos ukax katuqatäki ukhamarjamax navegador ukan uñacht’ayatawa.

Sapa kuti lurawinakan yatiyawinak jan filtrañatakix sapa cuentatakix jiwasan lurawinakas apsusipxta. Akax akhamawa:

socket.emit (‘sdk:getOperationsCommissionResult_’ + accountId, {                 yänaka: datos?. yänaka,                 inProgreso: Boolean (jutir Cursor), });

Uñstayañatakix borrador ukax akankiwa: https://github.com/pskucherov/tcsstat/tree/step3 https://github.com/pskucherov/tcsstat/compare/step2…paso3 Nayrar sartaña. ¡Aka línea uñxatt’añax wali askipuniwa! 

Jakhuwi ukatxa mistuwi yatiyawi interés

Khitinakas kuna yatiyäwinaksa munapxi ukarjamaw lurasi. Ukatwa, jank’akiw kuna jach’a matices ukanakas utji ukanak yatiyapxsma.

Chaninakampi irnaqaña 

Taqi khitinakati qullqichasiwimpi irnaqapki jupanakaxa yatipxiwa qullqi alxañanakaxa taqpacha jakhunakampikiwa luratäñapa. Kunalaykutixa jani chiqapa valores ukatxa punto decimal ukatxa pantjasiwi acumulativo ukaxa walja operaciones ukanakampi. Ukatpï taqi chaninakax aka formato MoneyValue ukan uñacht’ayataJiwasax mä microservicio lurasktanwa Tinkoff Invest API ukampi, ukax corretaje ukan yatiyawinakap ukhamarak comisión ukan jakthapiwinakap automatizar lurañataki.

patakastaQillqawi
sinsillukarinaCadena ISO qullqi chimpunaka
unidades ukanakaint64Integer parte de la suma, ukax mä negativo jakhüwiwa
nanoint32Fraccional parte de la cantidad, ukax mä negativo jakhüwiwa

Jiwasax sapa mayniw lurapxta, ukatx chaniparjamaw apanipxta:

cita.unidades + cita.nano / 1e9.Ukaxa mä juk’a pachanakwa lurasi

Futuros contratos ukanakan qullqipa

Futuros ukan chanipax puntos ukan uñacht’ayatawa, kunapachatix qullqi jutïr utjki ukhax tasa uñt’añamawa. Ukat chiqans precio en puntos ukat precio paso. Kunawsatix transacciones ukanakat ganancias ukanakax jakthapitax ukhax akax ch’axwaspawa, kunatix. ukaxa taqpacha qullqixa jakhthapitawa, ukaxa chanipampi waljaptayañawa. Aka chiqanx wali amuyumpiw sarnaqañama. Jichhax kunjamsa sarantaski uk uñjañäni. Ukax qullqi futuros ukanakatakiw apnaqasi, yaqha chiqanakanx taqi kunas walikiw akampi.Jiwasax mä microservicio lurasktanwa Tinkoff Invest API ukampi, ukax corretaje ukan yatiyawinakap ukhamarak comisión ukan jakthapiwinakap automatizar lurañataki.Jiwasax mä microservicio lurasktanwa Tinkoff Invest API ukampi, ukax corretaje ukan yatiyawinakap ukhamarak comisión ukan jakthapiwinakap automatizar lurañataki.

OTC ukax mä qhathuwa

Aka qhathux walja peculiaridades ukaniwa, ukhamax operaciones ukanakat sapa maynit yatxatañäni.Kunapachatix operaciones sincronizar qalltawayktan ukhax figi / ticker ukax pachpa formulario ukar apaniñaw wakisi, ukhamat instrumento ukar sum uñt’ayañataki. Kunawsatix sincronizar ukax qalltawayk ukhax corredor yatiyawimp chika, ukax uñstawayiwa tradeID ukax pachpa lurawinx qalltawinx qillqatanakaw utji lurawinakanxa ukatx janiw corretaje yatiyawinx utjkiti. Ukatwa, jupanakax janiw uñtaskaspati … ahem-ahem … uñtasiwimpi! Nayax alxañ pacha, ticker ukat chikancht’asiwaytwa ukax mä tradeId ukax yaqha ukan utji. Chiqawa, janiw yatkti. Khitinakatix akamp jikisipki ukat khitinakati ukat llakisipki, uka jan walt’äwir jutapxam jan ukax machaq jan walt’äw qalltapxam.Jiwasax mä microservicio lurasktanwa Tinkoff Invest API ukampi, ukax corretaje ukan yatiyawinakap ukhamarak comisión ukan jakthapiwinakap automatizar lurañataki.

Herramientas ukanakan operaciones matemáticas ukanaka

Janiwa, jan uñakipt’asaxa, operaciones matemáticas ukanakaxa taqpacha listampi lurañaxa wakiskiti. Jan junt’u llamp’u yapxatañatakixa, sapa kutiwa qullqi uñakipt’aña ukatxa lurawixa qullqixa chiqaparu uñjata ukhamakiwa, ukatxa puntos ukaxa munata qullqiru jaqukipatawa. Banco jakhunakampi irnaqaña yatiñanakampi armatäsaxa, sapa cuentanakaru comisión gastata ukxa jakhthapiñäni. Ukhama: https://github.com/pskucherov/tcsstat/quqa/pasa4 https://github.com/pskucherov/tcsstat/comparar/paso3…paso4Jiwasax mä microservicio lurasktanwa Tinkoff Invest API ukampi, ukax corretaje ukan yatiyawinakap ukhamarak comisión ukan jakthapiwinakap automatizar lurañataki.   

¡Microservicio ukax wakicht’atawa!

https://github.com/pskucherov/tcsstat Mä tarea ukhama, uñakipt’asmawa servicio ukax mä juk’a conexión ukamp irnaqaskiti, kunapachatix conexiones ukanakax p’akintata, kunapachatix Internet ukax desconectatäki, kunawsatix pantjasiwinakax jan ukax límites expirados ukanakax corredor ukan chiqapa. 

Tukuyañataki ukhamaraki jutïri pachataki amtanaka

  • Operaciones básicas ukanakat yatxatawayta ukat Invest API ukamp irnaqawayta
  • Tiempo ukaxa ~ 10 pachanakawa
  • Nivel de dificultad ~ junior+ / jisk’a chika taypinkiri 

Microservicio ukar refinar sarantaskakini ukhaxa, inas ukham tukuychisma

https://opexbot.info ukan uñt’ayata

  Akax nayan nayrar sartawijawa, khitinakatix sinti q’ixu q’ixunak amuyañataki, t’ijt’añataki ukat jupanakpacha jakthapiñataki. Nayax ukan análisis ukar yapxatañ amtasta, apnaqirinakan mayitaparjama. Uka qillqatax jumatakix wali askiwa, ukhamax canal de telegrama ukar qillqt’asiñamawa . Jiwasax mä microservicio lurasktanwa Tinkoff Invest API ukampi, ukax corretaje ukan yatiyawinakap ukhamarak comisión ukan jakthapiwinakap automatizar lurañataki.

Pavel
Rate author
Add a comment

  1. Isakiiev

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

    Reply