Gabaasa daldalaa waliin hojjechuu fi komishinii shallaguuf ofumaan hojjechuuf Tinkoff Invest API fayyadamuun microservice hojjechaa jirra.

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

Tajaajila istaatiksii Tinkoff Investments akka qophaa’u kan kakaasan :

Maaltu irratti mari’atama?

  • Kutaa hojiirra oole qofa waa’ee misoomaa.
  • Beekumsaa fi muuxannoo dhugaa, kanneen meeshaalee faayinaansii wajjin hojjechuu keessatti baay’ee barbaachisoo ta’an.
  • Haala waliigalaa dhimmoota irratti hojjetamuu qaban

Kanaafuu, istaatiksii daldalaa shallagee karaa mijataa ta’een hojjechuu barbaada. 

Tajaajila istaatistiksii tartiiba tartiibaan qopheessuu: 

  1. Walitti hidhamiinsa Tinkoff Invest API
  2. Deetaa Tinkoff Invest API irraa biraawzari keessatti kaasuun
  3. Gabaasa daldalaa fi daldala argachuu
  4. Shallaggii fi oomisha odeeffannoo fedhii qabu
  5. Xumuraa fi karoora gara fuula duraa

Walitti hidhamiinsa Tinkoff Invest API

API waliin walqabsiisuuf, sdk kamiyyuu galmee https://github.com/Tinkoff/investAPI#sdk irraa fudhachuu dandeessa . Yookiin paakeejii npm ` tinkoff-sdk-grpc-js `. Paakeejiin kun warra hojjetaniin gara version isa haaraatti fooyya’uun barbaachisaa dha. Itti fe’uu

npm ani tinkoff-sdk-grpc-js

Sakatta’uu

const { uumuuSdk } = barbaadu (‘tinkoff-sdk-grpc-js’);   // Mallattoo akka kanaa argamuu danda’u   const TOKEN = ‘YOURAPI’;   // Maqaa aplikeeshinii galmeewwan TCS keessatti ittiin argamuu dandeessu. const Maqaa app = ‘tcsstat’;   const sdk = Sdk uumuu (TOKEN, Maqaa app); (async () => {     konsolii.log (sdk.fayyadamtoota.herrega argachuu () eegaa); }) ();

Bu’aa: tarreen herrega keetii konsolii keessatti ni mul’ata. Fakkeenyaaf, mee nuances haa xiinxallu:Gabaasa daldalaa waliin hojjechuu fi komishinii shallaguuf ofumaan hojjechuuf Tinkoff Invest API fayyadamuun microservice hojjechaa jirra.

  • Tarree herregaa keessatti “Baankii invastimantii” jira, kan API fayyadamuun waliin hojjechuu hin dandeenye
  • Hubadhaa man’eewwan camelCase keessatti kan dhufan yoo ta’u, galmee keessatti man’eewwan kun qabxii_jalaatiin dhiyaataniiru. 
  • Bakka hundatti akkas ta’a, kanaaf dirree tokko galmee irraa fudhachuu fi waraabuu qofa hin dandeessu.

Kan nama fayyadu:

  • Koodii kana damee pirojektii keessatti argachuu dandeessu

https://github.com/pskucherov/tcsstat/muka/tarkaanfii1 https://github.com/pskucherov/tcsstat/wal bira qabi/tarkaanfii1   

Deetaa Tinkoff Invest API irraa biraawzari keessatti kaasuun

Next.js fi socket.io fudhadhe. Kun gorsa cimaa miti, akka fedhii keessaniitti filadhaa. 

npx uumuu-itti aanu-app@latest npm i socket.io socket.io-maamila

Achumaan gara tarkaanfii hiriyummaa next+socket+investapi tti ceena, bal’ina hundaaf  kutaa Faayidaa tarkaanfii kanaa ilaalla. Bal’inaan ibsa: 

  • Gama nodejs (tarjaa) irratti, faayilii pages/api/investapi.js jira. Kunis bakka socket.io server uumnee investapi waliin wal qunnamnudha.
  • Gama biraawzari (maamila)tiin karaa socket server waliin wal qunnamnee daataa herregaa broker irraa gaafanna. 
  • Daataa daldalaa sarvarii irratti argamu irraa arganna, sana booda gara maamilaatti ergina. Yeroo maamila irratti fudhataman, biraawzari keessatti agarsiifamu. 

Bu’aan:  browser console keessatti odeeffannoo waa’ee accounts arguu dandeenya. Kunis, tarkaanfii isa dhumaa irratti, odeeffannoo waa’ee herrega konsoolii sarvarii (nodejs) keessatti argine, tarkaanfii ammaa keessatti, odeeffannoo kana gara maamilaatti (browser) dabarsine.

Gabaasa daldalaa waliin hojjechuu fi komishinii shallaguuf ofumaan hojjechuuf Tinkoff Invest API fayyadamuun microservice hojjechaa jirra.

Amma akkaawuntii biraawzari irraa filachuu dandeessanitti haa goonu, yoo token hin jirre immoo dogongorri gara konsooliitti ergama. Hojiin salphaa fi waan haaraa miti, kanaaf ani hidhaa commits qofa kenna

  1. https://github.com/pskucherov/tcsstat/commit/7e1ac57061e5e971588479015b06d8814d6609a9 irratti kan argamu ta’uu ibsameera
  2. https://github.com/pskucherov/tcsstat/commit/b28ac973a57494f5232589b4cb6b9fb13b8af759 Afaan Oromoo fi Jechoota Dinqisiiso Afaan Oromoo 

Kan nama fayyadu:

https://github.com/pskucherov/tcsstat/commit/a443a4ac1bb4f0aa898f638128755fe7391ee381 Kan armaan olii kun ulfaataa ta’eef, sana booda sadarkaa kanarra hafnee koodii waliin ilaalla. Gaaffii yoo qabaattan – gaafadhaa. https://github.com/pskucherov/tcsstat/muka/tarkaanfii2ffaa https://github.com/pskucherov/tcsstat/wal bira qabi/tarkaanfii1…tarkaanfii2

Gabaasa daldalaa fi daldala argachuu

Gabaasa daldalaa fi daldalaa argachuuf maloonni sadii jiru

  1. GabaasaBroker argachuu
  2. GetDividendsAbbaa Biyya Alaa
  3. HojiiwwanKaarsariin Argadhu

Jalqabarraa kaasee beekuun barbaachisaadha: 

  • Gabaasni daldalaa haala T-3 keessatti uuma, i.e. daldaltoonni erga qabatamaan raawwatamanii booda achitti agarsiifamu. 
  • Haaluma kanaan gabaasa kana guyyoota lamaan darbaniif yoo gaafattan guyyoota sadii booda qophii ta’a. 
  • Guyyoota dhumaatif daldala argachuuf, mala daldala fudhachuuf fayyadamna, garuu id fi qabiyyeen isaanii erga gabaasni daldalaa uumamee booda jijjiiramuu akka danda’u yaadadhu.

GabaasaBroker argachuu

Gabaasa daldalaa argachuuf id herregaa, guyyaa jalqabaa fi guyyaa xumura gabaasaa fudhachuu qabda, garuu guyyoota 31 hin caalle. Gaaffii gabaasa uumuuf gara API generate _broker_report_request keessatti ergina , deebii taskId arganna. Sana booda, taskId kana fayyadamuun, get _broker_report_response irraa deetaa arganna .

Kanaaf sanadni akkas jedha, dhugaa jiru keessatti nuances ni jiru. Harka keessan ilaalaa:
  • TaskID bara baraan sirriitti guyyoota kanaaf saaguu qabda. 
  • Yoo dhabde, sana booda guyyoota gaafatamaniif gabaasaan jalqaba gaaffii dhalootaaf deebii ta’ee waan dhufuuf, . 
  • Sana booda immoo tasuma hin dhufu.
Mee koodii barreessuu haa jalqabnu

Mala guyyaa argachuuf, guyyaa ammaa irraa hir’isuu tilmaama keessa galchuun

const getDateSubDay = (Guyyaa xiqqaa = 5, jalqaba = dhugaa) => {     const guyyaa = Guyyaa haaraa ();     guyyaa.setUTCDate (guyyaa.getUTCDate () – Guyyaa xiqqaa);       yoo (jalqaba) {         guyyaa.setUTCHours (0, 0, 0, 0);     } else {         guyyaa.setUTCHours (23, 59, 59, 999);     }       guyyaa deebisuu; };

Gaaffii dhaloota gabaasaa 

const Gabaasa daldalaa = eegaa (sdk.operations.getBrokerReport)({         GaaffiiGabaasaBroker uumuu: {             Id herregaa,             irraa,             gara,         }, });

Bu’aa:

  • Bu’aa raawwii jalqabaa ajajichaa irraa kan ka’e taskId arganna. 
  • Gabaasni gama daldalaatiin uumamuu jalqaba. Yeroo qophaa’u hin beekamu, eegnee yeroo yeroon taskId gabaasa eeguun harkifna.
  • Maalif? Sababni isaas yoo gabaasni qophii hin taane dogongora darbata. Yoo gabaasaan gama daldalaatiin qophaa’uu baate, kana booda kun dogongora koodii kee keessatti mul’ata. Mee adeemsi: 30058|INVALID_ARGUMENT|hojiin ammallee hin xumuramne, maaloo booda irra deebi’ii yaali

Koodiin gabaasa eeguu fi fudhachuu waan kana fakkaata.

const timer = yeroo async => {     Waadaa haaraa deebisuu (furmaata => setTimeout(furmaata, yeroo)); }   const getBrokerResponseByTaskId = async (taskId, fuula = 0) => {     try {         return eegaa (sdk.operations.getBrokerReport)({             GaaffiiGabaasaBroker argachuu: {                 taskId,                 fuula,             },         });     } qabachuu (e) {         konsoolii.log (‘eegaa’, e);         sa’aatii eeguu(10000);         deebi’i eegaa getBrokerResponseByTaskId (Id hojii, fuula);     } };

Sana booda sihrii wal fakkaataan ni raawwatama. Iskiriiptii keenya dhaabna, irra deebi’ee jalqabna, taskId hin qabnu. Koodii gaaffii taskId waliin raawwanna, garuu kana booda taskId hin argannu, garuu battalumatti gabaasa. Sihrii! Yeroo hunda osoo akkas ta’ee wanti hundi gaarii ta’a. Garuu ji’a tokko booda daataa tasumaa hin jiraatu. Faayidaa qaba : .

  • Tiyoorii xiqqoo asii fi asitti ibsameera .
  • Koodii walitti qabuun wixineen sun waan akkanaa fakkaata.

https://github.com/pskucherov/tcsstat/muka/tarkaanfii3.1 https://github.com/pskucherov/tcsstat/wal bira qabi/tarkaanfii3.1

  • Yoo namni tokko kana qunname, sana booda baga gara dhimmicha dhufte . Erga falfala kana suphanii booda humna dhabee haala kamiinuu adda ta’a. Garuu yeroo ammaa (03/21/2023) akkasitti hojjeta.

GetDividendsAbbaa Biyya Alaa

Namni tokko malli sun isa duraa wajjin wal fakkaata jedhee yaaduu danda’a akkasumas mala tokko kan maqaa hojiiwwanii qofa jijjiirtu fayyadamuu dandeessa. Garuu hin tilmaamne!  Moggaasni achitti kennamu malawwanii fi odeeffannoo deebi’e keessatti baay’ee adda. Akkasumas lakkoofsi fuula 0 irraa jalqaba, achiis 1. Kana hunda keessatti akka hin burjaajofneef mala adda addaa lama barreessuun salphaadha. Kan nama ajaa’ibu, sababni isaas loojiki hojiis tokkuma. Yeroo dheeraaf tufe yeroon mala tokko hojjechuuf yaalu koodii xiqqaa ta’e. Asirratti fakkeenyi hin jiraatu.

HojiiwwanKaarsariin Argadhu

Sadan keessaa kan ani jaalladhu. Irra caalaa sirrii ta’uu baatus, garuu hunda caalaa gahaa ta’e. Jalqaba herrega uumuu irraa kaasee hanga guyyaa guddaa danda’amutti (akkaawuntii cufuu ykn kan ammaa) gaaffii ni dhiheessina. Deebii arganna, cursor fudhannee hanga data jirutti irra deebiin gaafanna.  Akkasumas koodii fakkeenyota armaan olii caalaa gabaabaa dha.

const timer = yeroo async => {     Waadaa haaraa deebisuu (furmaata => setTimeout(furmaata, yeroo)); }   const getOperationsByCursor = async (sdk, Id herregaa, irraa, gara, qaree = ”) => {     yaali {         const reqData = {             Id herregaa,             irraa,             gara,             daangaa: 1000,             haalata: sdk.OperationState.OPERATION_STATE_EXECUTED,             withoutCommissions: soba,             withTrades: soba,             maleeOvernights: soba,             qaree,         };           deebi’i eegaa sdk.operations.getOperationsByCursor(reqData);     } qabachuu (e) {         sa’aatii eegaa (60000);         deebi’i eegaa getOperationsByCursor(sdk, accountId, irraa, gara, qaree = ”);     } };

Wixineen hojjetamuu qabu kunooti: https://github.com/pskucherov/tcsstat/tree/step3.3 https://github.com/pskucherov/tcsstat/compare/step3.3 Amma hojiiwwan fudhachuu itti dabaluuf qophii taane iyyata keenya. Yoo sirritti hojjetame, sana booda gabaasa daldalaa guutuu jiraachuu herregaa argachuu qabda. Akkasumas daataa dhabameef, T-3n sun, hojiiwwan irraa deebi’anii fe’u. Garuu kun barruu addaatti addaan baafamuu danda’a. Nuances ijoo isin qunnaman keessaa hojiiwwan fi gabaasa daldalaa daldalaa maxxanuudha.

  •  Har’a gabaasa daldalaa fi daldala guyyoota barbaadamaniif yoo isin qaqqabe, hunda isaa kuusdeetaa keessa kaa’aa, sana booda rakkoon hin jiru. 
  • Boru yeroo kutaa itti aanu deetaa gabaasaa fi hojiiwwan irraa fudhattee kuusdeetaa jiru waliin walsimsiisuuf murteessite rakkoon si mudata. 
  • Waa’ee wal hin simne ykn id erga adeemsifamee booda jijjiiruu irratti nuances baay’ee
  • Sana booda gabaa OTC’f id’n tasuma wal hin simne.
  •  Akkasumas nuances meeshaalee walsimsiisaa, kan ammas wal hin simne, sababa addaa API irraa kan ka’e. Garuu sun seenaa biraati.

Mee odeeffannoo waa’ee hojii argachuu application keenyatti haa dabalu. Gaaffiin guddaan daataa eessatti akka hojjetamuu fi kuufamu kan ta’u ta’a.

  •  Yoo ofii keessaniif gootan meeshaalee adda addaa irraa daataa walfakkaataa ni fayyadamtu. Sana booda deetaa server irratti process fi store gochuu qabda.
  • Yoo daataa adda addaa baay’ee fayyadamtoota adda addaa hedduudhaan fayyadaman qabaatte, sana booda maaltu caalaatti barbaachisaa akka ta’e murteessuu qabda: saffisa fayyadamtootaa ykn qusannaa sibiilaa gama keetiin. Namni haardwaara daangaa hin qabne bitachuu danda’u waan hunda server isaa irratti lakkaa’ee fayyadamtootaaf super fast akka ta’u taasisa, qabeenya fayyadamaa kan akka baatirii fi tiraafikaa qusata, kunis bilbiloota irratti baay’ee barbaachisaadha.

Dabareen isaas, browser keessatti lakkaa’uun furmaata hunda caalaa gaarii ta’e miti seera bu’uuraatiin. Kanaaf wanti qaala’aa hin taane, server keenya irratti ilaalla. Kan hafe maamilaaf dhiifna. Dhuguma komishinii server irratti fudhadhee shallaguu barbaada. Garuu kunoo nuance “interactivity” jedhamu dhufa. Mee opereshinii kumaatamaan lakkaa’amu qabda haa jennu, fudhachuuf daqiiqaa shan fudhata. Yeroo kanatti fayyadamaan maal qabaata? Spinner? Fooyya’iinsa? Infa waa’ee meeqa olkaa’ame? Yeroo fayyadamaan adeemsa keessa jiru duraan waan tokko arguu danda’utti “active waiting” fayyadamuun gaariidha. Bu’aan isaa kunooti : Gabaasa daldalaa waliin hojjechuu fi komishinii shallaguuf ofumaan hojjechuuf Tinkoff Invest API fayyadamuun microservice hojjechaa jirra.

  • Fuula fe’amaa jira
  • Invoice hunduu ni gaafatama
  • Sana booda, daldalli komishinii daldala raawwatameef qabu hundi herrega hundaaf ni gaafatama. Akkuma deetaan fudhatameen, biraawzari keessatti ni agarsiifama.

Yeroo hunda deetaa taateewwan keessa jiru akka hin calaleessineef, tokkoon tokkoon herregaaf taatee mataa keenyaa harkisna. Akkanatti:

socket.emit (‘sdk:Bu’aaKomishinii Hojiiwwan argachuu_’ + accountId, {                 wantoota: deetaa?.wantoota,                 Adeemsa keessa jiran: Boolean(Cursor itti aanu), });

Wixineen eegaluuf jiru kunooti: https://github.com/pskucherov/tcsstat/tree/step3 https://github.com/pskucherov/tcsstat/compare/step2…step3 Itti fufna. Sarara kana dubbisuun keessan waan guddaadha! 

Shallaggii fi oomisha odeeffannoo fedhii qabu

Eenyuutu odeeffannoo akkamii akka barbaadu irratti hundaa’a. Kanaaf, battaluma sanatti nuances ijoo isin qunnaman isinitti hima.

Gatii waliin hojjechuu 

Daldalli maallaqaa lakkoofsa guutuu qofaan raawwatamuu akka qabu namni faayinaansii waliin hojjetu hundi ni beeka. Sababa sirrii ta’uu dhabuu gatiiwwan qabxii kurnyee boodaa fi dogongora kuufamaa hojiiwwan baay’ee wajjin. Kanaafidha gatiiwwan hundi bifa MoneyValue armaan gadiitiin kan dhiyaatanGabaasa daldalaa waliin hojjechuu fi komishinii shallaguuf ofumaan hojjechuuf Tinkoff Invest API fayyadamuun microservice hojjechaa jirra.

dirreeakaakuuIbsa
maallaqahidhaaKoodii maallaqaa ISO dhangii
yuunitiiint64Lakkoofsa guutuu kutaa walitti qabama, lakkoofsa negaatiivii ta’uu danda’a
naannooint32Kutaa firaakshinii hanga, lakkoofsa negaatiivii ta’uu danda’a

Adda addaan adeemsifna, sana booda gara gatii gatiitti fidna:

caqasa.yunitii + caqasa.naano / 1e9

Baasii waliigalteewwan gara fuula duraa

Gatiin fuulduraa qabxiidhaan kan dhiyaatu yoo ta’u, yeroo egeree maallaqaa qabdu, reetii beekuu qabda. Akkasumas beekamaadha gatii qabxii fi tarkaanfii gatii. Bu’aa daldala irraa argamu yeroo shallagdu, kun dhukaasu danda’a, sababni isaas. yoo gatii baay’inaan baay’isuudhaan hanga waliigalaa shallagde. Asirratti of eeggannoo gochuu qabda. Ammaaf akkamitti akka deemu ilaalla. Kun currency futures ilaallata, bakka biraatti wanti hundi kanaan ok dha.Gabaasa daldalaa waliin hojjechuu fi komishinii shallaguuf ofumaan hojjechuuf Tinkoff Invest API fayyadamuun microservice hojjechaa jirra.Gabaasa daldalaa waliin hojjechuu fi komishinii shallaguuf ofumaan hojjechuuf Tinkoff Invest API fayyadamuun microservice hojjechaa jirra.

Gabaa OTC

Gabaa kun waan addaa baay’ee qaba, kanaaf hojiiwwan addatti irratti haa qorannu.Yeroo hojiiwwan walsimsiisuu jalqabdu meeshaa sana sirritti walsimsiisuuf figi / ticker bifa walfakkaatutti fiduu akka qabdu ni mul’ata. Yeroo kana gabaasa daldalaa wajjin walsimsiisuu jalqabdu, tradeID daldala walfakkaataa jalqaba irratti qubee daldala keessatti qabaachuu fi gabaasa daldalaa keessatti akka hin jirre ni mul’ata. Kanaaf wal bira qabuun … ahem-ahem … wal bira qabuun hin danda’amu! Yeroo daldalaa, ticker fi walsimsiisuun tradeId tokko kan biraa keessatti akka argamu walsimsiiseera. Sirriidha, ani hin beeku. Kan kanaan mudatee fi kan dhimma itti bahu gara dhimmicha koottaa ykn haaraa jalqabi.Gabaasa daldalaa waliin hojjechuu fi komishinii shallaguuf ofumaan hojjechuuf Tinkoff Invest API fayyadamuun microservice hojjechaa jirra.

Hojiiwwan herregaa meeshaalee irratti

Tarree guutuu waliin hojiiwwan herregaa raawwachuun osoo hin ilaalin hin danda’amu. Ho’aa lallaafaa irratti akka hin daballeef, yeroo hunda maallaqaa fi adeemsa isaa kan ilaallu yoo maallaqni walsimsiisuu isaa mirkaneeffanne qofa, qabxiileen gara maallaqa barbaadameetti jijjiiramu. Beekumsa waa’ee lakkoofsa baankii waliin hojjechuu hidhannee komishinii tokkoon tokkoon herrega irratti bahu ni shallagna. Akkanatti: https://github.com/pskucherov/tcsstat/muka/tarkaanfii4 https://github.com/pskucherov/tcsstat/wal bira qabi /tarkaanfii3…tarkaanfii4Gabaasa daldalaa waliin hojjechuu fi komishinii shallaguuf ofumaan hojjechuuf Tinkoff Invest API fayyadamuun microservice hojjechaa jirra.   

Microservice qophaa’eera!

https://github.com/pskucherov/tcsstat Akka hojii manaa tajaajilli sun walitti hidhamiinsa suuta jedhu, yeroo walitti hidhamiinsi addaan citu, yeroo interneetiin addaan citu, yeroo dogongorri ykn daangaa yeroon isaa darbe gama daldalaatiin hojjechuu isaa ilaaluu dandeessu. 

Xumuraa fi karoora gara fuula duraa

  • Waa’ee hojiiwwan bu’uuraa fi Invest API waliin hojjechuu barate
  • Yeroo ~ sa’aatii 10 dabarsan
  • Sadarkaa rakkinaa ~ junior+ / low middle 

Yoo microservice fooyyessuu itti fufte, dhumarratti waan akkanaa argachuu dandeessa

https://opexbot.info irratti kan argamu

  Kun guddina kooti, ​​warra dadhaboo ta’aniif ofumaan hubachuu, fiiguu fi lakkaa’uuf. Gaaffii fayyadamtootaatiin achitti xiinxala dabaluudhaaf karoorfadheera. Barreeffamichi yoo isinitti tole, telegram channel koo subscribe godhaa . Gabaasa daldalaa waliin hojjechuu fi komishinii shallaguuf ofumaan hojjechuuf Tinkoff Invest API fayyadamuun microservice hojjechaa jirra.

Pavel
Rate author
Add a comment

  1. Isakiiev

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

    Reply