Ko nga kaiwhakauru i muri i te whanaketanga o te ratonga tatauranga mo Tinkoff Investments ko:
- tuhinga mo Habré “He aha te korero a Tinkoff Investments”
- te tātari i nga hiahia o nga kaiwhakamahi papaaho
- he tuhinga mo te tatauranga o nga komihana .
- He aha ka matapakihia?
- Te whakawhanake i tetahi ratonga tatauranga ma te taahiraa:
- Hononga ki Tinkoff Invest API
- Te tuhi raraunga mai i Tinkoff Invest API i roto i te tirotiro
- Te whiwhi i nga purongo hokohoko me nga whakawhitinga
- GetBrokerReport
- Tikanga mo te tiki i te ra, me te whakaaro ki te tangohanga mai i te ra o naianei
- Tono hanga ripoata
- Hua:
- TikinaDividendsForeignIssuer
- GetOperationsByCursor
- Te tatauranga me te whakaputanga o nga korero e pa ana
- Te mahi me nga utu
- Ko te utu mo nga kirimana a meake nei
- maakete OTC
- Nga mahi pangarau i runga i nga taputapu
- Kua rite te Microservice!
- Nga whakatau me nga mahere mo nga ra kei te heke mai
- https://opexbot.info
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:
- Hononga ki Tinkoff Invest API
- Te tuhi raraunga mai i Tinkoff Invest API i roto i te tirotiro
- Te whiwhi i nga purongo hokohoko me nga whakawhitinga
- Te tatauranga me te whakaputanga o nga korero e pa ana
- 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 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).
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
- https://github.com/pskucherov/tcsstat/commit/7e1ac57061e5e971588479015b06d8814d6609a9
- 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
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.
- 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.
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:
- 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 nei
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.
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.
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…step4
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 .
Полезная статья. Не могу представить, сколько усилий автора потребовалось, чтобы все описать. Благодарю.