Wɔn a wɔhyɛɛ nkuran ma wɔyɛɛ akontaabu adwuma no maa Tinkoff Investments ne:
- asɛm bi a ɛfa Habré ho “Nea Tinkoff Investments nka”
- nhwehwɛmu a wɔyɛ wɔ nea wɔn a wɔde platform di dwuma no apɛde ho
- asɛm bi a ɛfa sika a wɔde ma ho akontaabu ho .
- Dɛn na yɛbɛka ho asɛm?
- Akontaabu adwuma a wɔbɛyɛ anammɔn anammɔn:
- Nkitahodi a ɛda Tinkoff Invest API ntam
- Data a wɔtwe fi Tinkoff Invest API mu wɔ browser mu
- Brokerage amanneɛbɔ ne nnwuma a wogye
- NyaBrokerAmanneɛbɔ
- Ɔkwan a wɔfa so nya da no, a wosusuw nea wɔayi afi da a ɛwɔ hɔ mprempren no mu ho
- Amanneɛbɔ awo ntoatoaso adesrɛ
- Nsunsuansoɔ:
- NyaDividendsAmannɔneIssuer
- NyaOperationsByCursor a Wɔde Yɛ Adwuma
- Akontaabu ne nsɛm a ɛyɛ anigye a wɔde fi mu ba
- Adwuma a wɔde nneɛma bo yɛ
- Ɛka a wɔbɔ wɔ daakye apam ahorow ho
- OTC gua so
- Nkontaabu dwumadi ahorow a wɔyɛ wɔ nnwinnade so
- Microservice ayɛ krado!
- Nsɛm a wɔde wie ne nhyehyɛe ahorow a wɔbɛyɛ ama daakye
- https://opexbot.info na ɛwɔ hɔ
Dɛn na yɛbɛka ho asɛm?
- Ɔfã a wɔde di dwuma a ɛfa nkɔso ho nkutoo.
- Nimdeɛ ne osuahu ankasa, a ɛho hia yiye wɔ sikasɛm nnwinnade a wɔde yɛ adwuma mu.
- Nsɛm a ɛsɛ sɛ wɔyɛ ho adwuma ho nsɛm a wɔaka abom
Enti, mepɛ sɛ mibu aguadi ho akontaabu na meyɛ no wɔ ɔkwan a ɛyɛ mmerɛw so.
Akontaabu adwuma a wɔbɛyɛ anammɔn anammɔn:
- Nkitahodi a ɛda Tinkoff Invest API ntam
- Data a wɔtwe fi Tinkoff Invest API mu wɔ browser mu
- Brokerage amanneɛbɔ ne nnwuma a wogye
- Akontaabu ne nsɛm a ɛyɛ anigye a wɔde fi mu ba
- Nsɛm a wɔde wie ne nhyehyɛe ahorow a wɔbɛyɛ ama daakye
Nkitahodi a ɛda Tinkoff Invest API ntam
Sɛ wopɛ sɛ wo ne API no di nkitaho a, wobɛtumi afa sdk biara afiri nkrataa https://github.com/Tinkoff/investAPI#sdk . Anaasɛ npm pakete ` tinkoff-sdk-grpc-js `. Ɛho hia sɛ wɔyɛ package no foforo kɔ nea aba foforo so denam developers no so. Fa sto so
Nhwehwɛmu a wɔreyɛ
const { bɔSdk } = hwehwɛ (‘tinkoff-sdk-grpc-js’); // Token a wobetumi anya te sɛ eyi const TOKEN = ‘YOURAPI’; // Application no din a wobetumi afa so ahu wo wɔ TCS logs no mu. const appEdin = ‘tcsstat’ na ɛyɛ adwuma; const sdk = bɔSdk (TOKEN, appEdin); (async () => { console.log (twɛn sdk.a wɔde di dwuma.gyeAkontaabu ()); }) ();
Nea ebefi mu aba: wɔbɛda wo akontaabu ahorow no din adi wɔ console no mu. Sɛ nhwɛso no, momma yɛnhwehwɛ nneɛma nketenkete no mu:
- Wɔ akontaabu ahorow no mu no “Investment bank” bi wɔ hɔ, a wuntumi mfa API no nyɛ adwuma
- Yɛsrɛ wo hyɛ no nsow sɛ afuw no ba camelCase mu, bere a wɔ nkrataa no mu no wɔde saa mfuw yi akyerɛ wɔ under_score mu.
- Ɛbɛyɛ saa wɔ baabiara, enti worentumi mfa afuw bi na woayɛ ho mfonini afi nkrataa no mu kɛkɛ.
Bɛyɛ yie:
- Wubetumi ahu saa koodu yi wɔ adwuma no baa dwumadibea no mu
https://github.com/pskucherov/tcsstat/dua/anammɔn1 https://github.com/pskucherov/tcsstat/fa toto/anamɔn1 ho
Data a wɔtwe fi Tinkoff Invest API mu wɔ browser mu
Mefaa next.js ne socket.io. Eyi nyɛ nyansahyɛ a emu yɛ den, paw sɛnea wopɛ.
npx yɛ-nea edi hɔ-app@latest npm me socket.io socket.io-afɛfo
Ntɛm ara na yɛtoa so kɔ adamfofa anammɔn a edi hɔ+socket+investapi no so, na yɛhwɛ anammɔn yi fã a Mfaso wɔ so no ma nsɛm no nyinaa. Mebɛkyerɛkyerɛ nsɛm no mu kɔ akyiri:
- Wɔ nodejs (server) fã no, pages/api/investapi.js fael bi wɔ hɔ. Eyi ne baabi a yɛbɔ socket.io server no na yɛkɔ investapi so.
- Wɔ browser (client) fã no, yɛfa socket so kɔ server no so na yɛbisa akontaabu data fi broker no hɔ.
- Yɛgye data fi broker a ɔwɔ server no so, afei yɛde kɔma client no. Sɛ wɔgye wɔ client no so a, wɔda no adi wɔ browser no mu.
Nea afi mu aba: wɔ browser console no mu no yebetumi ahu akontaabu ahorow ho nsɛm. Ɛne sɛ, wɔ anammɔn a etwa to no mu no, yehuu nsɛm a ɛfa akontaabu ho wɔ server console (nodejs), wɔ mprempren anammɔn no mu no, yɛde saa nsɛm yi kɔɔ client (browser) no nkyɛn.
Afei momma yɛnyɛ no sɛdeɛ ɛbɛyɛ a wobɛtumi apaw akonta bi afiri browser no mu, na sɛ token biara nni hɔ a, ɛnde wɔde mfomsoɔ bi bɛkɔ console no so. Adwuma no yɛ mmerɛw na ɛnyɛ biribi foforo, enti mede links a ɛkɔ commits nkutoo na ma
- 7e1ac57061e5e971588479015b06d8814d6609a9
- 10. Ɔkwan bɛn so na wobetumi ayɛ aduru a ɛma obi nya apɔwmuden
Bɛyɛ yie:
- Sɛnea wobɛfa nnamfo akyi ne socket no wɔakyerɛkyerɛ mu kɔ akyiri wɔ ha .
- Adamfofa ho mmara a edi hɔ + socket + investapi:
https://github.com/pskucherov/tcsstat/commit/a443a4ac1bb4f0aa898f638128755fe7391ee381 Wɔn a atifi hɔ no yɛ den no, ɛnde yɛtena saa gyinabea yi na yɛdi mmara no ho dwuma. Se wowo nsemmisa a – bisa. https://github.com/pskucherov/tcsstat/dua/anammɔn2 https://github.com/pskucherov/tcsstat/fa toto/anamɔn1…anammɔn2
Brokerage amanneɛbɔ ne nnwuma a wogye
Akwan abiɛsa na ɛwɔ hɔ a wɔfa so nya brokerage amanneɛbɔ ne nnwuma a wɔyɛ
Efi mfiase pɛɛ no ɛho hia sɛ wuhu:
- Wɔyɛ brokerage amanneɛbɔ no wɔ T-3 mode mu, i.e. wɔda aguadi ahorow adi wɔ hɔ bere a wɔakum wɔn ankasa akyi.
- Nea ɛne eyi hyia no, sɛ wobisa amanneɛbɔ yi nnansa a atwam no a, ɛbɛyɛ krado wɔ nnansa mu.
- Sɛ yɛbɛnya nkitahodiɛ ama nna a ɛtwa toɔ no a, yɛde ɔkwan a yɛfa so gye nnwuma no di dwuma, nanso kae sɛ wɔn id ne emu nsɛm betumi asesa bere a wɔayɛ brokerage amanneɛbɔ no akyi.
NyaBrokerAmanneɛbɔ
Sɛ wopɛ sɛ wonya brokerage amanneɛbɔ a, ɛsɛ sɛ wofa account id, da a wofi ase ne da a wɔde wie amanneɛbɔ no, nanso ɛnboro nnafua 31. Yɛde abisadeɛ kɔma sɛ yɛnyɛ amanneɛbɔ kɔ API no mu wɔ generate _broker_report_request , nya taskId wɔ mmuaeɛ mu. Ɛno akyi no, yɛde saa taskId yi di dwuma a, yenya data fi get _broker_report_response hɔ.
- Ɛsɛ sɛ wode TaskID no sie daa ma saa nna yi pɛpɛɛpɛ.
- Esiane sɛ sɛ wohwere a, ɛnde nna a wɔsrɛɛ no nti amanneɛbɔ no bedi kan aba de abua awo ntoatoaso adesrɛ no, .
- Na afei ɛremma koraa.
Ɔkwan a wɔfa so nya da no, a wosusuw nea wɔayi afi da a ɛwɔ hɔ mprempren no mu ho
const getDateSubDay = (subDay = 5, mfiase = nokware) => { const da = Date foforo (); date.setUTCDate (date.getUTCDate () – da ketewa); sɛ (fi ase) { date.setUTCHours (0, 0, 0, 0); } else { date.setUTCHours (23, 59, 59, 999); } sanba date; };
Amanneɛbɔ awo ntoatoaso adesrɛ
const brokerReport = twɛn (sdk.operations.getBrokerReport) ({ generateBrokerAmanneɛbɔAbisade: { akontaabuId, fi, kɔ, }, });
Nsunsuansoɔ:
- Esiane sɛ wɔyɛ ahyɛde no a edi kan nti, yenya taskId no.
- Amanneɛbɔ no fi ase yɛ wɔ broker no afã. Sɛ ɛyɛ krado a yennim a, yɛtwɛn na bere ne bere mu no yɛtwe taskId no de hwɛ amanneɛbɔ no kwan.
- Adɛn? Efisɛ sɛ amanneɛbɔ no nsiesiee ne ho a, ɛtow mfomso. Sɛ amanneɛbɔ no nsiesiee ne ho wɔ broker no afã a, ɛnde eyi yɛ mfomso wɔ wo code no mu. Yɛsrɛ wo di ho dwuma: 30058|INVALID_ARGUMENT|adwuma no nnya nwiei, yɛsrɛ wo san sɔ hwɛ akyiri yi
Mmara a wɔde twɛn na wogye amanneɛbɔ no te sɛ eyi.
const timer = async bere => { san Bɔ Bɔhyɛ foforo (siesie => setTimeout (siesie, bere)); } const getBrokerResponseByTaskId = async (adwumaId, kratafa = 0) => { bɔ mmɔden { san twɛn (sdk.operations.getBrokerReport)({ nyaBrokerAmanneɛbɔAbisade: { adwumaId, krataafa, }, }); } kyere (e) { console.log (‘twɛn’, e); twɛn bere(10000); san twɛn getBrokerResponseByTaskId (adwumaId, krataafa); } };
Afei nkonyaayi koro no ara na ɛba. Yɛgyae yɛn script no, yɛhyɛ aseɛ bio, yɛnni taskId. Yɛde taskId abisade no di dwuma, nanso yennya taskId no bio, na mmom ntɛm ara na yenya amanneɛbɔ no. Nkrabea! Na sɛ ɛte saa bere nyinaa a, anka biribiara bɛyɛ yiye. Nanso wɔ ɔsram biako mu no, data biara nni hɔ koraa. Mfaso wɔ so : .
https://github.com/pskucherov/tcsstat/dua/anammɔn3.1 https://github.com/pskucherov/tcsstat/fa toto/anammɔn3.1 ho
- Sɛ obi hyia eyi a, ɛnde ma wo akwaaba ba asɛm no mu . Sɛ wosiesie saa nkonyaayi yi wie a, ɛbɛhwere ne tumi na ɔkwan bi so no ɛbɛyɛ soronko. Nanso mprempren (03/21/2023) no ɛyɛ adwuma saa ara.
NyaDividendsAmannɔneIssuer
Ebia obi besusuw sɛ ɔkwan no te sɛ nea atwam no na wubetumi de ɔkwan biako a wobɛsesa dwumadi ahorow no din nkutoo adi dwuma. Nanso wɔansusuw ho! Ɛsono din a wɔbɔ wɔ hɔ no koraa wɔ akwan no ne nsɛm a wɔde san ba no nyinaa mu. Na kratafa dodow no fi ase fi 0, afei efi 1. Sɛnea ɛbɛyɛ a worenhaw wo ho wɔ eyi nyinaa mu no, ɛnyɛ den sɛ wobɛkyerɛw akwan horow abien. Nea ɛyɛ nwonwa, efisɛ ntease a ɛwɔ adwuma mu no yɛ ade koro. Meteɛteɛɛm kyɛe bere a mebɔɔ mmɔden sɛ mɛyɛ ɔkwan biako na na mmara sua no. Nhwɛso biara remma wɔ ha.
NyaOperationsByCursor a Wɔde Yɛ Adwuma
Nea m’ani gye ho paa wɔ baasa no mu. Ɛwom sɛ ɛnyɛ nea ɛyɛ pɛpɛɛpɛ sen biara de, nanso nea ɛfata sen biara. Yɛde abisadeɛ firi akonta a yɛhyɛɛ aseɛ no kɔsi da dodoɔ a yɛbɛtumi (atoto akonta bi mu anaa mprempren deɛ no). Yɛnya mmuaeɛ no, yɛfa cursor no na yɛsan bisa bere tenten a data wɔ hɔ no. Na mmara no yɛ tiawa sen nhwɛso ahorow a ɛwɔ atifi hɔ no.
const timer = async bere => { san Bɔ Bɔhyɛ foforo (siesie => setTimeout (siesie, bere)); } const getOperationsByCursor = async (sdk, akontaabuId, fi, kɔ, cursor = ”) => { bɔ mmɔden { const reqData = { akontaabuId, fi, kosi, anohyeto: 1000, tebea: sdk.OperationState.OPERATION_STATE_EXECUTED, withoutCommissions: atoro, withoutTrades: atoro, a enniOvernights: atoro, cursor, }; san twɛn sdk.operations.getOperationsByCursor (reqData); } kyere (e) { twɛn bere (60000); san twɛn getOperationsByCursor (sdk, akontaabuId, fi, kɔ, cursor = ”); } };
Draft a wɔde bɛtu mmirika no wɔ ha: https://github.com/pskucherov/tcsstat/tree/step3.3 https://github.com/pskucherov/tcsstat/compare/step3.3 Afei yɛasiesie yɛn ho sɛ yɛde receiving operations bɛka ho yɛn akwammisa krataa no. Sɛ wɔyɛ no yiye a, ɛnde ɛsɛ sɛ wunya brokerage amanneɛbɔ ma akontaabu no a ɛwɔ hɔ nyinaa. Na data a ayera no, saa T-3 koro no ara, reload fi adwumayɛ mu. Nanso wobetumi akyekyɛ eyi mu ayɛ no asɛm foforo. Wɔ nuances atitiriw a wubehyia no mu ne sɛ wobɛ glue adwumayɛ ne brokerage amanneɛbɔ.
- Sɛ ɛnnɛ wo nsa kaa brokerage amanneɛbɔ ne nnwuma a ɛfa nna a wɔhwehwɛ no ho a, fa ne nyinaa gu database no mu a, ɛnde ɔhaw biara nni ho.
- Wobɛnya ɔhaw ɔkyena berɛ a wo nsa aka data no fã a ɛdi hɔ no afiri amanneɛbɔ ne dwumadie no mu na woasi gyinaeɛ sɛ wobɛma ɛne database a ɛwɔ hɔ dada no ayɛ pɛ.
- Nuances pii fa mismatched anaasɛ sesa id akyi processing
- Afei OTC gua no deɛ, id no nhyia koraa.
- Ne saa ara nso na nuances a synchronizing nnwinnade, a bio enhyia, esiane peculiarities a API. Nanso ɛno yɛ asɛm foforo.
Momma yɛmfa nsɛm a ɛfa adwumayɛ ho a yebenya nka yɛn application no ho. Asɛmmisa titiriw no bɛyɛ baabi a wɔbɛyɛ data no ho adwuma na wɔde asie.
- Sɛ woyɛ ma w’ankasa a, wubedi data koro no ara a efi mfiri ahorow so. Afei ɛsɛ sɛ woyɛ data ho adwuma na wode sie server no so.
- Sɛ wowɔ data ahorow pii a wɔn a wɔde di dwuma ahorow pii di a, ɛnde ɛsɛ sɛ wusi nea ɛho hia kɛse ho gyinae: ahoɔhare a wɔn a wɔde di dwuma no de di dwuma anaasɛ dade a wɔkora so wɔ w’afã. Obiara a obetumi atɔ hardware dodow a enni ano no kan biribiara a ɛwɔ ne server so na ɔma ɛyɛ super fast ma wɔn a wɔde di dwuma no, na ɛkora nea ɔde di dwuma no nneɛma so, te sɛ battery ne traffic, a ɛho hia yiye wɔ fon so.
Nea ɛbɛyɛ na wɔayɛ saa no, akontaabu wɔ browser no mu nyɛ ano aduru a eye sen biara wɔ nnyinasosɛm mu. Enti, nea ne bo nyɛ den no, yebu no wɔ yɛn server no so. Yɛgyaw nea aka no ma nea ɔregye nneɛma no. Mepɛ ankasa sɛ mefa na mibu commission no ho akontaa wɔ server no so. Nanso ha na nuance a wɔfrɛ no “interactivity” no ba. Momma yɛnka sɛ wowɔ oprehyɛn mpempem pii na egye simma anum ansa na woagye. Dɛn na nea ɔde di dwuma no benya saa bere yi? Spinner? Mpuntuo? Infa fa dodow ahe na wɔde too gua? Ɛyɛ papa sɛ wode “active waiting” bedi dwuma bere a nea ɔde di dwuma wɔ adeyɛ no mu no betumi ahu biribi dedaw no. Nea efii mu bae ni :
- Kratafa a wɔde hyɛ mu
- Wɔsrɛ invoices nyinaa
- Ɛno akyi no, wɔsrɛ nnwuma a wɔde ahyɛde ma wɔ nnwuma a wɔayɛ ho nyinaa ma akontaabu no nyinaa. Bere a wogye data no, wɔkyerɛ ase wɔ browser no mu.
Sɛnea ɛbɛyɛ a yɛrensesa data a ɛwɔ nsɛm a esisi no mu bere biara no, yɛtwe yɛn ankasa nsɛm a esisi no ma akontaabu biara. Te sɛ eyi:
socket.emit (‘sdk: getOperationsCommissionResult_’ + accountId, { nneɛma: data?.nneɛma, wɔNkɔso mu: Boolean (NextCursor), });
Draft a wɔde befi ase no wɔ ha: https://github.com/pskucherov/tcsstat/tree/step3 https://github.com/pskucherov/tcsstat/compare/step2…step3 Yɛrekɔ so. Ɛyɛ fɛ yiye sɛ woakenkan saa nkyerɛwde yi!
Akontaabu ne nsɛm a ɛyɛ anigye a wɔde fi mu ba
Egyina nea ohia nsɛm bɛn so. Enti, meka nsɛm nketenkete atitiriw a wubehyia no kyerɛ wo ntɛm ara.
Adwuma a wɔde nneɛma bo yɛ
Obiara a ɔne sikasɛm yɛ adwuma no nim sɛ ɛsɛ sɛ wɔde akontaahyɛde mũ nkutoo na ɛyɛ sika ho aguadi. Esiane sɛ gyinapɛn ahorow a ɛnyɛ nokware wɔ decimal point no akyi ne mfomso a wɔaboaboa ano a ɛwɔ adwumayɛ dodow bi nti. Ɛno nti na wɔde nneɛma bo nyinaa akyerɛ wɔ MoneyValue nhyehyɛe a edidi so yi mu no
prama | korɔ | Nkyerɛmu |
---|---|---|
sika | ahoma | String ISO sika koodu |
unit ahorow a ɛwɔ hɔ | int64 | Integer fã bi a ɛwɔ sum no mu, betumi ayɛ nɔma a ɛnyɛ papa |
nano | int32 | Sika no fã ketewaa bi, betumi ayɛ akontaahyɛde a enye |
Yɛyɛ wɔn ho adwuma wɔ ɔkwan soronko so, afei yɛde ba bo a ɛsom no so:
nsɛm a wɔafa aka.units + nsɛm a wɔafa aka.nano / 1e9
Ɛka a wɔbɔ wɔ daakye apam ahorow ho
Wɔde daakye bo no kyerɛ wɔ nsɛntitiriw mu, sɛ wowɔ sika daakye a, ɛsɛ sɛ wuhu bo a wɔbɔ. Na nokwarem no bo no wɔ nsɛntitiriw mu ne bo anammɔn. Sɛ wubu mfaso a wonya fi nnwuma mu ho akontaa a, eyi betumi atow tuo, efisɛ. sɛ wubu sika dodow no nyinaa denam bo no a wode dodow no bɛbɔ ho a. Ɛha na ɛsɛ sɛ wohwɛ yiye. Mprempren de, yɛbɛhwɛ sɛnea ɛkɔ. Eyi fa sika daakye ho, wɔ mmeae afoforo no biribiara yɛ ok wɔ eyi ho.
OTC gua so
Saa gua yi wɔ nneɛma soronko pii, enti momma yɛnsua adwumayɛ wɔ so wɔ ɔkwan soronko so Sɛ wohyɛ aseɛ yɛ synchronizing adwumayɛ a, ɛbɛda adi sɛ ɛhia sɛ wode figi / ticker ba ɔkwan korɔ no ara so na ama woatumi ne adwinnadeɛ no ahyia yie. Sɛ wohyɛ aseɛ de eyi ne brokerage amanneɛbɔ no hyia a, ɛbɛda adi sɛ tradeID a ɛwɔ asɛm korɔ no ara mu no wɔ nkrataa wɔ mfitiaseɛ wɔ nnwuma no mu na ɛnni brokerage amanneɛbɔ no mu. Enti, wontumi mfa wɔn ntoto ho … ahem-ahem … denam ntotoho so! Me matched trade bere, ticker ne matching sɛ tradeId biako wɔ foforo mu. Ɛteɛ, minnim. Obiara a obehyia eyi ne nea odwen ho no, bra asɛm no so anaasɛ fi ase foforo.
Nkontaabu dwumadi ahorow a wɔyɛ wɔ nnwinnade so
Ɛrentumi nyɛ yiye, a wonhwɛ, sɛ wɔbɛyɛ akontaabu dwumadi ahorow ne nea wɔahyehyɛ no nyinaa. Sɛnea ɛbɛyɛ a yɛremfa ɔhyew nka soft ho no, bere nyinaa yɛhwɛ sika no na yɛyɛ ho adwuma sɛ yegye di sɛ sika no hyia nkutoo, na wɔdan nsɛntitiriw no kɔ sika a yɛpɛ no mu. Yɛde nimdeɛ a ɛfa sɛnea yɛde sikakorabea nɔma bɛyɛ adwuma ho akode no, yɛbɛbu sika a wɔsɛee no wɔ akontaabu no mu biara ho. Te sɛ eyi: https://github.com/pskucherov/tcsstat/dua/anammɔn4 https://github.com/pskucherov/tcsstat/fa toto/anammɔn3…anammɔn4
Microservice ayɛ krado!
https://github.com/pskucherov/tcsstat Sɛ́ ofie nnwuma no, wubetumi ahwɛ sɛ ɔsom no de nkitahodi a ɛyɛ brɛoo yɛ adwuma, bere a nkitahodi ahorow no asɛe, bere a wɔatwa Intanɛt no mu, bere a mfomso anaa anohyeto ahorow a atwam wɔ broker no fã.
Nsɛm a wɔde wie ne nhyehyɛe ahorow a wɔbɛyɛ ama daakye
- Suaa mfitiaseɛ dwumadie ne adwuma a ɔne Invest API yɛeɛ ho adeɛ
- Bere a wɔde di dwuma ~ nnɔnhwerew 10
- Ɔhaw gyinabea ~ junior+ / low mfinimfini
Sɛ wokɔ so siesie microservice no a, ebia wubewie a wubenya biribi te sɛ eyi
https://opexbot.info na ɛwɔ hɔ
Eyi ne me nkɔso, ma wɔn a wɔyɛ anihafo dodo sɛ wɔbɛte ase, atu mmirika na wɔakan wɔn ankasa. Meyɛ nhyehyɛe sɛ mede analytics bɛka ho wɔ hɔ bere a wɔn a wɔde di dwuma no abisade. Sɛ w’ani gyee asɛm no ho a, ɛnde kyerɛw wo din wɔ me telegram dwumadibea no so .
Полезная статья. Не могу представить, сколько усилий автора потребовалось, чтобы все описать. Благодарю.