Ba iad na nithe a spreag forbairt na seirbhíse staitisticí do Tinkoff Investments ná:
- alt ar Habré “Cad nach bhfuil Tinkoff Investments á rá”
- anailís ar mhianta úsáideoirí an ardáin
- alt faoi ríomh na gcoimisiúin .
- Cad a bheidh á phlé?
- Seirbhís staidrimh a fhorbairt céim ar chéim:
- Ceangal le Tinkoff Invest API
- Sonraí a tharraingt ó Tinkoff Invest API i mbrabhsálaí
- Tuarascálacha bróicéireachta agus idirbhearta a fháil
- GetBrokerReport
- Modh chun an dáta a fháil, ag cur san áireamh an dealú ón dáta reatha
- Déan tuairisc ar iarratas giniúna
- Toradh:
- GetDividendsForeignEisitheoir
- GetOperationsByCursor
- Ríomh agus aschur faisnéise inspéise
- Ag obair le praghsanna
- An costas a bhaineann le conarthaí todhchaíochtaí
- Margadh thar an gcuntar
- Oibríochtaí matamaitice ar uirlisí
- Tá microservice réidh!
- Conclúidí agus pleananna don todhchaí
- https://opexbot.info
Cad a bheidh á phlé?
- Níl ach an chuid fheidhmeach faoin bhforbairt.
- Fíor-eolas agus taithí, atá an-tábhachtach le linn oibriú le hionstraimí airgeadais.
- Forbhreathnú ar shaincheisteanna le hobair orthu
Mar sin, ba mhaith liom staitisticí trádála a ríomh agus é a dhéanamh ar bhealach áisiúil.
Seirbhís staidrimh a fhorbairt céim ar chéim:
- Ceangal le Tinkoff Invest API
- Sonraí a tharraingt ó Tinkoff Invest API i mbrabhsálaí
- Tuarascálacha bróicéireachta agus idirbhearta a fháil
- Ríomh agus aschur faisnéise inspéise
- Conclúidí agus pleananna don todhchaí
Ceangal le Tinkoff Invest API
Chun nascadh leis an API, is féidir leat aon sdk a bhaint as an doiciméadú https://github.com/Tinkoff/investAPI#sdk . Nó pacáiste npm ` tinkoff-sdk-grpc-js `. Tá sé tábhachtach go ndéanann na forbróirí an pacáiste a nuashonrú go dtí an leagan is déanaí. Suiteáil
npm agus tinkoff-sdk-grpc-js
Ag seiceáil
const { createSdk } = a cheangal (‘tinkoff-sdk-grpc-js’); // Comhartha is féidir a fháil mar seo const TOKEN = ‘YOURAPI’; // Ainm an fheidhmchláir trína bhféadfar tú a fháil i logaí TCS. const appName = ‘tcsstat’; const sdk = createSdk(TOKEN, appName); (async () => { console.log(fanacht le sdk.users.getAccounts()); })();
Toradh: taispeánfar liosta de do chuntais sa chonsól. Mar shampla, déanaimis anailís ar na nuances:
- I liosta na gcuntas tá “Banc Infheistíochta”, nach féidir leat oibriú leis ag baint úsáide as an API
- Tabhair faoi deara le do thoil gur i camelCase a thagann na réimsí, agus cuirtear na réimsí seo i láthair i under_score sa doiciméadú .
- Beidh sé mar seo i ngach áit, mar sin ní féidir leat réimse a thógáil agus a chóipeáil ón doiciméadú.
Úsáideach:
- Is féidir leat an cód seo a fháil i mbrainse an tionscadail
https://github.com/pskucherov/tcsstat/tree/step1 https://github.com/pskucherov/tcsstat/compare/step1
Sonraí a tharraingt ó Tinkoff Invest API i mbrabhsálaí
Thóg mé next.js agus socket.io. Ní moladh láidir é seo, roghnaigh de do rogha féin.
npx create-next-app@latest npm agus socket.io socket.io-client
Leanaimid ar aghaidh láithreach chuig an gcéim chairdeas seo chugainn+soicéad+investapi, agus féach an chuid Úsáideacha den chéim seo le haghaidh na sonraí go léir. Déanfaidh mé cur síos ar na sonraí:
- Ar thaobh nódejs (freastalaí), tá comhad pages/api/investapi.js. Seo an áit a chruthaímid an freastalaí socket.io agus nascaimid le investapi.
- Ar thaobh an bhrabhsálaí (cliant), déanaimid teagmháil leis an bhfreastalaí trí soicéad agus iarraimid sonraí cuntais ón mbróicéir.
- Faighimid sonraí ón mbróicéir ar an bhfreastalaí, ansin é a sheoladh chuig an gcliant. Nuair a fhaightear iad ar an gcliant, taispeántar iad sa bhrabhsálaí.
Toradh: sa chonsól brabhsálaí is féidir linn faisnéis a fheiceáil faoi chuntais. Is é sin, sa chéim dheireanach, chonaic muid faisnéis faoi chuntais sa chonsól freastalaí (nodejs), sa chéim reatha, d’aistrigh muid an fhaisnéis seo chuig an gcliant (brabhsálaí).
Anois déanaimis é ionas gur féidir leat cuntas a roghnú ón mbrabhsálaí, agus mura bhfuil aon chomhartha ann, seoltar earráid chuig an consól. Tá an obair simplí agus níl aon rud nua, mar sin ní thugaim ach naisc do ghealltanais
- https://github.com/pskucherov/tcsstat/commit/7e1ac57061e5e971588479015b06d8814d6609a9
- https://github.com/pskucherov/tcsstat/commit/b28ac973a57494f5232589b4cb6b9fb13b8af759
Úsáideach:
- Déantar cur síos mion anseo ar conas cairde a dhéanamh ina dhiaidh sin agus ar an soicéad .
- Cód cairdis seo chugainn+soicéad+infheistiú:
https://github.com/pskucherov/tcsstat/commit/a443a4ac1bb4f0aa898f638128755fe7391ee381 I gcás a bhfuil an méid thuas deacair, ansin fanaimid ag an gcéim seo agus déileáil leis an gcód. Má tá ceisteanna agat – cuir ceist. https://github.com/pskucherov/tcsstat/tree/step2 https://github.com/pskucherov/tcsstat/compare/step1…step2
Tuarascálacha bróicéireachta agus idirbhearta a fháil
Tá trí mhodh ann chun tuarascálacha bróicéireachta agus idirbhearta a fháil
Ón tús tá sé tábhachtach go mbeadh a fhios agat:
- Gintear an tuarascáil bróicéireachta sa mhodh T-3, i.e. ceirdeanna ar taispeáint ann tar éis a fhorghníomhú iarbhír.
- Dá réir sin, má iarrann tú an tuarascáil seo le dhá lá anuas, beidh sé réidh i gceann trí lá.
- Chun margaí a dhéanamh le haghaidh na laethanta deiridh, bainimid úsáid as an modh chun oibríochtaí a fháil, ach cuimhnigh go bhféadfadh a n-aitheantas agus a n-ábhar athrú tar éis an tuarascáil bróicéireachta a fhoirmiú.
GetBrokerReport
Chun tuarascáil bróicéireachta a fháil, ní mór duit aitheantas an chuntais, dáta tosaigh agus dáta deiridh na tuarascála a ghlacadh, ach gan a bheith níos faide ná 31 lá. Seolaimid iarratas chun tuairisc a ghiniúint chuig an API i nginiúint _broker_report_request , faigh tascId mar fhreagra. Tar éis sin, ag baint úsáide as an taskId seo, faighimid sonraí ó get _broker_report_response.
- Ní mór duit an TaskID a shábháil go deo do na dátaí seo.
- Ós rud é má chailleann tú é, ansin do na dátaí iarrtha a thiocfaidh an tuarascáil ar dtús mar fhreagra ar an iarratas giniúna,
- Agus ansin ní bheidh sé teacht ar chor ar bith.
[/ spoiler] Cuirimis tús le cód a scríobh
Modh chun an dáta a fháil, ag cur san áireamh an dealú ón dáta reatha
const getDateSubDay = (subDay = 5, tús = true) => { const date = dáta nua(); date.setUTCDate(date.getUTCDate() – subLá); má (tús) { date.setUTCHOurs(0, 0, 0, 0); } eile { date.setUTCHOurs(23, 59, 59, 999); } dáta fillte; };
Déan tuairisc ar iarratas giniúna
const brokerReport = fanacht (sdk.operations.getBrokerReport)({ generationBrokerReportRequest: { accountId, ó, chuig, }, });
Toradh:
- Mar thoradh ar an gcéad fhorghníomhú an ordaithe, faigheann muid an taskId.
- Tosaíonn an tuarascáil a ghiniúint ar thaobh an bhróicéir. Nuair a bhíonn sé réidh ní fios, fanaimid agus tarraingímid an tascId go tréimhsiúil in oirchill na tuarascála.
- Cén fáth? Toisc mura bhfuil an tuarascáil réidh, caitheann sé earráid. Mura bhfuil an tuarascáil réidh ar thaobh an bhróicéir, is earráid é seo i do chód. Próiseáil: 30058|INVALID_ARGUMENT|níl an tasc críochnaithe fós, bain triail eile as níos déanaí
Breathnaíonn an cód le haghaidh fanacht agus tuairisc a fháil rud éigin mar seo.
const timer = am async => { seol ar ais Gealltanas nua(réiteach => Am Amuigh (réiteach, am)); } const getBrokerResponseByTaskId = async (taskId, page = 0) => { bain triail as { filleadh ag fanacht (sdk.operations.getBrokerReport)({ getBrokerReportRequest: { taskId, leathanach, }, }); } ghabháil (e) { console.log( ‘fan’, e); fanacht ar an lasc ama(10000); filleadh fan le getBrokerResponseByTaskId(taskId, leathanach); } };
Ansin tarlaíonn an draíocht chéanna. Stopaimid ár script, cuirimid tús leis arís, níl taskId againn. Déanaimid an cód a fhorghníomhú leis an iarratas taskId, ach ní fhaighimid an taskId a thuilleadh, ach an tuarascáil láithreach. Draíocht! Agus bheadh gach rud go breá má bhí sé i gcónaí mar seo. Ach i mí ní bheidh aon sonraí ar chor ar bith. Úsáideach :
- Leagtar amach beagán teoiric anseo agus anseo .
- Agus an cód á chur le chéile, beidh cuma rud éigin mar seo ar an dréacht.
https://github.com/pskucherov/tcsstat/tree/step3.1 https://github.com/pskucherov/tcsstat/compare/step3.1
- Má thagann duine trasna air seo, fáilte romhat chuig an gceist . Tar éis dóibh an draíocht seo a dheisiú, caillfidh sé a chumhacht agus beidh sé difriúil ar bhealach éigin. Ach faoi láthair (03/21/2023) oibríonn sé díreach mar sin.
GetDividendsForeignEisitheoir
B’fhéidir go gceapfadh duine go bhfuil an modh cosúil leis an gceann roimhe seo agus is féidir leat modh amháin a úsáid nach n-athraíonn tú ach ainm na n-oibríochtaí. Ach ní raibh siad buille faoi thuairim! Tá an t-ainmniú an-difriúil sna modhanna agus san fhaisnéis a chuirtear ar ais. Agus tosaíonn an comhaireamh leathanaigh ó 0, ansin ó 1. Chun nach gcuirfí mearbhall ort faoi seo go léir, tá sé níos éasca dhá mhodh éagsúla a scríobh. Cé acu is aisteach, mar gheall ar tá loighic na hoibre mar an gcéanna. Scairt mé ar feadh i bhfad nuair a rinne mé iarracht modh amháin a dhéanamh agus bhí níos lú cód ann. Ní bheidh aon samplaí anseo.
GetOperationsByCursor
An ceann is fearr liom den triúr. Cé nach bhfuil an chuid is mó cruinn, ach an chuid is mó leordhóthanach. Déanaimid iarratas ó thús cuntas a chruthú go dtí an dáta uasta is féidir (cuntas a dhúnadh nó an ceann reatha). Faighimid an freagra, tóg an cúrsóir agus ath-iarr chomh fada agus go bhfuil sonraí. Agus tá an cód níos gonta ná sna samplaí thuas.
const timer = am async => { seol ar ais Gealltanas nua(réiteach => Am Amuigh (réiteach, am)); } const getOperationsByCursor = async (sdk, accountId, ó, go, cúrsóir = ”) => { iarracht { const reqData = { accountId, ó, go, teorainn: 1000, luaigh: sdk.OperationState.OPERATION_STATE_EXECUTED, withoutCommissions: false, ganTrádála: bréagach, ganOvernights: bréagach, cúrsóir, }; filleadh ag fanacht sdk.operations.getOperationsByCursor(reqData); } gabháil (e) { fan an t-amadóir(60000); filleadh fan le getOperationsByCursor(sdk, accountId, ó, chuig, cúrsóir = ”); } };
Tá an dréacht le rith anseo: https://github.com/pskucherov/tcsstat/tree/step3.3 https://github.com/pskucherov/tcsstat/compare/step3.3 Anois táimid réidh le hoibríochtaí glactha a chur leis ár n-iarratas. Má dhéantar é i gceart, ansin ní mór duit tuarascálacha bróicéireachta a fháil le haghaidh an chuntais ar fad a bheith ann. Agus maidir leis na sonraí atá in easnamh, na T-3anna céanna sin, athlódáil ó oibríochtaí. Ach is féidir é seo a dheighilt in alt ar leith. De na príomh nuances a bheidh tú ag teacht ar oibríochtaí gliú agus tuairisc bróicéireachta.
- Má fuair tú inniu tuarascáil bróicéireachta agus idirbhearta do na dátaí riachtanacha, é a chur ar fad sa bhunachar sonraí, ansin níl aon fadhbanna.
- Beidh fadhbanna agat amárach nuair a gheobhaidh tú an chéad chuid eile de shonraí ón tuarascáil agus oibríochtaí agus nuair a shocraíonn tú iad a shioncronú leis an mbunachar sonraí atá ann cheana féin.
- Go leor nuances faoi neamhréir nó athrú aitheantais tar éis próiseála
- Ansin don mhargadh thar an gcuntar, ní hionann na haitheantais ar chor ar bith.
- Chomh maith leis an nuances na n-ionstraimí sioncrónaithe, nach bhfuil ag an am céanna arís, mar gheall ar an peculiarities an API. Ach sin scéal eile.
Cuirimis faisnéis maidir le hoibríochtaí a fháil lenár n-iarratas. Is í an phríomhcheist ná an áit a bpróiseálfar agus a stórálfar na sonraí.
- Má dhéanann tú é duit féin, ídeoidh tú na sonraí céanna ó ghléasanna éagsúla. Ansin ní mór duit sonraí a phróiseáil agus a stóráil ar an bhfreastalaí.
- Má tá go leor sonraí éagsúla á gcaitheamh agat ag go leor úsáideoirí éagsúla, ansin ní mór duit cinneadh a dhéanamh ar a bhfuil níos tábhachtaí: luas na n-úsáideoirí nó an t-iarann a shábháil ar do thaobh. An té atá in acmhainn méid gan teorainn crua-earraí a chomhaireamh gach rud ar a fhreastalaí agus déanann sé an-tapa d’úsáideoirí, ag sábháil acmhainní úsáideora, mar shampla ceallraí agus trácht, rud atá an-tábhachtach ar fhóin.
Ina dhiaidh sin, ní hé comhaireamh sa bhrabhsálaí an réiteach is fearr i bprionsabal. Dá bhrí sin, cad nach bhfuil costasach, measaimid é ar ár bhfreastalaí. Fágaimid an chuid eile don chliant. Ba mhaith liom i ndáiríre a ghlacadh agus a ríomh ar an coimisiún ar an bhfreastalaí. Ach anseo tagann an nuance ar a dtugtar “idirghníomhaíocht”. Ligean le rá go bhfuil na mílte oibríochtaí agat agus tógann sé cúig nóiméad chun iad a fháil. Cad a bheidh ag an úsáideoir ag an am seo? Rothlóir? Dul chun cinn? Infa faoi cé mhéad a uaslódáil? Tá sé iontach “feithimh gníomhach” a úsáid nuair a d’fhéadfadh an t-úsáideoir sa phróiseas rud éigin a fheiceáil cheana féin. Seo é an Toradh:
- Lódáil leathanach
- Iarrtar gach sonrasc
- Tar éis sin, iarrtar gach idirbheart le coimisiúin le haghaidh idirbheart forghníomhaithe do gach cuntas. De réir mar a fhaightear sonraí, rindreáiltear sa bhrabhsálaí é.
Ionas nach ndéantar na sonraí sna himeachtaí a scagadh gach uair, tarraingímid ár n-imeacht féin do gach cuntas. Mar seo:
socket.emit( ’sdk:getOperationsCommissionResult_’ + accountId, { míreanna: data?.items, inProgress: Boolean(nextCursor), });
Tá an dréacht le seoladh anseo: https://github.com/pskucherov/tcsstat/tree/step3 https://github.com/pskucherov/tcsstat/compare/step2…step3 Ag bogadh ar aghaidh. Tá sé iontach go bhfuil an líne seo léite agat!
Ríomh agus aschur faisnéise inspéise
Ag brath ar a bhfuil gá acu cén t-eolas. Dá bhrí sin, inseoidh mé duit láithreach na príomh-nuances a bheidh tú ag teacht.
Ag obair le praghsanna
Tá a fhios ag gach duine a oibríonn le airgeadas nár cheart idirbhearta airgid a dhéanamh ach le slánuimhreacha. Mar gheall ar mhíchruinneas luachanna tar éis an phointe deachúil agus an earráid charnach le líon mór oibríochtaí. Sin é an fáth go gcuirtear na praghsanna go léir i láthair san fhormáid MoneyValue seo a leanas
Gort | cineál | Cur síos |
---|---|---|
airgeadra | teaghrán | Teaghrán cód airgeadra ISO |
aonaid | int64 | Slánuimhir chuid den tsuim is féidir, a bheith ina uimhir dhiúltach |
nana | int32 | Cuid codánach den mhéid is féidir, a bheith ina uimhir dhiúltach |
Déanaimid iad a phróiseáil ar leithligh, ansin iad a thabhairt chuig an luach praghais:
luachan.units + luachan.nano / 1e9
An costas a bhaineann le conarthaí todhchaíochtaí
Cuirtear praghas na todhchaíochtaí i láthair i bpointí, nuair a bhíonn todhchaí airgeadra agat, ní mór duit an ráta a fhios. Agus ar ndóigh an praghas i bpointí agus an chéim praghais. Nuair a bheidh tú ag ríomh an brabús ó idirbhearta, is féidir é seo shoot, mar gheall ar. má ríomhann tú an méid iomlán tríd an bpraghas a iolrú faoin gcainníocht. Anseo ní mór duit a bheith cúramach. Chun anois, beidh orainn a fheiceáil conas a théann sé. Baineann sé seo le todhchaíochtaí airgeadra, in áiteanna eile tá gach rud ceart go leor leis seo.
Margadh thar an gcuntar
Tá go leor peculiarities ag an margadh seo, mar sin déanaimis staidéar a dhéanamh ar oibríochtaí ar leithligh.Nuair a thosaíonn tú ar oibríochtaí sioncrónaithe, tiocfaidh sé amach go gcaithfidh tú figi / ticker a thabhairt chuig an bhfoirm chéanna chun an ionstraim a mheaitseáil i gceart. Nuair a thosaíonn tú ag sioncrónú seo leis an tuarascáil bróicéireachta, beidh sé dul amach go bhfuil an tradeID an idirbhirt céanna litreacha ag tús na n-idirbheart agus nach bhfuil siad sa tuarascáil bróicéireachta. Mar sin, ní féidir iad a chur i gcomparáid … ahem-ahem … i gcomparáid! Mheaitseáil mé an t-am trádála, ticeála agus meaitseáil go bhfuil tradeId amháin i gceann eile. Ceart, níl a fhios agam. An té a bhuaileann leis seo agus a bhfuil cúram air, tar chuig an gceist nó cuir tús le ceann nua.
Oibríochtaí matamaitice ar uirlisí
Tá sé dodhéanta, gan breathnú, oibríochtaí matamaitice a dhéanamh leis an liosta iomlán. Chun nach gcuirfear te go bog, ní dhéanaimid seiceáil i gcónaí ar an airgeadra agus ar an bpróiseas ach amháin má táimid cinnte go bhfuil an t-airgeadra ag teacht, agus déantar na pointí a thiontú go dtí an t-airgeadra atá ag teastáil. Agus eolas againn faoi oibriú le huimhreacha bainc, ríomhfaimid an coimisiún a chaitear ar gach ceann de na cuntais. Cosúil leis seo: https://github.com/pskucherov/tcsstat/tree/step4 https://github.com/pskucherov/tcsstat/compare/step3…step4
Tá microservice réidh!
https://github.com/pskucherov/tcsstat Mar obair bhaile, is féidir leat a sheiceáil má oibríonn an tseirbhís le nasc mall, nuair a bhristear naisc, nuair a bhíonn an Idirlíon dícheangailte, nuair a bhíonn earráidí nó teorainneacha éagtha ar thaobh an bhróicéir.
Conclúidí agus pleananna don todhchaí
- D’fhoghlaimíomar faoi oibríochtaí bunúsacha agus oibriú leis an Invest API
- Am caite ~ 10 n-uaire
- Leibhéal deacrachta ~ sóisearach+ / meán íseal
Má leanann tú leis an micriseirbhís a bheachtú, seans go mbeidh rud éigin mar seo agat
https://opexbot.info
Is é seo mo fhorbairt, dóibh siúd atá ró-leisciúil a thuiscint, a reáchtáil agus a chomhaireamh ar a gcuid féin. Tá sé beartaithe agam anailísíocht a chur leis ansin ar iarratas ó úsáideoirí. Má thaitin an t-alt leat, liostáil le mo chainéal teileagram .
Полезная статья. Не могу представить, сколько усилий автора потребовалось, чтобы все описать. Благодарю.