Coder Social home page Coder Social logo

Wrong calculations for orders. C# about ccxt HOT 23 CLOSED

skuvv avatar skuvv commented on September 22, 2024
Wrong calculations for orders. C#

from ccxt.

Comments (23)

skuvv avatar skuvv commented on September 22, 2024 1

@ttodua
Exchange is Bitget
try this solution, credential are required.
DemoForDebug.zip

from ccxt.

ttodua avatar ttodua commented on September 22, 2024

can you please specifically hint which values do you think to be incorrect?
from very first line, i see the "size": 100 in raw response, but on second line, "size": 15 in parsed response. do you mean that? please also list other errors with specific values, so i can see them quickly.

from ccxt.

skuvv avatar skuvv commented on September 22, 2024

@ttodua
for this part of log:

On message: {"action":"snapshot","arg":{"instType":"SUSDT-FUTURES","channel":"orders","instId":"default"},"data":[{"accBaseVolume":"0","cTime":"1714234711855","clientOid":"240427191815_5","enterPointSource":"API","feeDetail":[{"feeCoin":"SUSDT","fee":"0"}],"force":"gtc","instId":"SXRPSUSDT","leverage":"10","marginCoin":"SUSDT","marginMode":"crossed","notionalUsd":"51.67","orderId":"1168150536860114952","orderType":"limit","posMode":"hedge_mode","posSide":"long","price":"0.5167","reduceOnly":"no","side":"buy","size":"100","status":"live","tradeSide":"open","uTime":"1714234711855"}],"ts":1714234711859}
Order[240427191815_5] exchangeOrderId: '1168150536860114952', status: 'open', price: '0,5167', size: '100', average: '', filled: '0', remain: '100'

On message: {"action":"snapshot","arg":{"instType":"SUSDT-FUTURES","channel":"orders","instId":"default"},"data":[{"accBaseVolume":"15","baseVolume":"15","cTime":"1714234711855","clientOid":"240427191815_5","enterPointSource":"API","feeDetail":[{"feeCoin":"SUSDT","fee":"-0.0015501"}],"fillFee":"-0.0015501","fillFeeCoin":"SUSDT","fillNotionalUsd":"7.7505","fillPrice":"0.5167","fillTime":"1714234729622","force":"gtc","instId":"SXRPSUSDT","leverage":"10","marginCoin":"SUSDT","marginMode":"crossed","notionalUsd":"51.67","orderId":"1168150536860114952","orderType":"limit","pnl":"0","posMode":"hedge_mode","posSide":"long","price":"0.5167","priceAvg":"0.5167","reduceOnly":"no","side":"buy","size":"100","status":"partially_filled","tradeId":"1168150611393327105","tradeScope":"M","tradeSide":"open","uTime":"1714234729622"}],"ts":1714234729648}
Order[240427191815_5] exchangeOrderId: '1168150536860114952', status: 'open', price: '0,5167', size: '15', average: '0,5167', filled: '15', remain: '0'
PartialFill, wrong remain here.
Remain should be 85 not 0.
Size=15 what is it? Why not 100? Where is order amount?

On message: {"action":"snapshot","arg":{"instType":"SUSDT-FUTURES","channel":"orders","instId":"default"},"data":[{"accBaseVolume":"15","cTime":"1714234711855","clientOid":"240427191815_5","enterPointSource":"API","feeDetail":[{"feeCoin":"SUSDT","fee":"-0.0015501"}],"force":"gtc","instId":"SXRPSUSDT","leverage":"10","marginCoin":"SUSDT","marginMode":"crossed","notionalUsd":"51.67","orderId":"1168150536860114952","orderType":"limit","posMode":"hedge_mode","posSide":"long","price":"0.5167","reduceOnly":"no","side":"buy","size":"100","status":"canceled","tradeSide":"open","uTime":"1714234743600"}],"ts":1714234743604}
Order[240427191815_5] exchangeOrderId: '1168150536860114952', status: 'canceled', price: '0,5167', size: '100', average: '3,4446666666666665', filled: '15', remain: '85'
Canceled, Wrong average here
average should be 0,5167 not 3,4446666666666665.

from ccxt.

skuvv avatar skuvv commented on September 22, 2024

for this log:

On message: {"action":"snapshot","arg":{"instType":"SUSDT-FUTURES","channel":"orders","instId":"default"},"data":[{"accBaseVolume":"0","cTime":"1714235406333","clientOid":"240427192949_8","enterPointSource":"API","feeDetail":[{"feeCoin":"SUSDT","fee":"0"}],"force":"gtc","instId":"SEOSSUSDT","leverage":"10","marginCoin":"SUSDT","marginMode":"crossed","notionalUsd":"80.7","orderId":"1168153449674219523","orderType":"limit","posMode":"hedge_mode","posSide":"long","price":"0.807","reduceOnly":"no","side":"buy","size":"100","status":"live","tradeSide":"open","uTime":"1714235406333"}],"ts":1714235406336}
Order[240427192949_8] exchangeOrderId: '1168153449674219523', status: 'open', price: '0,807', size: '100', average: '', filled: '0', remain: '100'
Size=100 ok, it's amount of placed order here.

On message: {"action":"snapshot","arg":{"instType":"SUSDT-FUTURES","channel":"orders","instId":"default"},"data":[{"accBaseVolume":"15","baseVolume":"15","cTime":"1714235406333","clientOid":"240427192949_8","enterPointSource":"API","feeDetail":[{"feeCoin":"SUSDT","fee":"-0.002421"}],"fillFee":"-0.002421","fillFeeCoin":"SUSDT","fillNotionalUsd":"12.105","fillPrice":"0.807","fillTime":"1714235421396","force":"gtc","instId":"SEOSSUSDT","leverage":"10","marginCoin":"SUSDT","marginMode":"crossed","notionalUsd":"80.7","orderId":"1168153449674219523","orderType":"limit","pnl":"0","posMode":"hedge_mode","posSide":"long","price":"0.807","priceAvg":"0.807","reduceOnly":"no","side":"buy","size":"100","status":"partially_filled","tradeId":"1168153512903782402","tradeScope":"M","tradeSide":"open","uTime":"1714235421396"}],"ts":1714235421404}
Order[240427192949_8] exchangeOrderId: '1168153449674219523', status: 'open', price: '0,807', size: '15', average: '0,807', filled: '15', remain: '0'
Remain should be 85 not 0.
Size=20 what is it? Why not 100? Where is order amount?

On message: {"action":"snapshot","arg":{"instType":"SUSDT-FUTURES","channel":"orders","instId":"default"},"data":[{"accBaseVolume":"35","baseVolume":"20","cTime":"1714235406333","clientOid":"240427192949_8","enterPointSource":"API","feeDetail":[{"feeCoin":"SUSDT","fee":"-0.005649"}],"fillFee":"-0.003228","fillFeeCoin":"SUSDT","fillNotionalUsd":"16.14","fillPrice":"0.807","fillTime":"1714235435736","force":"gtc","instId":"SEOSSUSDT","leverage":"10","marginCoin":"SUSDT","marginMode":"crossed","notionalUsd":"80.7","orderId":"1168153449674219523","orderType":"limit","pnl":"0","posMode":"hedge_mode","posSide":"long","price":"0.807","priceAvg":"0.807","reduceOnly":"no","side":"buy","size":"100","status":"partially_filled","tradeId":"1168153573050101762","tradeScope":"M","tradeSide":"open","uTime":"1714235435736"}],"ts":1714235435742}
Order[240427192949_8] exchangeOrderId: '1168153449674219523', status: 'open', price: '0,807', size: '20', average: '0,807', filled: '35', remain: '-15'
Remain should be 65 not -15.
Size=20 what is it?

On message: {"action":"snapshot","arg":{"instType":"SUSDT-FUTURES","channel":"orders","instId":"default"},"data":[{"accBaseVolume":"70","baseVolume":"35","cTime":"1714235406333","clientOid":"240427192949_8","enterPointSource":"API","feeDetail":[{"feeCoin":"SUSDT","fee":"-0.011298"}],"fillFee":"-0.005649","fillFeeCoin":"SUSDT","fillNotionalUsd":"28.245","fillPrice":"0.807","fillTime":"1714235447747","force":"gtc","instId":"SEOSSUSDT","leverage":"10","marginCoin":"SUSDT","marginMode":"crossed","notionalUsd":"80.7","orderId":"1168153449674219523","orderType":"limit","pnl":"0","posMode":"hedge_mode","posSide":"long","price":"0.807","priceAvg":"0.807","reduceOnly":"no","side":"buy","size":"100","status":"partially_filled","tradeId":"1168153623427887106","tradeScope":"M","tradeSide":"open","uTime":"1714235447747"}],"ts":1714235447754}
Order[240427192949_8] exchangeOrderId: '1168153449674219523', status: 'open', price: '0,807', size: '35', average: '0,807', filled: '70', remain: '-35'
Remain should be 30 not -35.
Size=35 what is it?

On message: {"action":"snapshot","arg":{"instType":"SUSDT-FUTURES","channel":"orders","instId":"default"},"data":[{"accBaseVolume":"100","baseVolume":"30","cTime":"1714235406333","clientOid":"240427192949_8","enterPointSource":"API","feeDetail":[{"feeCoin":"SUSDT","fee":"-0.01614"}],"fillFee":"-0.004842","fillFeeCoin":"SUSDT","fillNotionalUsd":"24.21","fillPrice":"0.807","fillTime":"1714235458879","force":"gtc","instId":"SEOSSUSDT","leverage":"10","marginCoin":"SUSDT","marginMode":"crossed","notionalUsd":"80.7","orderId":"1168153449674219523","orderType":"limit","pnl":"0","posMode":"hedge_mode","posSide":"long","price":"0.807","priceAvg":"0.807","reduceOnly":"no","side":"buy","size":"100","status":"filled","tradeId":"1168153670118879234","tradeScope":"M","tradeSide":"open","uTime":"1714235458879"}],"ts":1714235458887}
Order[240427192949_8] exchangeOrderId: '1168153449674219523', status: 'closed', price: '0,807', size: '30', average: '0,807', filled: '100', remain: '-70'
Remain should be 0 not -70.
Size=30 what is it?

from ccxt.

ttodua avatar ttodua commented on September 22, 2024

@skuvv for next times (would be good now too) please post the sample code you are running (i.e. .createOrder (which_symbol, .. what_amount, etc...)

from ccxt.

ttodua avatar ttodua commented on September 22, 2024

I'm checking this now, but with random symbol & amount

from ccxt.

ttodua avatar ttodua commented on September 22, 2024

please provide exact symbol / amounts, after thorough testing i couldn't detect the issue, so I want to know the exact details (maybe market-type differs)

from ccxt.

ttodua avatar ttodua commented on September 22, 2024

@skuvv
I've been checking this for a while, reading your logs manually trying to understand where is the problem, but i still can't reproduce.

I have tried all modes - cross-vs-isolated, Hedge-vs-OneWay modes...

from your last DemoDebug project the following log comes out:

Order[1171436898434584576] exchangeOrderId: '1171436898401030249', status: 'open', price: '0.838', size: '100', average: '', filled: '0', remain: '100'
Order[1171436898434584576] exchangeOrderId: '1171436898401030249', status: 'closed', price: '0.838', size: '100', average: '0.838', filled: '100', remain: '0'
Order[1171436948489408513] exchangeOrderId: '1171436948472631297', status: 'open', price: '', size: '15', average: '', filled: '0', remain: '15'
Order[1171436948489408513] exchangeOrderId: '1171436948472631297', status: 'closed', price: '0.835', size: '15', average: '0.835', filled: '15', remain: '0'
Order[1171436958786424832] exchangeOrderId: '1171436958769647623', status: 'open', price: '', size: '20', average: '', filled: '0', remain: '20'
Order[1171436958786424832] exchangeOrderId: '1171436958769647623', status: 'closed', price: '0.835', size: '20', average: '0.835', filled: '20', remain: '0'
Order[1171436968877920257] exchangeOrderId: '1171436968865337345', status: 'open', price: '', size: '35', average: '', filled: '0', remain: '35'
Order[1171436968877920257] exchangeOrderId: '1171436968865337345', status: 'closed', price: '0.835', size: '35', average: '0.835', filled: '35', remain: '0'
Order[1171436979032330240] exchangeOrderId: '1171436979015553031', status: 'open', price: '', size: '30', average: '', filled: '0', remain: '30'
Order[1171436979032330240] exchangeOrderId: '1171436979015553031', status: 'closed', price: '0.835', size: '30', average: '0.835', filled: '30', remain: '0'

does that look correct?

from ccxt.

ttodua avatar ttodua commented on September 22, 2024

what log do you get from that demodebug project? please share

from ccxt.

ttodua avatar ttodua commented on September 22, 2024

I suspect of something other issue, checking now.

from ccxt.

ttodua avatar ttodua commented on September 22, 2024

strange, i have reproduced eventually, but i had to run it few times in a row, and only in hedge mode

from ccxt.

ttodua avatar ttodua commented on September 22, 2024

I've converted this into other langs and the issue is also reproducible there too. seems implementational issue with bitget-only (fortunately) and not c# issue.
will post further updates

from ccxt.

ttodua avatar ttodua commented on September 22, 2024

found the reasons for issues, fixing it now and will push a PR in the next hour/s

from ccxt.

skuvv avatar skuvv commented on September 22, 2024

@skuvv I've been checking this for a while, reading your logs manually trying to understand where is the problem, but i still can't reproduce.

I have tried all modes - cross-vs-isolated, Hedge-vs-OneWay modes...

from your last DemoDebug project the following log comes out:

Order[1171436898434584576] exchangeOrderId: '1171436898401030249', status: 'open', price: '0.838', size: '100', average: '', filled: '0', remain: '100'
Order[1171436898434584576] exchangeOrderId: '1171436898401030249', status: 'closed', price: '0.838', size: '100', average: '0.838', filled: '100', remain: '0'
Order[1171436948489408513] exchangeOrderId: '1171436948472631297', status: 'open', price: '', size: '15', average: '', filled: '0', remain: '15'
Order[1171436948489408513] exchangeOrderId: '1171436948472631297', status: 'closed', price: '0.835', size: '15', average: '0.835', filled: '15', remain: '0'
Order[1171436958786424832] exchangeOrderId: '1171436958769647623', status: 'open', price: '', size: '20', average: '', filled: '0', remain: '20'
Order[1171436958786424832] exchangeOrderId: '1171436958769647623', status: 'closed', price: '0.835', size: '20', average: '0.835', filled: '20', remain: '0'
Order[1171436968877920257] exchangeOrderId: '1171436968865337345', status: 'open', price: '', size: '35', average: '', filled: '0', remain: '35'
Order[1171436968877920257] exchangeOrderId: '1171436968865337345', status: 'closed', price: '0.835', size: '35', average: '0.835', filled: '35', remain: '0'
Order[1171436979032330240] exchangeOrderId: '1171436979015553031', status: 'open', price: '', size: '30', average: '', filled: '0', remain: '30'
Order[1171436979032330240] exchangeOrderId: '1171436979015553031', status: 'closed', price: '0.835', size: '30', average: '0.835', filled: '30', remain: '0'

does that look correct?

This log is different, because the main order (qty=100) is filled before next chunk is sent.
I tried to sent opposite order to make partial fill on my first order.

from ccxt.

ttodua avatar ttodua commented on September 22, 2024

I've linked PR to this issue. once it's merged & this issue closed, in few hours thereafter update your ccxt and let us know.

from ccxt.

skuvv avatar skuvv commented on September 22, 2024

@ttodua @carlosmiei
Checked, not fixed:

CCXT Version:4.3.18
11 loaded
waiting
SXRP/SUSDT:SUSDT bid:0,5167 ask:0,5169
Order[1172738109620264974] exchangeOrderId: '1172738109586710553', status: 'open', price: '0,5168', size: '100', average: '', filled: '0', remain: '100'
Order[1172738125881581569] exchangeOrderId: '1172738125873192970', status: 'open', price: '', size: '15', average: '', filled: '0', remain: '15'
Order[1172738125881581569] exchangeOrderId: '1172738125873192970', status: 'closed', price: '0,5168', size: '15', average: '0,5168', filled: '15', remain: '0'
Order[1172738109620264974] exchangeOrderId: '1172738109586710553', status: 'open', price: '0,5168', size: '15', average: '0,5168', filled: '15', remain: '0' //remain should be 100-15=85
Order[1172738131590029328] exchangeOrderId: '1172738131590029317', status: 'open', price: '', size: '20', average: '', filled: '0', remain: '20'
Order[1172738131590029328] exchangeOrderId: '1172738131590029317', status: 'closed', price: '0,5168', size: '20', average: '0,5168', filled: '20', remain: '0'
Order[1172738109620264974] exchangeOrderId: '1172738109586710553', status: 'open', price: '0,5168', size: '20', average: '0,5168', filled: '35', remain: '-15' //remain should be 100-15-20=65
Order[1172738137164259330] exchangeOrderId: '1172738137164259329', status: 'open', price: '', size: '35', average: '', filled: '0', remain: '35'
Order[1172738137164259330] exchangeOrderId: '1172738137164259329', status: 'closed', price: '0,5168', size: '35', average: '0,5168', filled: '35', remain: '0'
Order[1172738109620264974] exchangeOrderId: '1172738109586710553', status: 'open', price: '0,5168', size: '35', average: '0,5168', filled: '70', remain: '-35' //remain should be 100-15-20-35=30
Order[1172738142985953299] exchangeOrderId: '1172738142985953292', status: 'open', price: '', size: '30', average: '', filled: '0', remain: '30'
Order[1172738142985953299] exchangeOrderId: '1172738142985953292', status: 'closed', price: '0,5168', size: '30', average: '0,5168', filled: '30', remain: '0'
Order[1172738109620264974] exchangeOrderId: '1172738109586710553', status: 'closed', price: '0,5168', size: '30', average: '0,5168', filled: '100', remain: '-70' //remain should be 100-15-20-35-30=0

from ccxt.

skuvv avatar skuvv commented on September 22, 2024

Found a clue
image
You use amount for calculations

        object amount = this.safeString(order, "baseVolume");

image
So your remaining in your case means = last filled - total filled. This is wrong.
I think amount should be 'size' here not 'baseVolume'

this code is skipped because amount is filled:

        if (isTrue(isTrue(getValue(market, "swap")) && isTrue((isEqual(amount, null)))))
        {
            amount = this.safeString(order, "size");
        }

image

from ccxt.

ttodua avatar ttodua commented on September 22, 2024

@skuvv I think there is some issue in package deployment, because the code you see is not of really updated version. I'll check this with my lead and let you know

from ccxt.

ttodua avatar ttodua commented on September 22, 2024

@skuvv please update now, the correct version is now released, I confirm

from ccxt.

skuvv avatar skuvv commented on September 22, 2024

tested again, not fixed:

CCXT Version:4.3.22
11 loaded
waiting
SXRP/SUSDT:SUSDT bid:0,5052 ask:0,5054
Order[1174342338436833282] exchangeOrderId: '1174342338432638977', status: 'open', price: '0,5053', size: '100', average: '', filled: '', remain: '' //size ok, remain empty
Order[1174342355235020802] exchangeOrderId: '1174342355230826499', status: 'open', price: '', size: '15', average: '', filled: '', remain: ''
Order[1174342355235020802] exchangeOrderId: '1174342355230826499', status: 'closed', price: '0,5053', size: '15', average: '0,5053', filled: '15', remain: '0'
Order[1174342338436833282] exchangeOrderId: '1174342338432638977', status: 'open', price: '0,5053', size: '100', average: '0,5053', filled: '15', remain: '85' //size and remain OK
Order[1174342361031548929] exchangeOrderId: '1174342361027354657', status: 'open', price: '', size: '20', average: '', filled: '', remain: ''
Order[1174342361031548929] exchangeOrderId: '1174342361027354657', status: 'closed', price: '0,5053', size: '20', average: '0,5053', filled: '20', remain: '0'
Order[1174342338436833282] exchangeOrderId: '1174342338432638977', status: 'open', price: '0,5053', size: '100', average: '0,5053', filled: '20', remain: '80' //size ok, remain Wrong, should be 100-15-20 = 65
Order[1174342370242240529] exchangeOrderId: '1174342370238046209', status: 'open', price: '', size: '35', average: '', filled: '', remain: ''
Order[1174342370242240529] exchangeOrderId: '1174342370238046209', status: 'closed', price: '0,5053', size: '35', average: '0,5053', filled: '35', remain: '0'
Order[1174342338436833282] exchangeOrderId: '1174342338432638977', status: 'open', price: '0,5053', size: '100', average: '0,5053', filled: '35', remain: '65' //size ok, remain Wrong, should be 100-15-20-35 = 30
Order[1174342376181374978] exchangeOrderId: '1174342376181374977', status: 'open', price: '', size: '30', average: '', filled: '', remain: ''
Order[1174342376181374978] exchangeOrderId: '1174342376181374977', status: 'closed', price: '0,5053', size: '30', average: '0,5053', filled: '30', remain: '0'
Order[1174342338436833282] exchangeOrderId: '1174342338432638977', status: 'closed', price: '0,5053', size: '100', average: '0,5053', filled: '30', remain: '70' //size ok, remain Wrong, should be 100-15-20-35-30 = 0

from ccxt.

skuvv avatar skuvv commented on September 22, 2024

@ttodua
One thing is remaining - use "AccBaseVolume" instead of "BaseVolume". Look at API docs above.
Filled = 20 should be 35 here. 20 is latest fill.
image

from ccxt.

ttodua avatar ttodua commented on September 22, 2024

@skuvv I was confused with bitget api, and now I've pushed a fix that should solve it. please test out a new version (after you see the green build in https://app.travis-ci.com/github/ccxt/ccxt/builds, t will be released and update then) and let me know

from ccxt.

skuvv avatar skuvv commented on September 22, 2024

@ttodua
Almost done:

CCXT Version:4.3.30
11 loaded
waiting
SXRP/SUSDT:SUSDT bid:0.5216 ask:0.5218
Order[1177623369373884416] exchangeOrderId: '1177623369315164164', status: 'open', price: '0.5217', size: '100', average: '', filled: '0', remain: '100' //size ok, remain ok
Order[1177623386176266240] exchangeOrderId: '1177623386172071939', status: 'open', price: '', size: '15', average: '', filled: '0', remain: '15'
Order[1177623386176266240] exchangeOrderId: '1177623386172071939', status: 'closed', price: '0.5217', size: '15', average: '0.5217', filled: '15', remain: '0'
Order[1177623369373884416] exchangeOrderId: '1177623369315164164', status: 'open', price: '0.5217', size: '100', average: '0.5217', filled: '15', remain: '85'  //size ok, remain ok
Order[1177623392425779204] exchangeOrderId: '1177623392425779203', status: 'open', price: '', size: '20', average: '', filled: '0', remain: '20'
Order[1177623392425779204] exchangeOrderId: '1177623392425779203', status: 'closed', price: '0.5217', size: '20', average: '0.5217', filled: '20', remain: '0'
Order[1177623369373884416] exchangeOrderId: '1177623369315164164', status: 'open', price: '0.5217', size: '100', average: '0.5217', filled: '20', remain: '65'  //size ok, remain ok
Order[1177623398473965578] exchangeOrderId: '1177623398473965574', status: 'open', price: '', size: '35', average: '', filled: '0', remain: '35'
Order[1177623398473965578] exchangeOrderId: '1177623398473965574', status: 'closed', price: '0.5217', size: '35', average: '0.5217', filled: '35', remain: '0'
Order[1177623369373884416] exchangeOrderId: '1177623369315164164', status: 'open', price: '0.5217', size: '100', average: '0.5217', filled: '35', remain: '30'  //size ok, remain ok
Order[1177623404698312707] exchangeOrderId: '1177623404694118409', status: 'open', price: '', size: '30', average: '', filled: '0', remain: '30'
Order[1177623404698312707] exchangeOrderId: '1177623404694118409', status: 'closed', price: '0.5217', size: '30', average: '0.5217', filled: '30', remain: '0'
Order[1177623369373884416] exchangeOrderId: '1177623369315164164', status: 'closed', price: '0.5217', size: '100', average: '0.5217', filled: '30', remain: '70' //size ok, remain wrong, should be 0

from ccxt.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.