Kei te whakawhanake matou i tetahi ratonga moroiti ma te whakamahi i te Tinkoff Invest API hei whakaaunoa i te mahi me nga purongo hokohoko me te tatau i nga komihana.

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

Ko nga kaiwhakauru i muri i te whanaketanga o te ratonga tatauranga mo Tinkoff Investments ko:

He aha ka matapakihia?

  • Ko te waahanga anake mo te whanaketanga.
  • Te matauranga me te wheako pono, he mea tino nui ki te mahi me nga taputapu putea.
  • Tirohanga o nga take hei mahi

Na, e hiahia ana ahau ki te tatau i nga tatauranga hokohoko me te mahi i runga i te huarahi watea. 

Te whakawhanake i tetahi ratonga tatauranga ma te taahiraa: 

  1. Hononga ki Tinkoff Invest API
  2. Te tuhi raraunga mai i Tinkoff Invest API i roto i te tirotiro
  3. Te whiwhi i nga purongo hokohoko me nga whakawhitinga
  4. Te tatauranga me te whakaputanga o nga korero e pa ana
  5. Nga whakatau me nga mahere mo nga ra kei te heke mai

Hononga ki Tinkoff Invest API

Hei hono atu ki te API, ka taea e koe te tango i tetahi sdk mai i nga tuhinga https://github.com/Tinkoff/investAPI#sdk . Ko te putea npm ` tinkoff-sdk-grpc-js `. He mea nui kia whakahoutia te kete ki te putanga hou e nga kaihanga. Tāuta

npm i tinkoff-sdk-grpc-js

Takitaki

const {createSdk } = rapu(‘tinkoff-sdk-grpc-js’);   // Token that can be got like this  const TOKEN = ‘YOURAPI’;   // Te ingoa o te tono ka kitea koe i roto i nga raarangi TCS. const appName = ‘tcsstat’;   const sdk = createSdk(TOKEN, AppName); (async () => {     console.log(tatari sdk.users.getAccounts()); })();

Hua: ka whakaatuhia he rarangi o o kaute ki te papatohu. Hei tauira, kia tātarihia nga nuances:Kei te whakawhanake matou i tetahi ratonga moroiti ma te whakamahi i te Tinkoff Invest API hei whakaaunoa i te mahi me nga purongo hokohoko me te tatau i nga komihana.

  • Kei roto i te rarangi o nga kaute he “Peeke haumi”, kaore e taea e koe te mahi ma te whakamahi i te API
  • Kia mahara ka tae mai nga mara ki te camelCase, i roto i nga tuhinga ka whakaatuhia enei mara ki raro_score. 
  • Ka penei i nga waahi katoa, na reira kaore e taea e koe te tango me te kape i tetahi mara mai i nga tuhinga.

Whaihua:

  • Ka kitea e koe tenei waehere i te peka kaupapa

https://github.com/pskucherov/tcsstat/tree/step1 https://github.com/pskucherov/tcsstat/compare/step1   

Te tuhi raraunga mai i Tinkoff Invest API i roto i te tirotiro

I tango ahau i muri.js me socket.io. Ehara tenei i te taunakitanga kaha, whiriwhiri ma to whakaaro. 

npx waihanga-next-app@ hou npm i socket.io socket.io-kiritaki

Ka haere tonu matou ki te taahiraa whakahoa i muri mai+puanga+investapi, ka kite i te waahanga whai hua o tenei taahiraa mo nga korero katoa.  Ka whakaahua ahau i nga korero: 

  • I te taha nodejs (tūmau), he wharangi/api/investapi.js te konae. Koinei te waahi ka hangaia e matou te tūmau socket.io ka hono atu ki te investapi.
  • I runga i te taha tirotiro (kiritaki), ka hono atu matou ki te tūmau ma te turanga me te tono raraunga kaute mai i te kaihokohoko. 
  • Ka whiwhi matou i nga raraunga mai i te kaihokohoko i runga i te tūmau, ka tukuna ki te kiritaki. Ka tae mai ki runga i te kiritaki, ka whakaatuhia ki te tirotiro. 

Hua:  i roto i te papatohu tirotiro ka kite tatou i nga korero mo nga kaute. Arā, i te taahiraa whakamutunga, i kite matou i nga korero e pa ana ki nga kaute i roto i te papatohu tūmau (nodejs), i te taahiraa o naianei, i whakawhitia e matou enei korero ki te kiritaki (kaitirotiro).

Kei te whakawhanake matou i tetahi ratonga moroiti ma te whakamahi i te Tinkoff Invest API hei whakaaunoa i te mahi me nga purongo hokohoko me te tatau i nga komihana.

Inaianei me mahi kia taea e koe te kowhiri i tetahi kaute mai i te kaitirotiro, a mena kaore he tohu, ka tukuna he hapa ki te papatohu. He maamaa noa te mahi, ehara i te mea hou, no reira ka hoatu e au nga hononga ki te tuku

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

Whaihua:

  • Me pehea te hanga hoa i muri mai me te turanga e whakaahuahia ana i konei
  • Waehere whakahoa i muri+tupapa+investapi:

https://github.com/pskucherov/tcsstat/commit/a443a4ac1bb4f0aa898f638128755fe7391ee381 Mo te hunga he uaua nga korero i runga ake nei, ka noho tonu tatou ki tenei waahanga ka mahi ki te waehere. Mena he patai taau – patai. https://github.com/pskucherov/tcsstat/tree/step2 https://github.com/pskucherov/tcsstat/compare/step1…step2

Te whiwhi i nga purongo hokohoko me nga whakawhitinga

E toru nga tikanga ki te whiwhi i nga purongo hokohoko me nga whakawhitinga

  1. GetBrokerReport
  2. TikinaDividendsForeignIssuer
  3. GetOperationsByCursor

Mai i te timatanga he mea nui kia mohio koe: 

  • Ko te ripoata hokohoko ka hangaia i roto i te aratau T-3, i.e. Ka whakaatuhia nga hokohoko ki reira i muri i to raatau mahi. 
  • No reira, ki te tono koe i tenei ripoata mo nga ra e rua kua pahure ake nei, ka rite i roto i nga ra e toru. 
  • Ki te whiwhi i nga whakawhitiwhitinga mo nga ra whakamutunga, ka whakamahia e matou te tikanga mo te tango i nga whakawhitinga, engari kia mahara ka huri pea o raatau id me o raatau ihirangi i muri i te whakaputanga o te ripoata hokohoko.

GetBrokerReport

Ki te tiki i tetahi ripoata hokohoko, me tango e koe te id kaute, te ra tiimata me te ra mutunga o te ripoata, engari kaua e neke ake i te 31 ra. Ka tukuna e matou he tono ki te whakaputa purongo ki te API ki te whakaputa _broker_report_request , tiki i te taskId hei whakautu. I muri i tera, ma te whakamahi i tenei taskId, ka whiwhi raraunga mai i te tiki _broker_report_response.

Na te tuhinga e kii ana, i roto i te mooni kei reira nga ahuatanga. Kia mataara o ringaringa:

  • Me tiaki e koe te TaskID mo ake tonu atu mo enei ra. 
  • I te mea ka ngaro koe, na mo nga ra i tonohia ka tae tuatahi mai te ripoata hei whakautu ki te tono whakatipuranga, 
  • Na ka kore rawa e tae mai.

Me timata taatau ki te tuhi waehere

Tikanga mo te tiki i te ra, me te whakaaro ki te tangohanga mai i te ra o naianei

const getDateSubDay = (subDay = 5, timata = pono) => {     const date = new Date();     date.setUTCDate(date.getUTCDate() – subDay);       if (timata) {         date.setUTCHours(0, 0, 0, 0);     } atu {         date.setUTCHours(23, 59, 59, 999);     }       rā hoki mai; };

Tono hanga ripoata 

const brokerReport = tatari (sdk.operations.getBrokerReport)({         generateBrokerReportRequest: {             accountId,             from,             to,         }, });

Hua:

  • Ko te hua o te mahi tuatahi o te whakahau, ka whiwhi tatou i te taskId. 
  • Ka timata te ripoata ki te hanga i te taha o te kaihokohoko. I te wa e reri ana kaore i te mohiotia, ka tatari ka toia te taskId i ia wa i te tatari mo te ripoata.
  • He aha? Na te mea karekau te purongo i reri, ka whiua he he. Mena kaore i rite te ripoata ki te taha o te kaihokohoko, he he tenei kei roto i to waehere. Tukatuka koa: 30058|INVALID_ARGUMENT|kaore ano kia oti te mahi, me ngana ano i muri mai

He penei te ahua o te waehere mo te tatari me te whiwhi purongo.

const timer = wa async => {     whakahokia te kupu whakaari hou(whakaoti => setTimeout(whakaoti, wa)); }   const getBrokerResponseByTaskId = async (taskId, page = 0) => {     whakamātauria {         hoki mai tatari (sdk.operations.getBrokerReport)({             getBrokerReportRequest: {                 taskId,                 page,             },         });     } hopu (e) {         console.log(‘tatari’, e);         tatari matawā(10000);         hoki mai tatari getBrokerResponseByTaskId(taskId, page);     } };

Na ka tupu ano te makutu. Ka mutu ta maatau tuhinga, ka timata ano, karekau he taskId. Ka mahia e matou te waehere me te tono taskId, engari kua kore e whiwhi i te taskId, engari ko te ripoata tonu. Te makutu! A ka pai nga mea katoa mena ka penei tonu. Engari i roto i te marama karekau he raraunga. Whaihua :

  • Ko te ahua o te ariā kei konei me konei .
  • Ma te whakakotahi i te waehere, ka penei te ahua o te tauira.

https://github.com/pskucherov/tcsstat/tree/step3.1 https://github.com/pskucherov/tcsstat/compare/step3.1

  • Mena ka pa mai tetahi ki tenei, nau mai ki te take . I muri i ta raatau whakatikatika i tenei makutu, ka ngaro tona kaha, ka rereke te ahua. Engari i tenei wa (03/21/2023) he pera tonu te mahi.

TikinaDividendsForeignIssuer

Ka whakaaro pea tetahi he rite te tikanga ki te waa o mua ka taea e koe te whakamahi i tetahi tikanga ka huri noa koe i te ingoa o nga mahi. Engari kaore ratou i whakaaro!  He tino rerekee te whakaingoatanga i roto i nga tikanga me nga korero kua whakahokia mai. Ka timata te tatau wharangi mai i te 0, katahi mai i te 1. Kia kore ai e poauau enei mea katoa, he maamaa ake te tuhi i nga tikanga rereke e rua. He mea ke, no te mea he rite tonu te arorau o te mahi. I tuwha ahau mo te wa roa i taku ngana ki te hanga i tetahi tikanga me te iti o te waehere. Karekau he tauira i konei.

GetOperationsByCursor

Ko taku tino pai o te toru. Ahakoa ehara i te mea tino tika, engari ko te tino tika. Ka tono matou mai i te timatanga o te hanga i tetahi kaute tae noa ki te ra e taea ana (ka kati i tetahi kaute, i te waa ranei). Ka whiwhi tatou i te whakautu, tangohia te pehu me te tono ano i te mea he raraunga.  A he poto ake te waehere i nga tauira o runga ake nei.

const timer = wa async => {     whakahokia te kupu whakaari hou(whakaoti => setTimeout(whakaoti, wa)); }   const getOperationsByCursor = async (sdk, accountId, mai, ki, pehu = ”) => {     tamata {         const reqData = {             accountId,             mai i,             ki,             rohe: 1000,             āhua: sdk.OperationState.OPERATION_STATE_EXECUTED,             withoutCommissions: teka,             withoutTrades: teka,             withoutOvernights: teka,             pehu,         };           hoki tatari sdk.operations.getOperationsByCursor(reqData);     } hopu (e) {         tatari taima(60000);         hoki mai tatari getOperationsByCursor(sdk, accountId, mai, ki, pehu = ”);     } };

Kei konei te tauira hei whakahaere: https://github.com/pskucherov/tcsstat/tree/step3.3 https://github.com/pskucherov/tcsstat/compare/step3.3 Inaianei kua rite matou ki te taapiri i nga mahi whiwhi ki ta matou tono. Mena ka tika te mahi, me whiwhi koe i nga purongo hokohoko mo te katoa o te kaute. Na mo nga raraunga ngaro, ko aua T-3 ano, ka utaina mai i nga mahi. Engari ka taea te wehewehe ki tetahi tuhinga motuhake. Ko nga ahuatanga nui ka pa ki a koe ko te whakapiri i nga mahi me te ripoata hokohoko.

  •  Mena i tenei ra ka whiwhi koe i te purongo hokohoko me nga tauwhitinga mo nga ra e hiahiatia ana, whakauruhia katoa ki roto i te paataka, karekau he raru. 
  • Ka raru koe apopo ina whiwhi koe i te waahanga raraunga e whai ake nei mai i te purongo me nga mahi ka whakatau koe ki te tukutahi ki te papaunga raraunga o naianei. 
  • He maha nga korero mo te rerekee, te whakarereke ranei i te id i muri i te tukatuka
  • Na mo te maakete OTC, kaore nga id e rite.
  •  I tua atu i nga ahuatanga o nga taputapu tukutahi, kaore ano i te rite, na nga ahuatanga o te API. Engari he korero ano tera.

Kia taapirihia nga korero mo nga mahi ki ta maatau tono. Ko te patai matua ko te waahi ka tukatukahia, ka penapenahia nga raraunga.

  •  Mena ka mahia e koe mo koe ake, ka pau nga raraunga mai i nga taputapu rereke. Na ka hiahia koe ki te tukatuka me te rokiroki raraunga i runga i te tūmau.
  • Mena he maha nga raraunga rereke e pau ana e te maha o nga kaiwhakamahi rereke, ka hiahia koe ki te whakatau he aha te mea nui ake: te tere o nga kaiwhakamahi, te penapena rino ranei i to taha. Ko te tangata ka kaha ki te utu i nga taputapu kore mutunga ka tatau i nga mea katoa i runga i tana kaimau me te tere tere mo nga kaiwhakamahi, ka penapena i nga rauemi a te kaiwhakamahi, penei i te pākahiko me te waka, he mea tino nui ki nga waea.

Ka huri, ko te tatau i roto i te kaitirotiro ehara i te otinga tino pai rawa atu. Na reira, he aha te mea ehara i te utu nui, ka whakaarohia e matou i runga i ta maatau tūmau. Ka waiho e matou te toenga ki te kiritaki. Ka tino hiahia ahau ki te tango me te tatau i te komihana i runga i te tūmau. Engari i konei ka tae mai te ahua e kiia nei ko “te taunekeneke”. Me kii kei a koe nga mano o nga mahi, a e rima meneti te roa o te tango. He aha ta te kaiwhakamahi i tenei wa? Kaihurihuri? Te ahunga whakamua? Infa mo te nui o te tukunga ake? He pai ki te whakamahi i te “tatari kaha” ina kua kite te kaiwhakamahi i roto i te mahi i tetahi mea. Anei te Hua:Kei te whakawhanake matou i tetahi ratonga moroiti ma te whakamahi i te Tinkoff Invest API hei whakaaunoa i te mahi me nga purongo hokohoko me te tatau i nga komihana.

  • Te utaina wharangi
  • Ka tonohia nga nama katoa
  • I muri i tera, ka tonohia nga whakawhitinga katoa me nga komiti mo nga whakawhitinga kua mahia mo nga kaute katoa. Ka riro mai nga raraunga, ka tukuna ki te tirotiro.

Kia kore ai e tarai nga raraunga i roto i nga huihuinga i ia wa, ka tohia e maatau ake nga kaupapa mo ia kaute. Pēnei:

socket.emit(‘sdk:getOperationsCommissionResult_’ + accountId, {                 tūemi: raraunga?.items,                 inProgress: Boolean(NextCursor), });

Kei konei te tauira hei whakarewa: https://github.com/pskucherov/tcsstat/tree/step3 https://github.com/pskucherov/tcsstat/compare/step2…step3 Moving on. He rawe kua panui koe i tenei rarangi! 

Te tatauranga me te whakaputanga o nga korero e pa ana

Kei runga ko wai e hiahia ana he aha nga korero. Na reira, ka korerotia e ahau ki a koe nga ahuatanga matua ka pa ki a koe.

Te mahi me nga utu 

Ko nga tangata katoa e mahi ana me te putea e mohio ana me mahi nga whakawhitinga moni me nga tau katoa. Na te hee o nga uara i muri i te ira ira me te hapa taapiri me te maha o nga mahi. No reira ka whakaatuhia nga utu katoa i roto i te whakatakotoranga MoneyValue e whai ake neiKei te whakawhanake matou i tetahi ratonga moroiti ma te whakamahi i te Tinkoff Invest API hei whakaaunoa i te mahi me nga purongo hokohoko me te tatau i nga komihana.

mara momo Whakaahuatanga
moni aho Waehere moni ISO aho
wae int64 Ko te wahanga tauoti o te tapeke, he tau toraro
nano int32 Ko te wahanga hautau o te moni, he tau toraro

Ka tukatuka wehehia e matou, ka kawea ki te uara utu:

quotation.units + quotation.nano / 1e9

Ko te utu mo nga kirimana a meake nei

Ko te utu mo nga wa kei te heke mai ka whakaatuhia i roto i nga tohu, ina he moni kei te heke mai, me mohio koe ki te reiti. A ko te utu i roto i nga tohu me te taahiraa utu. Ka tatauhia e koe te hua mai i nga whakawhitinga, ka taea e tenei te pupuhi, na te mea. ki te tatau koe i te tapeke moni ma te whakarea i te utu ki te rahinga. I konei me tupato koe. I tenei wa, ka kite tatou e pehea ana te haere. E pa ana tenei ki nga moni a muri ake nei, i etahi atu waahi he pai nga mea katoa ki tenei.Kei te whakawhanake matou i tetahi ratonga moroiti ma te whakamahi i te Tinkoff Invest API hei whakaaunoa i te mahi me nga purongo hokohoko me te tatau i nga komihana. Kei te whakawhanake matou i tetahi ratonga moroiti ma te whakamahi i te Tinkoff Invest API hei whakaaunoa i te mahi me nga purongo hokohoko me te tatau i nga komihana.

maakete OTC

He maha nga ahuatanga o tenei maakete, no reira me ako takitahi nga mahi ki runga. Ka timata koe ki te tukutahi i nga mahi, ka puta mai me kawe e koe te figi / tohu ki te ahua kotahi kia pai ai te rite o te taputapu. Ka timata koe ki te tukutahi i tenei ki te purongo hokohoko, ka puta ko te tradeID o taua tauwhitinga he reta i te timatanga i roto i nga whakawhitinga, a, kaore i roto i te purongo hokohoko. No reira, kaore e taea te whakataurite … ahem-ahem … ma te whakataurite! I taurite ahau ki te wa hokohoko, tohu me te whakataurite i tetahi tradeId kei roto i tetahi atu. Tika, kare au e mohio. Ko wai ka pa ki tenei, ko wai e whakaaro nui ana, haere mai ki te take , ka timata ranei he kaupapa hou.Kei te whakawhanake matou i tetahi ratonga moroiti ma te whakamahi i te Tinkoff Invest API hei whakaaunoa i te mahi me nga purongo hokohoko me te tatau i nga komihana.

Nga mahi pangarau i runga i nga taputapu

Kaore e taea, me te kore titiro, ki te mahi i nga mahi pangarau me te rarangi katoa. Kia kore ai e taapiri i te mahana ki te ngawari, ka tirotirohia e matou te moni me te mahi anake mena ka tino mohio matou ka rite nga moni, ka hurihia nga tohu ki te moni e hiahiatia ana. Ma te mohio mo te mahi me nga nama peeke, ka tatauhia e matou nga utu mo ia kaute. Pērā i tēnei: ​​https://github.com/pskucherov/tcsstat/tree/step4 https://github.com/pskucherov/tcsstat/compare/step3…step4Kei te whakawhanake matou i tetahi ratonga moroiti ma te whakamahi i te Tinkoff Invest API hei whakaaunoa i te mahi me nga purongo hokohoko me te tatau i nga komihana.    

Kua rite te Microservice!

https://github.com/pskucherov/tcsstat Hei mahi whare, ka taea e koe te tirotiro mena ka mahi te ratonga me te hononga puhoi, ka pakaru nga hononga, ka momotuhia te Ipurangi, ka hapa, ka mutu ranei nga rohe o te kaihokohoko. 

Nga whakatau me nga mahere mo nga ra kei te heke mai

  • I ako mo nga mahi taketake me te mahi tahi me te Invest API
  • Te wa i pau ~ 10 haora
  • Te taumata uaua ~ teina+ / iti waenga 

Mena kei te whakamahi tonu koe i te ratonga moroiti, ka mutu pea he penei

https://opexbot.info

  Ko taku whanaketanga tenei, mo te hunga mangere ki te mohio, ki te oma me te tatau ki a ratou ano. Ka whakamahere ahau ki te taapiri i nga tātaritanga ki reira i runga i te tono a nga kaiwhakamahi. Mena i pai ki a koe te tuhinga, ka ohauru ki taku hongere waea waea . Kei te whakawhanake matou i tetahi ratonga moroiti ma te whakamahi i te Tinkoff Invest API hei whakaaunoa i te mahi me nga purongo hokohoko me te tatau i nga komihana.

Pavel
Rate author
Add a comment

  1. Isakiiev

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

    Reply