Rojapo hína peteĩ microservicio roiporúvo API Tinkoff Invest roautomatisa hag̃ua umi informe corretaje ha cálculo comisión rehegua.

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

Umi inspirador oîva hapykuéri desarrollo servicio de estadística Tinkoff Investments-pe guarã ha’e:

¿Mbaʼérehepa oñeñeʼẽta?

  • Pe parte aplicada añoite oñe’ẽva desarrollo rehe.
  • Arandu ha experiencia añeteguáva, tuicha mba’éva oñemba’apo haguã instrumento financiero rehe.
  • Umi mba’e oñemba’apova’erã rehegua jehechapyrã

Upéicha, acalculase estadística comercial ha ajapose de manera conveniente. 

Oñemoheñóivo peteĩ servicio estadística rehegua paso a paso: 

  1. Ñembojoaju Tinkoff Invest API ndive
  2. Ojejapo dato Tinkoff Invest API-gui peteĩ kundahárape
  3. Ohupyty umi informe ha transacción corretaje rehegua
  4. Cálculo ha salida marandu oguerekóva interés
  5. Conclusiones ha planes tenonderãme guarã

Ñembojoaju Tinkoff Invest API ndive

Oñembojoaju hag̃ua API ndive, ikatu ojegueraha oimeraẽ sdk kuatiañe’ẽgui https://github.com/Tinkoff/investAPI#sdk . Térã npm mba’e’oka ` tinkoff-sdk-grpc-js `. Iñimportánte pe paquete oñembopyahu versión ipyahuvévape umi moheñóiharakuéra rupive. Mboguejy mohendahápe

npm che mba’e’apoha-sdk-grpc-js

Ojesarekóva

const { omoheñóiSdk } = oikotevẽ (‘tinkoff-sdk-grpc-js’);   // Token ikatúva ojehupyty péicha  const TOKEN = ‘YOURAPI’;   // Pe aplicación réra ikatuhápe ojejuhu umi TCS registro-pe. const app réra = ‘tcsstat’;   const sdk = omoheñóiSdk (TOKEN, app réra); (async () => {     consola.log (oha’arõ sdk.usuario.ohupyty Cuentas ()); }) ();

Resultado: ojehechaukáta peteĩ lista nde cuenta rehegua consola-pe. Techapyrã, ñahesa’ỹijo umi matices:Rojapo hína peteĩ microservicio roiporúvo API Tinkoff Invest roautomatisa hag̃ua umi informe corretaje ha cálculo comisión rehegua.

  • Pe cuenta lista-pe oĩ peteĩ “Banco de inversión”, hendive ndaikatúi remba’apo reiporúvo API
  • Eñatendéke umi kokue oúva camelCase-pe, kuatiahaipyrépe katu ko’ã kokue oñepresenta under_score-pe. 
  • Péicha oikóta oparupiete, upévare ndaikatúi regueraha ha rekopia rei peteĩ ñanduti renda kuatiañe’ẽgui.

Purupykuaáva:

  • Ikatu rejuhu ko código proyecto rama-pe

https://github.com/pskucherov/tcsstat/yvyra/paso1 https://github.com/pskucherov/tcsstat/embojoja/paso1   

Ojejapo dato Tinkoff Invest API-gui peteĩ kundahárape

Che ajagarra next.js ha socket.io. Kóva ndaha’éi peteĩ recomendación mbarete, eiporavo nde discreción-pe. 

npx omoheñói-oúva-aplicación@ipyvyvéva npm i socket.io socket.io-cliente

Pya’e jaha pe paso angirũ rehegua next+socket+investapi-pe, ha jahecha pe sección Util ko paso-pe opaite detalle rehegua.  Amombe’úta umi detalle: 

  • Nodejs (servidor) ykére, oĩ peteĩ vore pages/api/investapi.js. Kóvape jajapo socket.io servidor ha ñañembojoaju investapi ndive.
  • Navegador (cliente) ykére, ñañembojoaju servidor ndive peteĩ socket rupive ha jajerure cuenta dato corredor-gui. 
  • Rohupyty dato corredor-gui servidor-pe, upéi romondo cliente-pe. Ojeguerahauka jave cliente-pe, ojehechauka kundahárape. 

Resultado:  consola navegador-pe ikatu jahecha marandu cuenta rehegua. Upéva heꞌise, pe ipahaitépe, rohecha marandu cuenta rehegua oĩva consola servidor-pe (nodejs), pe paso koꞌag̃aguápe, rombohasa ko marandu cliente-pe (navegador).

Rojapo hína peteĩ microservicio roiporúvo API Tinkoff Invest roautomatisa hag̃ua umi informe corretaje ha cálculo comisión rehegua.

Koꞌág̃a jajapo ikatu hag̃uáicha jaiporavo peteĩ cuenta kundaháragui, ha ndaipóriramo token, upéicharamo oñemondo peteĩ jejavy consola-pe. Pe tembiapo ha’e simple ha ndaha’éi mba’e pyahu, upévare ame’ẽ enlace umi commit-pe añoite

  1. Ñe’ẽ reko ha rekosã’ỹ rehegua 7e1ac57061e5e971588479015b06d8814d6609a9
  2. Ñe’ẽ reko ha rekosã’ỹ rehegua 13b8af759 

Purupykuaáva:

  • Mba’éichapa ikatu jaguereko angirũ upe rire ha socket oñemombe’u detalle reheve ko’ápe
  • Código angirũ rehegua next+socket+investapi:

https://github.com/pskucherov/tcsstat/commit/a443a4ac1bb4f0aa898f638128755fe7391ee381 Chupe guarã hasy pe oje’eva’ekue yvate, upéicharõ japyta ko etapa-pe ha ñañembohovái pe código rehe. Oiméramo reguereko porandu – eporandu. https://github.com/pskucherov/tcsstat/yvyra/paso2 https://github.com/pskucherov/tcsstat/embojoja/paso1…paso2

Ohupyty umi informe ha transacción corretaje rehegua

mbohapy método ohupyty haguã informe ha transacción corretaje

  1. OjehupytyBrokerMarandu
  2. OjehupytyDividendoEmisora ​​Extranjero rehegua
  3. OjehupytyOperacionesPorCursor rehegua

Iñepyrũmby guive iñimportante jaikuaa: 

  • Pe informe corretaje rehegua ojejapo pe modo T-3-pe, i.e. umi oficio ojehechauka upépe ojejapo rire añetehápe. 
  • Péicha, rejeruréramo ko marandu mokõi ára ohasávape, mbohapy ára rire oîma listo. 
  • Jajapo haĝua umi acuerdo ára pahápe ĝuarã, jaipuru pe método jahupyty haĝua umi operación, ha katu ñanemandu’a ikatuha iñambue id ha contenido orekóva oñeforma rire informe de corretaje.

OjehupytyBrokerMarandu

Ojehupyty haguã informe corretaje, tekotevê ojegueraha id cuenta, ára oñepyrû ha ára oñemohu’ãva informe, pero ndohasái 31 día. Romondo peteĩ mba’ejerure ojejapo hag̃ua peteĩ marandu API-pe generate _broker_report_request -pe , rohupyty peteĩ taskId ombohovái hag̃ua. Upe rire, jaipurúvo ko taskId, jahupyty dato get _broker_report_response-gui.

Upéicha he'i documentación, añetehápe oî matices. Emaña nde po rehe:
  • Tekotevẽ reñongatu TaskID tapiaite g̃uarã exactamente ko’ã ára g̃uarã. 
  • Reperdéramo guive, upéicharõ umi ára ojejerurévape g̃uarã pe marandu oúta raẽ ombohováivo pe generación jerure, 
  • Ha upéi ndoumo’ãi mba’eveichavérõ.
Ñañepyrũ jahai código

Método ojehupyty hagua ára, ojeguerekóva en cuenta pe resta ára ko ágagui

const getDateSubDay = (subDía = 5, oñepyrũ = añetegua) => {     const ára = Ára pyahu ();     ára.setUTCDate (ára.getUTCDate () – ára michĩva);       if (ñepyrũ) {         ára.setUTCHours (0, 0, 0, 0);     } else {         ára.omohendaUTCHours (23, 59, 59, 999);     }       ojevy ára; };

Marandu generación jerure 

const brokerReport = oha’arõ (sdk.operations.getBrokerReport)({         emoheñóiBrokerReportRequest: {             cuentaId,             guive,             peve,         }, });

Ohejáva:

  • Peteĩha ejecución comando rehegua resultado ramo, jahupyty taskId. 
  • Marandu oñepyrü ojegenera corredor ykére. Oĩma jave listo ndojekuaái, ñaha’arõ ha periódicamente jaipe’a taskId ñaha’arõvo marandu.
  • Mba’érepa? Pórke pe informe noĩriramo preparádo, omombo peteĩ error. Pe marandu noĩriramo listo pe corredor ykére, upéicharõ kóva ha’e peteĩ jejavy nde código-pe. Emboguata: 30058|INVALID_ARGUMENT|tembiapo noñemohu’ãi gueteri, eñeha’ã jey upe rire

Pe código oñeha’arõ ha ojehupyty hag̃ua peteĩ marandu ojogua peteĩ mba’e.

const temporizador = async tiempo => {     return Promesa pyahu (resolve => setTimeout (resolve, aravo)); }   const getBrokerResponseByTaskId = async (taskId, página = 0) => {     eñeha’ã {         ejevy eha’arõ (sdk.operations.getBrokerReport)({             getBrokerReportRequest: {                 taskId,                 página,             },         });     } ojagarra (e) {         consola.log (‘ha’arõ’, e);         oha’arõ temporizador(10000);         jevy oha’arõ getBrokerResponseByTaskId (tembiaporãId, página);     } };

Upéi oiko pe mágia peteĩchagua. Jajoko ñande script, ñamoñepyrũ jey, ndoroguerekói taskId. Jajapo pe código taskId jerure reheve, ha katu ndorohupytyvéima taskId, ha katu pyaꞌete pe marandu. ¡Mágico! Ha opa mbaʼe oĩ porãta siémpre péicha. Pero peteî jasy rire ndaipóri mo’ãi dato mba’eveichavérõ. Iporãva : .

  • Peteĩ teoría michĩmi oñembohape ko’ápe ha ko’ápe .
  • Oñemoĩvo pe código oñondive, pe borrador ojehecháta peteĩ mba’e péichagua.

https://github.com/pskucherov/tcsstat/yvyra/paso3.1 https://github.com/pskucherov/tcsstat/embojoja/paso3.1

  • Oĩramo ojuhúva ko mba’e, upéicharõ peju porãite pe tema-pe . Omyatyrõ rire hikuái ko mágia, operde ipu’aka ha iñambuéta algún modo. Ha katu ko’áĝaite (03/21/2023) omba’apo upéichaite.

OjehupytyDividendoEmisora ​​Extranjero rehegua

Ikatu oĩ oimoꞌãva pe método ojoguaha pe yma guarépe ha ikatu reipuru peteĩ método añoite remoambuehápe umi operación réra añoite. Péro haʼekuéra ndoadivinái!  Pe téra oñembohérava upépe iñambueterei umi método ha marandu ojegueru jeývape. Ha pe páhina jepapa oñepyrũ 0 guive, upéi 1. Ani hag̃ua oñembotavy opa ko’ã mba’épe, ndahasýi ojehai mokõi método iñambuéva. Mba’épa iñextraño, porque pe lógica tembiapo rehegua peteĩchaite. Are ascupi añeha’ãvo ajapo peteĩ método ha sa’ive oĩ código. Ndaiporimoʼãi ehémplo koʼápe.

OjehupytyOperacionesPorCursor rehegua

Che favorito umi mbohapy apytégui. Jepémo ndaha’éi pe hekopetevéva, ha katu pe hekopetevéva. Rojapo peteĩ mba’ejerure oñepyrũ guive romoheñói peteĩ cuenta ára máximo ikatúva peve (ñambotývo peteĩ cuenta térã pe ko’áĝagua). Jahupyty pe mbohovái, jajagarra pe cursor ha jajerure jey oĩ aja dato.  Ha pe kódigo ikonsisove umi ehémplo oĩvagui yvate.

const temporizador = async tiempo => {     return Promesa pyahu (resolve => setTimeout (resolve, aravo)); }   const getOperationsByCursor = async (sdk, cuentaId, guive, peve, cursor = ”) => {     oñeha’ã {         const reqData = {             cuentaId,             guive,             peve,             límite: 1000,             estado: sdk.Estado de Operación.OPERACIN_ESTADO_EXECUTED,             sinComisiones: japu,             withoutTrades: japu,             sinOvernights: japu,             cursor,         };           ojevy oha’arõ sdk.operaciones.getOperacionesPorCursor (reqData);     } ojagarra (e) {         oha’arõ temporizador (60000);         ojevy oha’arõ getOperationsByCursor (sdk, cuentaId, guive, peve, cursor = ”);     } };

Pe borrador oñemboguata hag̃ua oĩ ko’ápe: https://github.com/pskucherov/tcsstat/tree/step3.3 https://github.com/pskucherov/tcsstat/compare/step3.3 Ko’áĝa ñaimema ñamoĩ hag̃ua umi operación ohupytýva ore solicitud. Ojejapo porãramo, upéicharõ tekotevẽ rehupyty umi informe corretaje rehegua opaite existencia cuenta rehegua. Ha umi dato ofaltávape guarã, umi T-3 voi, recarga operaciones-gui. Péro upéva ikatu ojesepara peteĩ artíkulo aparte-pe. Umi matices principales rejuhútavagui ha’e pega operaciones ha peteî informe corretaje.

  •  Ko árape rehupyty ramo peteĩ informe de corretaje ha umi transacción umi fecha oñeikotevẽvape g̃uarã, emoĩmbaite base de datos-pe, upéicharõ ndaipóri apañuãi. 
  • Ko’ẽrõ reguerekóta apañuãi rehupyty vove datokuéra pehẽngue oúva marandu ha operación-gui ha redesidi embojoaju base de datos oĩmava ndive. 
  • Heta matices id ndojoajúiva térã oñemoambuéva rehegua oñeprocesa rire
  • Upéi mercado OTC-pe guarã, umi id ndojoajúi mba’eveichavérõ.
  •  Péicha avei umi matices instrumento sincronización rehegua, jey ndojoajúiva, umi peculiaridad API rehegua rupi. Péro upéva haʼe ótro istória.

Ñamoĩve ñande aplicación-pe marandu jehupyty rehegua operaciones rehegua. Pe porandu principal ha’éta moõpa oñemboguata ha oñeñongatúta umi dato.

  •  Rejapóramo ndejehegui, reiporúta peteĩchagua dato opaichagua tembipuru’ígui. Upéi tekotevẽ remboguata ha reñongatu datokuéra servidor-pe.
  • Oiméramo reguereko heta dato iñambuéva oiporúva heta puruhára iñambuéva, upéicharõ tekotevẽ redesidi mba’épa iñimportanteve: umi puruhára pya’e térã hierro ñeñongatu nde ykére. Oimeraẽva ikatúva ohupyty peteĩ cantidad infinita hardware oipapa opa mba’e iservidor-pe ha ojapo súper pya’e umi puruhárape g̃uarã, osalvávo umi recurso puruhára rehegua, ha’eháicha batería ha tráfico, iñimportantetereíva teléfono-kuérape.

A su vez, pe conteo navegador-pe ndaha’éi pe solución iporãvéva principio-pe. Upévare, pe ndaha’éiva hepýva, roconsidera ore servidor-pe. Hembýva jaheja cliente-pe. Añetehápe ajagarra ha acalculase pe comisión oĩva pe servidor-pe. Ha katu ko’ápe ou pe matiz hérava “interactividad”. Ñamoĩ chupe reguerekoha miles de operaciones ha ojeipyso cinco minutos rerrecibi haguã. Mba’épa oguerekóta pe oiporúva ko’ã momento-pe. ¿Espinador? Akãrapu’ã? Infa mboýpa ojegueraha? Iporãiterei ojepuru “ha’arõ activo” pe puruhára oĩva proceso-pe ikatu jave ohecháma peteĩ mba’e. Ko’ápe oĩ pe Resultado:Rojapo hína peteĩ microservicio roiporúvo API Tinkoff Invest roautomatisa hag̃ua umi informe corretaje ha cálculo comisión rehegua.

  • Página ojekarga haguã
  • Ojejerure opaite factura
  • Upe rire, ojejerure opaite transacción orekóva comisiones umi transacción ejecutada-pe guarã opavave cuenta-pe guarã. Ojeguerahaháicha datokuéra, oñembohasa kundahárape.

Ani hag̃ua jafiltra umi dato oĩva umi evento-pe káda jey, jaipeꞌa ñande evento tee peteĩteĩva cuenta-pe g̃uarã. Péicha:

socket.emit (‘sdk: getOperationsCommissionResult_’ + cuentaId, {                 mba’e: dato?.mba’e,                 enProgreso: Boolean (Cursor oúva), });

Pe borrador oñepyrũtava oĩ ko’ápe: https://github.com/pskucherov/tcsstat/tree/step3 https://github.com/pskucherov/tcsstat/compare/paso2…paso3 Ojeguata ohóvo. ¡Iporãiterei ningo relee haguére ko línea! 

Cálculo ha salida marandu oguerekóva interés

Odepende mávapa oikotevẽ mba’e marandu rehe. Upévare, pya’e ha’e peẽme umi matices principales pejuhútava.

Omba’apóvo umi precio ndive 

Mayma omba’apóva finanza ndive oikuaa umi transacción viru rehegua ojejapova’erãha número entero reheve añoite. Ojeguerekógui inexactitud umi valor punto decimal rire ha pe error acumulativo hetaiterei operación reheve. Upévare opaite mba’erepy oñepresenta ko’ã formato MoneyValue- peRojapo hína peteĩ microservicio roiporúvo API Tinkoff Invest roautomatisa hag̃ua umi informe corretaje ha cálculo comisión rehegua.

ñuheseguaTechaukaha
viru ñemoambueCadena ISO viru kódigo
unidad-kuéra reheguaint64Papapy entero parte suma rehegua, ikatu ha e papapy negativo
nanoint32Parte fraccional pe monto rehegua, ikatu ha e petet papapy negativo

Ñaprocesa por separado, upéi jagueru precio valor-pe:

cita.unidades + cita.nano / 1e9 rehegua

Pe costo umi contrato futuro rehegua

Futuro repykue oñepresenta punto-pe, orekóvo futuro moneda, tekotevê oikuaa tasa. Ha katuete pe precio en punto ha pe paso precio rehegua. Recalcula jave ganancia oúva transacción-gui, kóva ikatu odispara, porque. recalcula ramo pe monto total remultiplicavo pe precio pe cantidad rehe. Koʼápe tekotevẽ reñatende porã. Ko’ágã peve, jahecháta mba’éichapa oho. Péva ojeporu futuro monetario-pe, ambue tendáre opa mba’e oî porã péva ndive.Rojapo hína peteĩ microservicio roiporúvo API Tinkoff Invest roautomatisa hag̃ua umi informe corretaje ha cálculo comisión rehegua.Rojapo hína peteĩ microservicio roiporúvo API Tinkoff Invest roautomatisa hag̃ua umi informe corretaje ha cálculo comisión rehegua.

Mercado OTC rehegua

Ko mercado oguereko heta peculiaridad, upévare ñaestudia hese umi operación por separado.Reñepyrũvo resincronisa umi operación, ojekuaáta tekotevẽha regueru figi / ticker peteĩchagua forma-pe ikatu haguãicha ombojoaju porã instrumento. Eñepyrũvo esincronisa kóva pe informe corretaje rehegua ndive, ojekuaáta pe tradeID peteĩchagua transacción rehegua oguerekoha tai iñepyrũme umi transacción-pe ha noĩriha pe informe corretaje-pe. Upévare, ndaikatúi oñembojoja chupekuéra… ahem-ahem… oñembojojávo! Ambojoaju aravo ñemurã, ticker ha joaju peteĩ tradeId oĩha ambuépe. Oĩ porã, ndaikuaái. Máva ojuhúva péva ha ojepy’apýva hese, eju pe tema-pe térã emoñepyrũ peteĩ pyahu.Rojapo hína peteĩ microservicio roiporúvo API Tinkoff Invest roautomatisa hag̃ua umi informe corretaje ha cálculo comisión rehegua.

Operaciones matemáticas tembipurukuéra rehegua

Ndaikatúi, ojesareko’ỹre, ojejapo operación matemática lista pukukue reheve. Ani hagua ñamoî haku ha suave, akóinte jajesareko moneda ha proceso jaguerekóramo seguro añoite pe viru ojoajuha, ha umi punto oñekonverti moneda jaipotávape. Armado conocimiento omba’apo haguã número bancario rehe, rocalculáta comisión ojeporúva peteîteî umi cuenta rehe. Péicha: https://github.com/pskucherov/tcsstat/yvyra/paso4 https://github.com/pskucherov/tcsstat/embojoja/paso3…paso4Rojapo hína peteĩ microservicio roiporúvo API Tinkoff Invest roautomatisa hag̃ua umi informe corretaje ha cálculo comisión rehegua.   

¡Microservicio oĩma preparádo!

https://github.com/pskucherov/tcsstat Tarea ramo, ikatu rehecha pe servicio ombaꞌapópa peteĩ joaju mbegue reheve, oñembyai jave joaju, oñembogue jave Internet, ojejavy jave térã límite oñemohuꞌavaꞌekue corredor-gui. 

Conclusiones ha planes tenonderãme guarã

  • Oikuaa operaciones básicas rehegua ha omba’apo Invest API ndive
  • Tiempo ojeporúva ~ 10 aravo
  • Nivel de dificultad ~ junior+ / mbytépe ijyvatevéva 

Resegíramo rembopyahu microservicio, ikatu rehupytýta peteĩ mba’e peichagua

https://opexbot.info rehegua

  Péva ha’e che desarrollo, umi ipererĩetereívape ĝuarã ontende, oñani ha oipapa haĝua ijehegui. Aplanea amoĩ hağua upépe análisis umi puruhára ojerurégui. Oiméramo ndegusta pe artíkulo, upéicharõ eñeabonáke che canal de telegrama -pe . Rojapo hína peteĩ microservicio roiporúvo API Tinkoff Invest roautomatisa hag̃ua umi informe corretaje ha cálculo comisión rehegua.

Pavel
Rate author
Add a comment

  1. Isakiiev

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

    Reply