рдПрдХ рд╕рд░рд▓ рдХреНрд░рд┐рдкреНрдЯреЛрдХреНрдпреВрд░реЗрдВрд╕реА рдЯреНрд░реЗрдбрд┐рдВрдЧ рдмреЙрдЯ

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдЖрдЬ рд╣рдо рд╕реНрдЯреЙрдХ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдкрд░ рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдореБрдХрд╛рдмрд▓рд╛ рдЯреНрд░реЗрдбрд┐рдВрдЧ рд░реЛрдмреЛрдЯ рд▓рд┐рдЦреЗрдВрдЧреЗред Kriptobirzheред рдХреНрд░рд┐рдкреНрдЯреЛрдХреНрдпреВрд░реЗрдВрд╕реА рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреНрдпреЛрдВ?


рдХ) рдкреНрд░рдЪрд╛рд░ рд╡рд┐рд╖рдп;
b) рд╡реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕рд░рд▓ рд╣реИрдВред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рддреБрд░рдВрдд рддреАрди рдПрдХреНрд╕рд┐рд╕ рдХреИрд╕реАрдиреЛ рдХреЗ рдкреНрд░рд╢рдВрд╕рдХреЛрдВ рдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: рдЖрдкрдиреЗ рдХрд▓ рдПрдХ рдХрд╛рд░ рдирд╣реАрдВ рдХрдорд╛рдИред рд▓реЗрдЦ рдЖрдкрдХреЗ рд░реЛрдмреЛрдЯ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЖрджрд┐рдо рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдХрд╛рдо рдХрд░рдирд╛ред


рджреВрд╕рд░реЗ, рдЖрдк рдХрдорд╛рдПрдВрдЧреЗред рдмрд╕ рдереЛрдбрд╝рд╛ рд╕рд╛ред


рд╕реА / рдПрдл "рдПрдХ рдЧрд┐рд░рд╛рд╡рдЯ рдХреЗ рд▓рд┐рдП рдЦреЗрд▓" (2015)
- рдпрд╣ рдЧрдВрдз, рдпрд╣ рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдЦреБрд╢рдмреВ рдЖ рд░рд╣реА рд╣реИ?
- рдХреЛрд▓реЛрди?
- рдирд╣реАрдВ ...
- рдЕрд╡рд╕рд░?
- рдирд╣реАрдВред рдордиреАред
- рдУрд╣ ... рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ
- рдкреИрд╕реЗ рдХреА рдЧрдВрдз!
- рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред

рд╕рдмрд╕реЗ рдЕрдзреАрд░ рдХреЗ рд▓рд┐рдП, рдПрдХреНрд╕реЛ-рдПрдХреНрд╕рдЪреЗрдВрдЬ-рдЯреНрд░реЗрдб-рдмреЙрдЯ рдЧрд┐рдердм рдкрд░ рд╕рднреА рдХреЛрдбред


рдЪрд░рдг 1: рд╡рд┐рдирд┐рдордпред


рд╣рдо EXMO рдПрдХреНрд╕рдЪреЗрдВрдЬ рдкрд░ рдЯреНрд░реЗрдб рдХрд░реЗрдВрдЧреЗред рдЗрд╕рдХреЗ рдХрдИ рдХрд╛рд░рдг рд╣реИрдВред рдПрдХреНрд╕рдЪреЗрдВрдЬ рд╕реАрдЖрдИрдПрд╕ рдореЗрдВ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ, рдпрд╣ рд░реВрд╕реА рднрд╛рд╖реА рд╣реИ рдФрд░ рд░реВрдмрд▓ рдХреЗ рдЗрдирдкреБрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рд░реВрдмрд▓ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝реЗ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред


рдордВрддреНрд░рд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рд░реВрдмрд▓ рдЬрдорд╛ рдХрд░рдиреЗ рдХреА рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдПрдХ рд╕рднреНрдп рдХрдореАрд╢рди, рдХреБрдЫ рд╡реНрдпрд╛рдкрд╛рд░рд┐рдХ рдЬреЛрдбрд╝реЗред


рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рд╣реИрдВред рдЗрд╕рд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдХрд╛рдо рдореЗрдВ рдЖрд╕рд╛рдиреА рд╣реЛрдЧреАред


рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред


рдмреЗрд╢рдХ, рдЖрдкрдХреЛ рд╕реНрдЯреЙрдХ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдФрд░ рдХреБрдЫ рдкреИрд╕реЗ рдЬрдорд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ $ 5 рдХрд╛ рдпреЛрдЧрджрд╛рди рджрд┐рдпрд╛ред


рдЖрдкрдХреЗ рдЦрд╛рддреЗ рдореЗрдВ рдЖрдЧреЗ рдЖрдкрдХреЛ рдПрдкреАрдЖрдИ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рдмрд┐рдпрд╛рдВ рдорд┐рд▓реЗрдВрдЧреАред


рдореИрдВ NodeJS рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ (рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдиреЛрдбрдЬ рдФрд░ рдПрдирдкреАрдПрдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА)ред


рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░, рдПрдХ рдирдпрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдФрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░рд╛ рдЯреНрд░реЗрдбрд┐рдВрдЧ рд░реЛрдмреЛрдЯ рд╣реЛрдЧрд╛ (рдЬреИрд╕реЗ exmo / index.js), рдХрдВрд╕реЛрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдЕрдВрддрд┐рдо рдорд╛рдирдХ рддреИрдпрд╛рд░реА рдХрд░реЗрдВред


рд╣рдо рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ - npm init, рдлрд┐рд░ рд╕рднреА рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдВрдЯрд░ рджрдмрд╛рдПрдВред


рдЖрдЧреЗ рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ


npm install exmo-api 

рдЬрдмрдХрд┐ рдкреИрдХреЗрдЬ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдПрдХ рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ, рдЗрд╕реЗ exmo.js рдХрд╣реЗрдВ рдФрд░ рдЗрд╕реЗ рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рд╕реЗ рднрд░реЗрдВред


рдЗрди рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде
 var CryptoJS = require("crypto-js") http = require('http'), querystring = require('querystring'), request = require('request'), config = { url: 'https://api.exmo.me/v1/' }; function sign(message){ return CryptoJS.HmacSHA512(message, config.secret).toString(CryptoJS.enc.hex); } exports.init_exmo = function (cfg) { config.key = cfg.key; config.secret = cfg.secret; config.nonce = Math.floor(new Date().getTime()*1000); }; exports.api_query = function(method_name, data, callback){ data.nonce = config.nonce++; var post_data = querystring.stringify(data); var options = { url: config.url + method_name, method: 'POST', headers: { 'Key': config.key, 'Sign': sign(post_data) }, form:data }; request(options, function (error, response, body) { if (!error && response.statusCode == 200) { callback(body); }else{ callback(error); } }); }; exports.api_query2 = function(method_name, data, callback){ data.nonce = config.nonce++; var post_data = querystring.stringify(data); var post_options = { host: 'api.exmo.me', port: '80', path: '/v1/' + method_name, method: 'POST', headers: { 'Key': config.key, 'Sign': sign(post_data), 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': Buffer.byteLength(post_data) } }; var post_req = http.request(post_options, function(res) { res.setEncoding('utf8'); res.on('data', function (chunk) { callback(chunk); }); }); post_req.write(post_data); post_req.end(); }; exports.test = function(){ return config.key; }; 

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдкреАрдЖрдИ рдХрд╛ рдкрддрд╛, рдЕрддрд┐рд░рд┐рдХреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдХрдиреЗрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдПрдкреАрдЖрдИ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдХрд╛рд░реНрдпред


рдмрд╕ рдЗрддрдирд╛ рд╣реА, рд╣рдордиреЗ рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрдм рд╣рдо рд╕реАрдзреЗ "рдкреИрд╕рд╛ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реА рдорд╢реАрди" рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ;)


рд╕реНрдЯреЗрдЬ 2: рдХреЛрдб


рд╣рдорд╛рд░реА index.js рдЦреЛрд▓реЗрдВ рдФрд░ exmo.js рдлрд╝рд╛рдЗрд▓ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ:


 const exmo = require("./exmo"); 

рдЗрд╕рдХреЗ рдмрд╛рдж, рдЕрдкрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЦрд╛рддреЗ рдореЗрдВ рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдкрд░ рдЬрд╛рдПрдВ рдЬрд╣рд╛рдВ рд╣рдордиреЗ рдПрдкреАрдЖрдИ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЪрд╛рдмрд┐рдпрд╛рдВ рдмрдирд╛рдИ рдереАрдВред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЪрд░ рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ:


 const apiKey = ' '; const apiSecret = ' '; 

рдЕрдм рджреЛ рдЪрд░ рдмрдирд╛рдПрдВ:
Currency1 рд╣рдо рдХреНрдпрд╛ рдЦрд░реАрджрддреЗ рд╣реИрдВ;
Currency2 - рд╡рд╣ рдореБрджреНрд░рд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдЦрд░реАрдж рд░рд╣реЗ рд╣реИрдВред


рдореИрдВ рдбреЙрд▓рд░ рдХреЗ рд▓рд┐рдП рдмрд┐рдЯрдХреЙрдЗрди рдЦрд░реАрджрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:


 const currency1 = 'BTC'; const currency2 = 'USD'; 

рдЕрдЧрд▓рд╛, рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ - рд╣рдо рдПрдХ рдиреНрдпреВрдирддрдо рд╢рд░реНрдд рд░рд╛рд╢рд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░ рдмрдирд╛рддреЗ рд╣реИрдВред рдПрдХреНрд╕рдЪреЗрдВрдЬ рдЗрд╕ рд░рд╛рд╢рд┐ рд╕реЗ рдХрдо рдЦрд░реАрджрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред


рд╣рдо рдкрддреЗ рдкрд░ рдЬрд╛рдПрдБ https://api.exmo.com/v1/pair_settings/ рдЕрдкрдиреА рдЬреЛрдбрд╝реА рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВ (рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ BTC_USD рд╣реИ) рдФрд░ рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рджреЗрдЦреЗрдВ - min_quantity - 0.001


 const currency1MinQuantity = 0.001; 

рдФрд░ рдХреБрдЫ рдФрд░ рдЪрд░:


рдорд┐рдирдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдПрдХ рдЕрдзреВрд░рд╛ рдЦрд░реАрдж рдЖрджреЗрд╢ рдореБрджреНрд░рд╛ 1 рдХреЛ рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛


 const orderLifeTime = 3; 

рд╡рд┐рдирд┐рдордп рдЖрдпреЛрдЧ (0.002 = 0.2%)


 const stockFee = 0.002; 

рдФрд╕рдд рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рдордп рдХреА рдЕрд╡рдзрд┐ (рдорд┐рдирдЯ рдореЗрдВ) (рдпрд╣ рд╣рдорд╛рд░реЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛)


 const avgPricePeriod = 1; 

Currency2 рдХреЛ рдПрдХ рдмрд╛рд░ рдХреЗ рд▓реЗрдирджреЗрди рдореЗрдВ Currency1 рдЦрд░реАрджрдиреЗ рдХреЗ рд▓рд┐рдП 2 рдХреА рд░рд╛рд╢рд┐ (рдореИрдВрдиреЗ $ 5 рдлреЗрдВрдХ рджрд┐рдпрд╛ - рдореИрдВ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реВрдВрдЧрд╛)


 const canSpend = 5; 

рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдирджреЗрди рд╕реЗ рд▓рд╛рдн рдХреА рд╡рд╛рдВрдЫрд┐рдд рд░рд╛рд╢рд┐ (0.001 = 0.1%)


 const profit = 0.001; 

рдпрджрд┐ рд╡рд┐рдирд┐рдордп рд╕рдордп рд╡рд░реНрддрдорд╛рди рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ


 const stockTimeOffset = 0; 

рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреА рдЬреЛрдбрд╝реА рдХреЛ _ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ


 let currentPair = currency1+'_'+currency2; 

рдХрдиреЗрдХреНрд╢рди рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВред


 exmo.init_exmo({key:apiKey, secret:apiSecret}); 

рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЕрдкрдиреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 exmo.api_query("user_info", { }, result => console.log(result);); 

рдХрдВрд╕реЛрд▓ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЪрд▓рд╛рдПрдВ


 node index.js 

рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдкрдиреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦреЗрдВрдЧреЗ!


рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдк рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рднрд╛рдЧ рдкрд░ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ - рд╡рд╣ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рджрд╛рджреА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред


рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдКрдкрд░ рдХрд╣рд╛ рдерд╛ рдХрд┐ рд╣рдорд╛рд░рд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдмреЗрд╡рдХреВрдл рд╣реЛрдЧрд╛, рдЕрдм рдЖрдк рд╕рдордЭреЗрдВрдЧреЗ рдХрд┐ рдХрд┐рддрдирд╛)


рдЪрд╛рд▓ рдХрд┐рд╕реА рднреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд▓реЗрдирджреЗрди рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ - рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ avgPricePeriod рдХрд╛ рдЪрд░ рд╣реИ - рдФрд░ рдФрд╕рдд рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП Currency1 рдмреЗрдЪрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдФрд╕рдд рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдирд╛ рдСрд░реНрдбрд░ рджреЗрдВрдЧреЗред


рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЕрдкрдирд╛ рд╡реНрдпрд╛рдкрд╛рд░ () рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ


 function trade(){} 

рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдЦреБрд▓реЗ рдЖрд░реНрдбрд░ рдХреА рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИ:


1) рд╣рдо рдЬрд╛рдБрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ user_open_orders api рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдорд╛рд░реА рдЬреЛрдбрд╝реА рдХреЗ рд▓рд┐рдП рдЦреБрд▓реЗ рдСрд░реНрдбрд░ рд╣реИрдВред рдпрджрд┐ рдмрд┐рдХреНрд░реА рдХреЗ рд▓рд┐рдП рднреА рд╣реИрдВ,


рддрдм рд╣рдо рдмрд╕ рдЙрдирдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ (рдХрднреА-рдХрднреА рд╕рдордп рдХреЗ рдЕрдВрдд рддрдХ)ред рдпрджрд┐ рдЦрд░реАрдж рдХреЗ рдЖрджреЗрд╢ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдпрд╛рдж рд░рдЦреЗрдВред


 exmo.api_query("user_open_orders", { }, result => { let res = JSON.parse(result); if(res[currentPair] == undefined) console.log('  '); let buyOrders = []; for(let i in res[currentPair]){ console.log(res[currentPair][i]); if(res[currentPair][i].type == 'sell'){ console.log(',    /    '); }else{ buyOrders.push(res[currentPair][i]); } } 

2) рд╣рдо рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЦреБрд▓реА рдЦрд░реАрдж рдХреЗ рдЖрджреЗрд╢ рд╣реИрдВред


рд╣рдо рд╕рднреА рдЖрджреЗрд╢реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдЗрддрд┐рд╣рд╛рд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЖрджреЗрд╢ рдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрджреЗрд╢ рдЖрдИрдбреА рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред


3 рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:


 if(buyOrders.length > 0){ for(let key in buyOrders){ console.log(',     ', buyOrders[key]['order_id']); exmo.api_query('order_trades', {"order_id": buyOrders[key]['order_id']}, result => { let res = JSON.parse(result); 

1) рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдореБрджреНрд░рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ рдХреЗ рдЖрджреЗрд╢реЛрдВ рд╕реЗ рдЦрд░реАрдж рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╛рдВрдЫрд┐рдд рдореВрд▓реНрдп рдкрд░ рдЦрд░реАрджрд╛ рд╣реИ, рддреЛ рд╣рдо рдкреВрд░реА рд░рд╛рд╢рд┐ рдХреА рдЦрд░реАрдж рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред


 if(res.result !== false){ console.log(',       ,     '); } 

2) рджреВрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде, рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣рдорд╛рд░рд╛ рдСрд░реНрдбрд░ рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реИред рдХреАрдорддреЗрдВ рдЬрд▓реНрджреА рд╕реЗ рдмрджрд▓рддреА рд╣реИрдВ рдФрд░ рд╢рд╛рдпрдж рдФрд╕рдд рдХреАрдордд рдЕрдм рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рд╡реИрд░рд┐рдПрдмрд▓ рдСрд░реНрдбрд░рд▓рд╛рдЗрдлрдЯрд╛рдЗрдо рдмрдирд╛рдпрд╛, рдЬрд╣рд╛рдВ рд╣рдо рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдорд┐рдирдЯреЛрдВ рдореЗрдВ рд╣рдорд╛рд░рд╛ рдСрд░реНрдбрд░ рдХрд┐рддрдирд╛ рд▓рдЯрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


рдпрджрд┐ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдСрд░реНрдбрд░ рдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрд░реНрдбрд░_рдХреИрдВрд╕реЗрд▓ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрд░реНрдбрд░ рдХреЛ рд░рджреНрдж рдХрд░ рджреЗрдВред


 let timePassed = (new Date().getTime() / 1000) + stockTimeOffset * 60 * 60 - (buyOrders[key]['created']); if(timePassed > orderLifeTime * 60){ exmo.api_query('order_cancel',{"order_id":buyOrders[key]['order_id']}, res => { let result = JSON.parse(res); if(result.error) console.log(result.error); console.log(`   ${orderLifeTime}     ${currency1}`); }); }else{ 

3) рдпрджрд┐ рд╕рдордп рдЕрднреА рддрдХ рдирд╣реАрдВ рдЖрдпрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо рдЕрдкрдиреА рдХреАрдордд рдкрд░ рдЦрд░реАрдж рд╕рдХрддреЗ рд╣реИрдВред


 console.log(`,        ,      ${timePassed} `); } } }); } }else{ 

рд╕рдм рдХреБрдЫ, рд╣рдо рдЦреБрд▓реЗ рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рдЕрдм рд╣рдорд╛рд░рд╛ рд░реЛрдмреЛрдЯ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЬрдм рд╡рд╣ рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рддрд╛ рд╣реИ рддреЛ рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рдЖрдзрд╛ рдХрд╛рдо рд╣реЛ рдЧрдпрд╛ред


рддреЛ, рдПрдХ рдмреНрд▓реЙрдХ рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдСрд░реНрдбрд░ рдирд╣реАрдВ рд╣реИред


рд╣рдореЗрдВ user_info рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЦрд╛рддреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓рддреА рд╣реИ:


 exmo.api_query('user_info',{},(result)=>{ let res = JSON.parse(result); 

рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреА рдЬреЛрдбрд╝реА рдХреЗ рд▓рд┐рдП рд╢реЗрд╖ рд░рд╛рд╢рд┐ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:


 let balance = res.balances[currency1]; let balance2 = res.balances[currency2]; 

рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ Currency1 рд╣реИ рдЬрд┐рд╕реЗ рдмреЗрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?


 if(balance >= currency1MinQuantity){} 

рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рд╣рдореЗрдВ рд╡рд┐рдХреНрд░рдп рджрд░ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдЖрдкрдХреЛ рдЦрд░реАрджреА рдЧрдИ рд╕рднреА рдореБрджреНрд░рд╛ рдХреЛ рдмреЗрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рдЬреЛ рд░рд╛рд╢рд┐ рдЖрдкрдиреЗ рдЦрд░реАрджреА рдереА, рд╡рд╣ рд╡рд┐рдирд┐рдордп рдЖрдпреЛрдЧ рдХреЛ рдШрдЯрд╛ рджреА рдЧрдИ рдереАред


рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ! рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЦрд░реАрджреА рдЧрдИ рдореБрджреНрд░рд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдореБрджреНрд░рд╛рдПрдВ рд╣реИрдВ - рд╡рд┐рдирд┐рдордп рдиреЗ рдХрдореАрд╢рди рд▓рд┐рдпрд╛ред


 let wannaGet = canSpend + canSpend * (stockFee+profit); console.log('sell', balance, wannaGet, (wannaGet/balance)); 

рдСрд░реНрдбрд░ рдмрдирд╛рддреЗ рд╕рдордп, рдСрд░реНрдбрд░_рдХреНрд░рд┐рдПрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:


  • рд╡реНрдпрд╛рдкрд╛рд░ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝реА рд╣рдорд╛рд░реА рд╡рд░реНрддрдорд╛рди рдЬреЛрдбрд╝реА рд╣реИ;
  • рдорд╛рддреНрд░рд╛ - рдорд╛рддреНрд░рд╛;
  • рдореВрд▓реНрдп - рдореВрд▓реНрдп;
  • рдкреНрд░рдХрд╛рд░ - рдирд┐рд░реНрдорд┐рдд рдЖрджреЗрд╢ рдХрд╛ рдкреНрд░рдХрд╛рд░ (рдЦрд░реАрдж / рдмрд┐рдХреНрд░реА);

рд╣рдо рдмреЗрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдЬреИрд╕реЗ рд╣рдо рдмреЗрдЪрддреЗ рд╣реИрдВ ред


 let options = { "pair": currentPair, "quantity": balance, "price": wannaGet / balance, "type": 'sell' }; 

рдФрд░ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдВ, рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рд╕рд╣реА рд╣реИ, рддреЛ рдЖрдк рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рджреЗрдЦреЗрдВрдЧреЗ "рдПрдХ рдмрд┐рдХреНрд░реА рдЖрджреЗрд╢ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ"


 exmo.api_query("order_create", options,(result)=>{ if(result.error) console.log(result.error); console.log("   ", currency1, result.order_id); }); 

рд╡рд╣ рд╕рдм рд╣реИред рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдореБрджреНрд░рд╛ рдереА, рддреЛ рд╣рдордиреЗ рдЗрд╕реЗ рдмреЗрдЪрдиреЗ рдХрд╛ рдЖрджреЗрд╢ рджрд┐рдпрд╛ред


рдЕрдм рд╣рдо рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмреНрд▓реЙрдХ рдХреА рдУрд░ рд░реБрдЦ рдХрд░рддреЗ рд╣реИрдВ: рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд░реЗрдВрд╕реА 1 (btc) рдирд╣реАрдВ рд╣реИ рдФрд░ рд╣рдо рдЗрд╕реЗ рдЕрдкрдиреА рдХрд░реЗрдВрд╕реА 2 (usd) рдХреЗ рд▓рд┐рдП рдЦрд░реАрджрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред


рдкрд╣рд▓реЗ, рдпрд╣ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдХрд░реЗрдВрд╕реА 2 рдореЗрдВ рдмреИрд▓реЗрдВрд╕ рд╢реАрдЯ рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рдкреИрд╕рд╛ рд╣реИред


 if(balance2 >= canSpend){} 

рдЕрдЧрд░ рд╡рд╣рд╛рдБ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдФрд╕рдд рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП Currency1 (btc) рдЙрд╕ рд╕рдордп рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдмреЗрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ avgPricePeriod рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдерд╛ ред


рдЧрд╛рдиреЗ рдХреЗ рдмреЛрд▓:
Exmo рдореЗрдВ рдореБрджреНрд░рд╛ рдЬреЛрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдЖрдВрдХрдбрд╝реЛрдВ рдФрд░ рдЯреНрд░реЗрдбрд┐рдВрдЧ рд╡реЙрд▓реНрдпреВрдо рдХреЗ рд╕рд╛рде рдПрдХ рдЯрд┐рдХрд░ рд╡рд┐рдзрд┐ рд╣реИред рдЖрдВрдХрдбрд╝реЗ рдкрд┐рдЫрд▓реЗ 24 рдШрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдФрд╕рдд рдореВрд▓реНрдп рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдФрд╕рдд рдХреАрдордд рдФрд░ рдЬрд┐рд╕ рдкрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдиреАрд▓рд╛рдореА рд╣реЛ рд░рд╣реА рд╣реИ, рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рд╣рдо рдПрдХ рдмреЗрдЪрдиреЗ рдХреЗ рдЖрджреЗрд╢ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рд╣рдо рдЕрдкрдиреА рдмрд╛рдЗрдХ рдмрдирд╛рдПрдВрдЧреЗред


Exmo рдореЗрдВ рдПрдХ рдЯреНрд░реЗрдб рд╡рд┐рдзрд┐ рд╣реИ, рдпрд╣ рдПрдХ рдореБрджреНрд░рд╛ рдЬреЛрдбрд╝реА рдХреЗ рд▓рд┐рдП рд╕реМрджреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИред


рд╣рдо рдЬрд┐рд╕ avgPricePeriod рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирд╕реЗ рдФрд╕рдд рдХреАрдордд рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВрдЧреЗ, рдЙрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рд╕рд╣реА рд╕реМрджрд╛ рдХрд░реЗрдВрдЧреЗред


рдпрд╣ рдПрдХ рдЖрджрд░реНрд╢ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреАрдорддреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдПрдЧрд╛ рдЬрд┐рд╕ рдкрд░ рд╡реЗ рдмреЗрдЪрддреЗ рд╣реИрдВ рдФрд░ рдЦрд░реАрджрддреЗ рд╣реИрдВред


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЗрдЦрди рдХреЗ рд╕рдордп, BTC_USD рдХреА рдФрд╕рдд рдХреАрдордд 8314 рд╣реИ, рдЬрдмрдХрд┐ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдкрд░ рдЦрд░реАрдж 7970 рдХреА рдХреАрдордд рдкрд░ рдХреА рдЬрд╛рддреА рд╣реИред


рдпрджрд┐ рд╣рдо рдФрд╕рдд рдореВрд▓реНрдп рдкрд░ рдСрд░реНрдбрд░ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рддреБрд░рдВрдд рдмреЗрдЪрдиреЗ рдХреЗ рдЖрджреЗрд╢реЛрдВ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдиреНрдпреВрдирддрдо рдореВрд▓реНрдп рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рд▓реЗрдХрд┐рди рд▓рд╛рдн рдФрд░ рд╡рд┐рдирд┐рдордп рдЖрдпреЛрдЧ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдкрд░, рд╣рдореЗрдВ рдмрд┐рдХреНрд░реА рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд▓рдВрдмрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред


рддреЛ, рдЪрд▓рд┐рдП рдЯреНрд░реЗрдбреЛрдВ рдХреА рд╡рд┐рдзрд┐ рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирд╕реЗ рд╣рдорд╛рд░реА рдХрд░рдВрдЯ рдЬреЛрдбрд╝реА рдкрд░ рдЖрдВрдХрдбрд╝реЗ рдорд╛рдВрдЧрддреЗ рд╣реИрдВ:


 exmo.api_query("trades",{"pair":currentPair}, result => { let res = JSON.parse(result); let prices = []; let summ = 0; 

рд╣рдо рд╕рднреА рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ рдЬреЛ рд╣рдорд╛рд░реЗ рд╕рдордп рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред


 for(deal in res[currentPair]){ let timePassed = (new Date().getTime() / 1000) + stockTimeOffset * 60 * 60 - res[currentPair][deal].date; if(timePassed < avgPricePeriod * 60){ summ += parseInt(res[currentPair][deal].price); prices.push(parseInt(res[currentPair][deal].price)); } } 

рдФрд░ рдФрд╕рдд рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВред


 let avgPrice = summ2 / prices.length; 

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдФрд╕рдд рдореВрд▓реНрдп рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд╕реНрдЯреЙрдХрдлреА рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХрдореАрд╢рди рдХреЛ рдШрдЯрд╛рдПрдВ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рд▓рд╛рдн рдЬреЛрдбрд╝реЗрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдФрд╕рдд рдмрд╛рдЬрд╛рд░ рдореВрд▓реНрдп рд╕реЗ рдиреАрдЪреЗ рдПрдХ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рдореБрджреНрд░рд╛ рдЦрд░реАрдж рд▓реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рдж рдореЗрдВ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдЗрд╕рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд▓реЗрддрд╛ рд╣реИ;


 let needPrice = avgPrice - avgPrice * (stockFee + profit); 

рд╣рдореЗрдВ рдЕрдВрддрд┐рдо рд░рд╛рд╢рд┐ рдорд┐рд▓рддреА рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдЦрд░реАрджрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред


 let ammount = canSpend / needPrice; console.log('Buy', ammount, needPrice); 

рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рддрд░рд╣ рдХреА рдореБрджреНрд░рд╛ рдЦрд░реАрджрдирд╛ рд╕рдВрднрд╡ рд╣реИ (рдХреНрдпрд╛ рдиреНрдпреВрдирддрдо рдЦрд░реАрдж рд░рд╛рд╢рд┐ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛)ред


 if(ammount >= currency1MinQuantity){} 

рдпрджрд┐ рд╣рдорд╛рд░реА рдорд╛рддреНрд░рд╛ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рд╣рдо рдСрд░реНрдбрд░_рдХреНрд░рд┐рдПрдЯ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдмрдирд╛рддреЗ рд╣реИрдВ , рдХреЗрд╡рд▓ рдЗрд╕ рдмрд╛рд░ рдЦрд░реАрдж рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рдеред


  let options = { "pair": currentPair, "quantity": ammount, "price": needPrice, **"type": 'buy'** }; exmo.api_query('order_create', options, res => { let result = JSON.parse(res); if(result.error) console.log(result.error); console.log('   ', result.order_id); }); }else{ console.log(',      '); } }); }else{ console.log(',   '); } 

рдЕрдм рд╣рдореЗрдВ рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдХреЛ рдЯрд╛рдЗрдорд░ рдкрд░ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реАрдорд╛ рд╣рд░ 5 рд╕реЗрдХрдВрдб рдореЗрдВ рдПрдХ рдмрд╛рд░ рд╣реЛрддреА рд╣реИ) рдФрд░ рд╣рдо рдЗрд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред


 var timerId = setTimeout(function tick() { trade(); timerId = setTimeout(tick, 5000); }, 5000); 

 node index.js 

рдмрдзрд╛рдИ рд╣реЛ, рдЖрдкрдиреЗ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдЯреНрд░реЗрдбрд┐рдВрдЧ рд░реЛрдмреЛрдЯ рд▓рд┐рдЦрд╛: рдЖрдк рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдкреВрд░рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░рд╛ рдкреИрд╕рд╛ рдХрдорд╛ рд╕рдХрддреЗ рд╣реИрдВ) рдмрд╕ рдордЬрд╛рдХ рдХрд░ рд░рд╣реЗ рд╣реИрдВ ред


рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЙрдЪрд┐рдд рд╕рд╡рд╛рд▓ рд╣реИ, "рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐рддрдирд╛ рдкреИрд╕рд╛ рдХрдорд╛ рд╕рдХрддреЗ рд╣реИрдВ?"


$ 5 рдХреЗ рд╕рд╛рде рдПрдХ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП, рдореИрдВ рд▓рдЧрднрдЧ 2-3 рд╕реЗрдВрдЯ рдХрдорд╛рддрд╛ рд╣реВрдВред рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдкреНрд░рдзрд╛рдирддрд╛ рдХреЗ рдХрд╛рд░рдг рд╣реИ, рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдХреАрдордд рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рдореЗрдВ рдЙрддрд╛рд░-рдЪрдврд╝рд╛рд╡ рдХрд░рддреА рд╣реИ (рдФрд░ рдпрд╣ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдХреНрд░рд┐рдкреНрдЯреЛрдХреНрдпреВрд░реЗрдВрд╕реА рдПрдХреНрд╕рдЪреЗрдВрдЬреЛрдВ рдкрд░ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИ)ред рд▓рдЧрднрдЧ 10-20 рдСрдкрд░реЗрд╢рди рдкреНрд░рддрд┐ рджрд┐рди (рдЕрдЪреНрдЫреЗ рд╣рд╛рдереЛрдВ рд╕реЗ) рд╣реЛрддреЗ рд╣реИрдВред рдЖрдк рдЦреБрдж рдХреЛ рдЧрд┐рди рд╕рдХрддреЗ рд╣реИрдВ;)


рд▓реЗрдХрд┐рди рд╣рдо рдкреИрд╕реЗ рдХреА рдЦрд╛рддрд┐рд░ рдХреЛрдб рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ)


рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рдмреЙрдЯ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЬреАрдердм рдХрд╛ рд▓рд┐рдВрдХред
https://github.com/v-florinskiy/exmo-exchange-trade-bot


рдпрд╣ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рд╣реИ - рдХрдбрд╝рд╛рдИ рд╕реЗ рдиреНрдпрд╛рдп рди рдХрд░реЗрдВ)


рд╕рднреА рд▓рд╛рднред


рдкреБрдирд╢реНрдЪ: рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдиреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рдереЗ, рдЖрдкрдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧреА рдЬрдмрдХрд┐ рдХрдВрд╕реЛрд▓ рдЦреБрд▓рд╛ рд╣реИред


рдЖрдкрдХреЗ рд░реЛрдмреЛрдЯ рдХреЛ 24/7 рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡реАрдкреАрдПрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рд╡рд╣рд╛рдВ рдЖрдкрдиреЗ рдиреЛрдбрдЬ, рдПрдирдкреАрдПрдо рдФрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреАрдПрдо 2 рд▓рдЧрд╛рдпрд╛ред рдЗрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧреА, рднрд▓реЗ рд╣реА рдХрдВрд╕реЛрд▓ рдмрдВрдж рд╣реЛред

Source: https://habr.com/ru/post/hi416073/


All Articles