Tinkoff Maýa goýumlary üçin statistika hyzmatynyň ösüşine ylham berýänler :
- Habré hakda makala “Tinkoff Maýa goýumlary näme diýmeýär”
- platforma ulanyjylarynyň islegleriniň derňewi
- komissiýalaryny hasaplamak barada makala .
- Näme ara alnyp maslahatlaşylar?
- Statistika hyzmatyny ädimme-ädim ösdürmek:
- Tinkoff Invest API-e birikmek
- Tinkoff Invest API-den brauzerde maglumat çekmek
- Dellalçylyk hasabatlaryny we amallaryny almak
- GetBrokerReport
- Häzirki seneden aýyrmagy göz öňünde tutup, senäni almagyň usuly
- Nesil haýyşyny habar beriň
- Netije:
- GetDividendsForeignIssuer
- GetOperationsByCursor
- Gyzyklanýan maglumatlary hasaplamak we çykarmak
- Bahalar bilen işlemek
- Geljekdäki şertnamalaryň bahasy
- OTC bazary
- Gurallardaky matematiki amallar
- Mikroservis taýýar!
- Netijeler we geljek üçin meýilnamalar
- https://opexbot.info
Näme ara alnyp maslahatlaşylar?
- Diňe ösüş hakda ulanylýan bölek.
- Maliýe gurallary bilen işlemekde möhüm ähmiýete eýe bolan hakyky bilim we tejribe.
- Işlemeli meselelere syn
Şeýlelik bilen, söwda statistikasyny hasaplamak we amatly görnüşde etmek isleýärin.
Statistika hyzmatyny ädimme-ädim ösdürmek:
- Tinkoff Invest API-e birikmek
- Tinkoff Invest API-den brauzerde maglumat çekmek
- Dellalçylyk hasabatlaryny we amallaryny almak
- Gyzyklanýan maglumatlary hasaplamak we çykarmak
- Netijeler we geljek üçin meýilnamalar
Tinkoff Invest API-e birikmek
API-e birikmek üçin https://github.com/Tinkoff/investAPI#sdk resminamalaryndan islendik sdk alyp bilersiňiz . Ora-da npm paket ” tinkoff-sdk-grpc-js “. Bukjanyň döredijiler tarapyndan iň soňky wersiýasyna täzelenmegi möhümdir. Gurnama
npm i tinkoff-sdk-grpc-js
Barlamak
const {createSdk} = zerur (‘tinkoff-sdk-grpc-js’); // Bu konst ýaly TOKEN = ‘YOURAPI’ ýaly alyp bolýan bellik ; // TCS surnallaryndan tapyp boljak programmanyň ady. const appName = ‘tcsstat’; const sdk = createSdk (TOKEN, appName); (async () => { console.log (sdk.users.getAccounts ()) garaşyň; }) ();
Netije: konsolyňyzda hasaplaryňyzyň sanawy görkeziler. Mysal üçin, nuanslary derňeliň:
- Hasaplaryň sanawynda “Maýa goýum banky” bar, onuň bilen API ulanyp bilmersiňiz
- Meýdanlaryň düýeCase-de gelýändigini ýadyňyzdan çykarmaň, resminamalarda bu meýdanlar under_score-da görkezilýär.
- Everywherehli ýerde şeýle bolar, şonuň üçin resminamalardan bir meýdan alyp we göçürip bilmersiňiz.
Peýdaly:
- Bu kody taslama bölüminde tapyp bilersiňiz
https://github.com/pskucherov/tcsstat/tree/step1 https://github.com/pskucherov/tcsstat/compare/step1
Tinkoff Invest API-den brauzerde maglumat çekmek
Next.js we socket.io aldym. Bu güýçli maslahat däl, öz islegiňize görä saýlaň.
npx create-next-app @ iň soňky npm i socket.io socket.io-müşderi
Derrew dostluk ädimine indiki + soket + investapi geçýäris we ähli jikme-jiklikler üçin bu ädimiň Peýdaly bölümini görýäris. Jikme-jiklikleri düşündirerin:
- Nodejs (serwer) tarapynda sahypalar / api / investapi.js faýly bar. Bu ýerde socket.io serwerini döredýäris we investapi-e birikýäris.
- Brauzer (müşderi) tarapynda, rozetka arkaly serwere birikýäris we dellaldan hasap maglumatlary soraýarys.
- Serwerdäki dellaldan maglumatlary alýarys, soň bolsa müşderä iberýäris. Müşderide kabul edilende, brauzerde görkezilýär.
Netije: brauzer konsolynda hasaplar hakda maglumatlary görüp bileris. .Agny, soňky ädimde serwer konsolyndaky (nodejs) hasaplar baradaky maglumatlary gördük, häzirki ädimde bu maglumatlary müşderä (brauzer) geçirdik.
Indi brauzerden hasap saýlap bilersiňiz, bellik ýok bolsa, konsola ýalňyşlyk iberilýär. Iş ýönekeý we täze zat däl, şonuň üçin diňe borçnamalara baglanyşyk berýärin
- https://github.com/pskucherov/tcsstat/commit/7e1ac57061e5e971588479015b06d8814d6609a9
- https://github.com/pskucherov/tcsstat/commit/b28ac973a57494f5232589b4cb6b9fb13b8af759
Peýdaly:
- Indiki we rozetka nädip tapmalydygyny bu ýerde jikme-jik beýan edýär .
- Dostluk kody indiki + soket + investapi:
https : Soraglaryňyz bar bolsa soraň. https://github.com/pskucherov/tcsstat/tree/step2 https://github.com/pskucherov/tcsstat/compare/step1…step2
Dellalçylyk hasabatlaryny we amallaryny almak
Dellalçylyk hasabatlaryny we amallaryny almagyň üç usuly bar
Ilkibaşdan bilmek möhümdir:
- Dellalçylyk hasabaty T-3 re modeiminde döredilýär. söwdalar hakyky ýerine ýetirilenden soň şol ýerde görkezilýär.
- Şoňa görä, soňky iki günüň dowamynda bu hasabaty haýyş etseňiz, üç günüň içinde taýýar bolar.
- Soňky günlerdäki amallary almak üçin amallary almak usulyny ulanýarys, ýöne dellalçylyk hasabaty döredilenden soň olaryň şahsyýetiniň we mazmunynyň üýtgäp biljekdigini ýadyňyzdan çykarmaň.
GetBrokerReport
Dellalçylyk hasabatyny almak üçin hasabyň idini, hasabatyň başlanan senesini we gutarýan senesini almaly, ýöne 31 günden köp bolmaly däl. _Broker_report_request döretmek, API-e hasabat taýýarlamak , jogap hökmünde bir mesele almak üçin haýyş iberýäris . Ondan soň, bu taskId ulanyp, _broker_report_response almakdan maglumat alýarys .
- TaskID-i bu seneler üçin hemişelik ýatda saklamaly.
- Loseitiren bolsaňyz, talap edilýän seneler üçin hasabat ilki nesil haýyşyna jogap hökmünde geler,
- Soň bolsa asla gelmez.
[/ spoiler] Geliň kod ýazmaga başlalyň
Häzirki seneden aýyrmagy göz öňünde tutup, senäni almagyň usuly
const getDateSubDay = (subDay = 5, start = true) => { const senesi = täze Sene (); date.setUTCDate (date.getUTCDate () – subDay); if (start) { date.setUTCHours (0, 0, 0, 0); } başga { senesi.setUTCHours (23, 59, 59, 999); } gaýdyp geliş senesi; };
Nesil haýyşyny habar beriň
const brokerReport = garaşyň (sdk.operations.getBrokerReport) ({ generateBrokerReportRequest: { accountId, -den , }, });
Netije:
- Buýrugyň ilkinji ýerine ýetirilmegi netijesinde, TasId-i alýarys.
- Hasabat dellalyň tarapynda döredilip başlandy. Haçan taýyn bolany belli däl, hasabata garaşmak bilen wagtal-wagtal “TaskId” -e garaşýarys we garaşýarys.
- Näme üçin? Sebäbi hasabat taýýar däl bolsa, ýalňyşlyk goýberýär. Hasabat dellalyň tarapynda taýýar däl bolsa, bu koduňyzdaky ýalňyşlyk. Işlemegiňizi haýyş edýäris: 30058 | INVALID_ARGUMENT | mesele entek gutarmady, soňrak synanyşyň
Hasabata garaşmak we almak kody şuňa meňzeýär.
const timer = async time => new täze Wadany yzyna gaýtarmak (çözmek => setTimeout (çözmek, wagt)); } const getBrokerResponseByTaskId = async (taskId, sahypa = 0) => { synap görmek { gaýdyp garaşmak (sdk.operations.getBrokerReport) ({ getBrokerReportRequest: { taskId, sahypa, }, }); } tutmak (e) { console.log (‘garaş’, e); taýmer garaşyň (10000); yzyna gaýdyp gel getBrokerResponseByTaskId (taskId, sahypa); } };
Soň şol bir jady bolýar. Scriptazgylarymyzy duruzýarys, täzeden başlaýarys, bizde wezipe ýok. Kody “TasId” haýyşy bilen ýerine ýetirýäris, ýöne indi “TasId” -i almaýarys, derrew hasabat berýäris. Jady! Hemişe şeýle bolsa, hemme zat gowy bolardy. Emma bir aýyň içinde asla maglumat bolmaz. Peýdaly :
- Bu ýerde we şu ýerde birneme teoriýa beýan edilýär .
- Kody bir ýere jemläp, taslama şuňa meňzeş bir zat görüner.
https://github.com/pskucherov/tcsstat/tree/step3.1 https://github.com/pskucherov/tcsstat/compare/step3.1
- Kimdir biri bu meselä duşsa, meselä hoş geldiňiz . Bu jadydan soň, güýjüni ýitirer we nähilidir bir üýtgeşik bolar. Emma häzirki pursatda (03/21/2023) edil şonuň ýaly işleýär.
GetDividendsForeignIssuer
Kimdir biri bu usulyň öňki görnüşine meňzeýär diýip pikir edip biler we diňe amallaryň adyny üýtgedýän ýekeje usuly ulanyp bilersiňiz. Emma olar çak etmediler! Ol ýerde at dakmak usullarda-da, gaýdyp gelen maglumatlarda-da gaty tapawutlanýar. Sahypany sanamak 0-dan, soň bolsa 1-den başlaýar. Bularyň hemmesine bulaşmazlyk üçin iki dürli usul ýazmak has aňsat. Geň zat, sebäbi işiň logikasy birmeňzeş. Bir usul ýasamaga synanyşanymda uzak wagtlap tüýkürdim, kod azdy. Bu ýerde hiç hili mysal bolmaz.
GetOperationsByCursor
Üçüsinden iň halanýan zadym. Iň takyk bolmasa-da, iň laýyk. Hasap döretmegiň başyndan iň ýokary senä (hasaby ýapmak ýa-da häzirki hasap) haýyş edýäris. Jogap alýarys, kursory alýarys we maglumatlar bar bolsa gaýtadan haýyş edýäris. Kod ýokardaky mysallara garanyňda has gysga.
const timer = async time => new täze Wadany yzyna gaýtarmak (çözmek => setTimeout (çözmek, wagt)); } const getOperationsByCursor = async (sdk, accountId, -dan, kursor = ”) => { synap gör { const reqData = { accountId, çäkden , 1000: ştat: sdk.OperationState.OPERATION_STATE_EXECUTED, Komissionsiz: ýalan, söwda etmezden: ýalan, gijeki gijesi: ýalan, kursor, }; gaýdyp garaş sdk.operations.getOperationsByCursor (reqData); } tutmak (e) tim garaşýan taýmer (60000); GetOperationsByCursor (sdk, accountId, -den, kursor = ”) garaşyň; } };
Işlemegiň taslamasy şu ýerde: https://github.com/pskucherov/tcsstat/tree/step3.3 https://github.com/pskucherov/tcsstat/compare/step3.3 Indi kabul ediş amallaryny goşmaga taýyn amalymyz. Dogry ýerine ýetirilen bolsa, hasabyň barlygy üçin dellalçylyk hasabatlaryny almaly. Missingitirilen maglumatlar üçin şol bir T-3, amallardan täzeden ýükläň. Emma muny aýratyn makala bölmek mümkin. Duşuşjak esasy nuanslaryňyzdan ýelim amallary we dellalçylyk hasabaty.
- Bu gün dellalçylyk hasabatyny we zerur seneler üçin amallary alan bolsaňyz, hemmesini maglumat bazasyna salyň, onda hiç hili mesele ýok.
- Ertir hasabatdan we amallardan maglumatlaryň indiki bölegini alanyňyzda we bar bolan maglumatlar bazasy bilen sinhronlamak kararyna geleniňizde kynçylyk çekersiňiz.
- Gaýtadan işlenenden soň gabat gelmeýän ýa-da üýtgeýän id hakda köp nuans
- Soňra OTC bazary üçin id-ler asla gabat gelenok.
- API-iň aýratynlyklary sebäpli ýene-de gabat gelmeýän sinhronlaşdyryş gurallarynyň nuanslary. Emma bu başga bir waka.
Amallarymyza amallar barada maglumat goşalyň. Esasy sorag maglumatlaryň nirede işlenjekdigi we saklanjakdygy bolar.
- Özüňiz etseňiz, dürli enjamlardan şol bir maglumatlary sarp edersiňiz. Soňra serwerde maglumatlary gaýtadan işlemeli we saklamaly.
- Dürli ulanyjylar tarapyndan sarp edilýän köp dürli maglumatlar bar bolsa, has möhümini çözmeli: ulanyjylaryň tizligi ýa-da demiriň tygşytlanmagy. Kim çäksiz mukdarda enjam satyn alyp bilse, serwerindäki hemme zady sanap, ulanyjylar üçin gaty çalt edýär, telefonlarda gaty möhüm bolan batareýa we traffik ýaly ulanyjy çeşmelerini tygşytlaýar.
Öz gezeginde brauzerde sanamak prinsipde iň amatly çözgüt däl. Şonuň üçin gymmat däl zat, ony serwerimizde hasaplaýarys. Galan zatlary müşderä goýýarys. Hakykatdanam serwerdäki komissiýany alyp, hasaplamak isleýärin. Hereöne bu ýerde “interaktiwlik” diýilýän nuans gelýär. Müňlerçe amallaryňyz bar diýeliň we olary almak üçin bäş minut gerek. Ulanyjy şu wagt näme alar? Egriji? Ösüş? Infa näçeräk ýüklendi? Amalda ulanyjy eýýäm bir zady görüp bilse, “işjeň garaşmagy” ulanmak idealdyr. Netije :
- Sahypa ýüklemek
- Allhli hasap-fakturalar talap edilýär
- Ondan soň, ähli hasaplar üçin ýerine ýetirilen amallar üçin komissiýalar bilen ähli amallar talap edilýär. Maglumat alnanda, brauzerde görkezilýär.
Wakalardaky maglumatlary her gezek süzmezlik üçin, her bir hasap üçin öz wakamyzy çekýäris. Şuňa meňzeş:
socket.emit (‘sdk: getOperationsCommissionResult_’ + accountId, { elementler: maglumatlar? .items, inPresent: Boolean (nextCursor), });
Işe başlamagyň taslamasy şu ýerde: https://github.com/pskucherov/tcsstat/tree/step3 https://github.com/pskucherov/tcsstat/compare/step2…step3 Geçmek. Bu setiri okanyňyz gaty gowy!
Gyzyklanýan maglumatlary hasaplamak we çykarmak
Kimiň haýsy maglumata mätäçdigine baglydyr. Şonuň üçin derrew duşjak esasy nuanslaryňyzy aýdýaryn.
Bahalar bilen işlemek
Maliýe bilen işleýänleriň hemmesi pul amallarynyň diňe sanlar bilen ýerine ýetirilmelidigini bilýär. Onluk nokatdan soň bahalaryň nädogrylygy we köp sanly amal bilen jemlenen ýalňyşlyk sebäpli. Şol sebäpli ähli bahalar aşakdaky MoneyValue görnüşinde görkezilýär
meýdany | görnüşi | Düşündiriş |
---|---|---|
walýuta | setir | Setirli ISO walýuta kody |
birlikleri | int64 | Jeminiň bitewi bölegi, otrisatel san bolup biler |
nano | int32 | Mukdarynyň bölek bölegi, otrisatel san bolup biler |
Olary aýratyn işleýäris, soňra bahanyň bahasyna getirýäris:
sitata.units + sitata.nano / 1e9
Geljekdäki şertnamalaryň bahasy
Geljekleriň bahasy ballarda görkezilýär, walýuta gelejegiňiz bar bolsa, nyrhy bilmeli. Elbetde ballardaky baha we baha basgançagy. Geleşiklerden alnan girdejini hasaplasaňyz, bu atyp biler, sebäbi. bahany mukdar bilen köpeltmek bilen jemi mukdaryny hasaplasaň. Bu ýerde seresap bolmaly. Häzirlikçe, munuň nähili gidýändigini göreris. Bu walýuta gelejeklerine degişlidir, beýleki ýerlerde hemme zat gowy.
OTC bazary
Bu bazaryň köp aýratynlygy bar, geliň, onuň üstünde amallary aýratyn öwreneliň. Sinhronlaşdyryş amallaryna başlanyňyzda, gural bilen dogry gabat gelmek üçin figi / tekerini şol bir görnüşe getirmeli bolarsyňyz. Muny dellalçylyk hasabaty bilen sinhronlap başlanyňyzda, şol bir geleşigiň tradeID-iň geleşikleriň başynda harplary bar we olar dellal hasabatynda ýok bolar. Şonuň üçin olary deňeşdirip bolmaz … ahem-ahem … deňeşdirmek bilen! Söwda wagtyna gabat geldim, bir söwda söwdasynyň beýlekisinde bardygyny deňeşdirdim. Dogry, bilemok. Kim muňa duş gelse we kim oňa üns berse, meselä geliň ýa-da täzesini başlaň.
Gurallardaky matematiki amallar
Gözlemän, tutuş sanaw bilen matematiki amallary ýerine ýetirmek mümkin däl. Softumşaklyga ýylylyk goşmazlyk üçin, elmydama walýutany barlaýarys we diňe walýutanyň gabat gelýändigine we ballaryň islenýän walýuta öwrülendigine ynanýarys. Bank belgileri bilen işlemek barada bilim bilen ýaraglanan, hasaplaryň hersine sarp edilen komissiýany hasaplarys. Şuňa meňzeş: https://github.com/pskucherov/tcsstat/tree/step4 https://github.com/pskucherov/tcsstat/compare/step3…step4
Mikroservis taýýar!
https://github.com/pskucherov/tcsstat Öý işi hökmünde, hyzmatyň haýal birikme bilen işleýändigini, birikmeler kesilende, internet kesilende, dellalyň ýalňyşlyklary ýa-da möhletleri gutaranda barlap bilersiňiz.
Netijeler we geljek üçin meýilnamalar
- Esasy amallar we Invest API bilen işlemek barada öwrendi
- Wagt ~ 10 sagat sarp etdi
- Kynçylyk derejesi ~ kiçi + / pes orta
Mikroservisi arassalamagy dowam etdirseňiz, şuňa meňzeş bir zat bilen gutararsyňyz
https://opexbot.info
Bu meniň ösüşim, düşünmekden, ylgamakdan we özbaşdak hasaplamakdan gaty ýalta adamlar üçin. Ulanyjylaryň islegi boýunça ol ýerde analitika goşmagy meýilleşdirýärin. Makalany halanan bolsaňyz, telegram kanalyma ýazylyň .
Полезная статья. Не могу представить, сколько усилий автора потребовалось, чтобы все описать. Благодарю.