์—… ๋น„ํŠธ ๋ด‡ | ๐Ÿšจ(ํŽŒํ•‘์žฅ๋‹จํƒ€๋น„๋ฒ•)์ด๊ฑฐ ๋น„๋ฐ€์ธ๋ฐ์šฅ.. ๊ฑฐ๋ž˜์†Œ ๋ด‡์ด ๊ฐ€๊ฒฉ ๋Œ์–ด์˜ฌ๋ฆฌ๋Š” ๋กœ์ง ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค(Feat. ์„ธ๋ ฅ์€ ์ž๊ธฐ๋ˆ ๋งŽ์ด ์•ˆ์จ์š”) 69 ๊ฐœ์˜ ์ •๋‹ต

๋‹น์‹ ์€ ์ฃผ์ œ๋ฅผ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ “์—… ๋น„ํŠธ ๋ด‡ – ๐Ÿšจ(ํŽŒํ•‘์žฅ๋‹จํƒ€๋น„๋ฒ•)์ด๊ฑฐ ๋น„๋ฐ€์ธ๋ฐ์šฅ.. ๊ฑฐ๋ž˜์†Œ ๋ด‡์ด ๊ฐ€๊ฒฉ ๋Œ์–ด์˜ฌ๋ฆฌ๋Š” ๋กœ์ง ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค(feat. ์„ธ๋ ฅ์€ ์ž๊ธฐ๋ˆ ๋งŽ์ด ์•ˆ์จ์š”)“? ๋‹ค์Œ ์นดํ…Œ๊ณ ๋ฆฌ์˜ ์›น์‚ฌ์ดํŠธ ppa.maxfit.vn ์—์„œ ๊ท€ํ•˜์˜ ๋ชจ๋“  ์งˆ๋ฌธ์— ๋‹ต๋ณ€ํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค: https://ppa.maxfit.vn/blog/. ๋ฐ”๋กœ ์•„๋ž˜์—์„œ ๋‹ต์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์„ฑ์ž ํฌ๋ฆฝํ† ๋ฉ”ํƒ€ [crypto meta] ์ด(๊ฐ€) ์ž‘์„ฑํ•œ ๊ธฐ์‚ฌ์—๋Š” ์กฐํšŒ์ˆ˜ 30,134ํšŒ ๋ฐ ์ข‹์•„์š” 294๊ฐœ ๊ฐœ์˜ ์ข‹์•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์—… ๋น„ํŠธ ๋ด‡ ์ฃผ์ œ์— ๋Œ€ํ•œ ๋™์˜์ƒ ๋ณด๊ธฐ

์—ฌ๊ธฐ์—์„œ ์ด ์ฃผ์ œ์— ๋Œ€ํ•œ ๋น„๋””์˜ค๋ฅผ ์‹œ์ฒญํ•˜์‹ญ์‹œ์˜ค. ์ฃผ์˜ ๊นŠ๊ฒŒ ์‚ดํŽด๋ณด๊ณ  ์ฝ๊ณ  ์žˆ๋Š” ๋‚ด์šฉ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•˜์„ธ์š”!

d์—ฌ๊ธฐ์—์„œ ๐Ÿšจ(ํŽŒํ•‘์žฅ๋‹จํƒ€๋น„๋ฒ•)์ด๊ฑฐ ๋น„๋ฐ€์ธ๋ฐ์šฅ.. ๊ฑฐ๋ž˜์†Œ ๋ด‡์ด ๊ฐ€๊ฒฉ ๋Œ์–ด์˜ฌ๋ฆฌ๋Š” ๋กœ์ง ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค(feat. ์„ธ๋ ฅ์€ ์ž๊ธฐ๋ˆ ๋งŽ์ด ์•ˆ์จ์š”) – ์—… ๋น„ํŠธ ๋ด‡ ์ฃผ์ œ์— ๋Œ€ํ•œ ์„ธ๋ถ€์ •๋ณด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”

[ PLUTUS ์ปค๋ฎค๋‹ˆํ‹ฐ ] ์นด์นด์˜คํ†ก(์ฐธ์—ฌ์ฝ”๋“œ 5888)
https://open.kakao.com/o/gTFfdMbb
๋ธŒ๋ฆฌํ•‘ ์ฑ„๋„
https://t.me/PLUTUSBRF
์˜คํ”ˆ์ฑ„ํŒ…
https://t.me/PLUTUSINVESTMENT
โ–  SnapEX ๋ ˆํผ๋Ÿด ๊ฐ€์ž… ์‹œ ์ˆ˜์ˆ˜๋ฃŒ ํ˜œํƒ \u0026 ๋ฌด๋ฃŒ ๋งˆ์ง„์ „๋žต ์ œ๊ณต
http://bit.ly/ZERO_SERVICE
[ ํ›„์› ]์‹ ํ•œ 110-491-600666 ์ด๊ตฐํ–‰(์ธ๋ฒ ์ŠคํŠธํฌ๋ฆฝํ† )
BTC : 3NXRj2QJTfg2hQ4tJXag5oxiXabsGkcdGc
ETH : 0xbdc97d2e2bf6f3bd1f5d70e2985096e4ab08c9ca
โ– ํŒ€์ œ๋กœ ํ”„๋ผ์ด๋น—ํšŒ์› ๊ฐ€์ž…: https://forms.gle/Xxp7BqMvUQgmQG1F8
โ–  ํฌ๋งค ์‹œ์ž‘ํ•˜๊ธฐ: https://t.me/PlutusCryptoManagerbot

[ ๋ฌธ์˜์‚ฌํ•ญ ] ํ…”๋ ˆ๊ทธ๋žจ: https://t.me/dlrnsgod
์นด์นด์˜คํ†ก: http://pf.kakao.com/_zxaxisT
(Hp. 010-9152-6951)
—————————————-
#๊ฐ€์ƒํ™”ํ #๋น„ํŠธ์ฝ”์ธ #์•ŒํŠธ์ฝ”์ธ #๋ฆฌํ”Œ #ํ”Œ๋ฃจํ† ์Šค

์—… ๋น„ํŠธ ๋ด‡ ์ฃผ์ œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์—…๋น„ํŠธ ์ฒด๊ฒฐ๊ฐ•๋„, ๋ด‡๊ฐ์ง€ ์„ธ๋ ฅ ํฌ์ฐฉ ์‚ฌ์ดํŠธ- ๊ณ ์ž‰์—…

์—…๋น„ํŠธ ๋ด‡๊ฐ์ง€. ์ฝ”์ธ, ์ฒดํฌ์ˆ˜(0~500)ย …

+ ์—ฌ๊ธฐ์— ๋” ๋ณด๊ธฐ

Source: goingup.kr

Date Published: 12/13/2021

View: 8858

์—…๋น„ํŠธ ์ž๋™๋งค๋งค ๋ด‡ ๋ฉ”๋‰ด์–ผ – ์ฝ”์ธ๋ด‡24

์—…๋น„ํŠธ ๋‹จํƒ€, ๋น—์ธ ์‹œ๊ทธ๋„, ๋น„ํŠธ์ฝ”์ธ ๋ด‡, ์—…๋น„ํŠธ ์ž๋™๋งค๋งค ๋ด‡ ๋“ฑ ์ œ๊ณต.

+ ์—ฌ๊ธฐ์— ํ‘œ์‹œ

Source: coinbot24.com

Date Published: 8/7/2021

View: 9877

์—…๋น„ํŠธ(Upbit) ๋ด‡ ๊ฑฐ๋ž˜ ์˜์‹ฌ ๋ชจ๋‹ˆํ„ฐ๋ง – miningcalc.kr

๋ด‡ ์ž‘๋™ ์˜์‹ฌ ๊ธฐ์ค€์€ ์ตœ๊ทผ 1๋ถ„ ๊ฑฐ๋ž˜ ์ค‘ 1๋งŒ์› ์ดํ•˜ ๊ฑฐ๋ž˜ ๋น„์ค‘์ด 50% ์ด์ƒ์ธ ๊ฒฝ์šฐ ์ž…๋‹ˆ๋‹ค. ์—…๋น„ํŠธ ์‹ค์‹œ๊ฐ„ ๊ธ‰๋“ฑ ์ข…๋ชฉ ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋น„์Šค๋ฅผ ์˜คํ”ˆํ•˜์˜€์Šต๋‹ˆ๋‹ค.

+ ๋” ์ฝ๊ธฐ

Source: miningcalc.kr

Date Published: 7/24/2021

View: 861

์—…๋น„ํŠธ ์ž๋™๋งค๋งค ๋ด‡ ์ˆ˜์ต ์ธ์ฆ (10์ผ ์•ˆ๋˜์„œ 130๋งŒ์›!)

์—…๋น„ํŠธ ๋ฒ ์ŠคํŠธ ๋ด‡์˜ ํ˜„์žฌ ์ˆ˜์ต ์ƒํƒœ์ž…๋‹ˆ๋‹ค! โ€‹. ์›๊ธˆ์€ 1,200๋งŒ์› ์ž…๋‹ˆ๋‹ค.

+ ๋” ์ฝ๊ธฐ

Source: blog.naver.com

Date Published: 4/21/2021

View: 7827

์—…๋น„ํŠธ ๋ด‡๋Œ๋ฆฌ๋Š”๊ฑฐ ํ˜ธ๊ฐ€์ฐฝ๋งŒ ๋ช‡๋ฒˆ ๋ด๋„ ๋ˆˆ์น˜์ฑ„์•ผ์ œ – ์ฝ”์ธํŒ

์‹ค์ œ ๊ฐœ๋ฏธ๋“ค์ด ์‚ฌ๊ณ ์‹ถ์–ด์„œ ๋งค์ˆ˜๋ฒฝ ์ €๋ฆฌ ๋ฐ•๊ฒ ๋ˆ„? ๋งค์ˆ˜๋ฒฝ ๋Œ€๋น„ ๋งค๋„๋ฒฝ ์–‡์•„๋ณด์ด๋ฉด ์–ผ๋ฅธ ๊ธ์œผ๋ ค๊ณ  ํ•˜๊ฒ ์ œ 143์› ๋งค๋„๋ฒฝ ๋‹ค ๋น ์ง€๋ ค๊ณ  ํ•˜๋‹ˆ๊นŒ ๊ณ ์ •์ ์œผ๋กœ ๊ฑฐ๋ž˜๋˜๋Š” ๋ด‡์ˆ˜๋Ÿ‰ย …

+ ์—ฌ๊ธฐ์— ๋ณด๊ธฐ

Source: coinpan.com

Date Published: 11/23/2021

View: 7577

ํ•˜๋ฝ์žฅ์—๋„ ์ˆ˜์ต๋‚˜๋Š” ‘๋น„ํŠธ์ฝ”์ธ ์ž๋™๋งค๋งค ๋ด‡’ ๋งŒ๋“ค๊ธฐ … – ํด๋ž˜์Šค101

!(feat.์—…๋น„ํŠธ ํ˜„๋ฌผโ€ข๋ฐ”์ด๋‚ธ์Šค ์„ ๋ฌผ) | ๊ฒŒ์ž„๋งŒ๋“œ๋Š”์•„๋น  (๊ฒŒ๋งŒ์•„)ย …

+ ์—ฌ๊ธฐ์— ์ž์„ธํžˆ ๋ณด๊ธฐ

Source: class101.net

Date Published: 4/6/2021

View: 6211

์•”ํ˜ธํ™”ํ ํŠธ๋ ˆ์ด๋”ฉ ๋ด‡์„ ๋งŒ๋“ค์—ˆ๋‹ค (feat. ์—…๋น„ํŠธ) – ์ •์ƒ์šฐ

๋ด‡ ๊ฐ™์€ ๊ฒฝ์šฐ ์ฃผ์‹ ํŠธ๋ ˆ์ด๋”ฉ์€ ๋ด‡์€ ์•„๋‹ˆ๊ณ , ์•”ํ˜ธํ™”ํ ๊ฑฐ๋ž˜์†Œ ์ค‘ ํ•˜๋‚˜์ธ ์—…๋น„ํŠธ์— ์•”ํ˜ธํ™”ํ๋ฅผ ์ฃผ๋ฌธํ•˜๊ณ , ์กฐ๊ฑด์— ๋งž๋Š” ์ฝ”์ธ์„ ๊ฐ์ง€, ์ดํ›„ ๊ฐ์ง€๋œ ๋งˆ์ผ“ย …

+ ๋” ์ฝ๊ธฐ

Source: pronist.dev

Date Published: 12/20/2021

View: 5360

์ฃผ์ œ์™€ ๊ด€๋ จ๋œ ์ด๋ฏธ์ง€ ์—… ๋น„ํŠธ ๋ด‡

์ฃผ์ œ์™€ ๊ด€๋ จ๋œ ๋” ๋งŽ์€ ์‚ฌ์ง„์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค ๐Ÿšจ(ํŽŒํ•‘์žฅ๋‹จํƒ€๋น„๋ฒ•)์ด๊ฑฐ ๋น„๋ฐ€์ธ๋ฐ์šฅ.. ๊ฑฐ๋ž˜์†Œ ๋ด‡์ด ๊ฐ€๊ฒฉ ๋Œ์–ด์˜ฌ๋ฆฌ๋Š” ๋กœ์ง ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค(feat. ์„ธ๋ ฅ์€ ์ž๊ธฐ๋ˆ ๋งŽ์ด ์•ˆ์จ์š”). ๋Œ“๊ธ€์—์„œ ๋” ๋งŽ์€ ๊ด€๋ จ ์ด๋ฏธ์ง€๋ฅผ ๋ณด๊ฑฐ๋‚˜ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋” ๋งŽ์€ ๊ด€๋ จ ๊ธฐ์‚ฌ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿšจ(ํŽŒํ•‘์žฅ๋‹จํƒ€๋น„๋ฒ•)์ด๊ฑฐ ๋น„๋ฐ€์ธ๋ฐ์šฅ.. ๊ฑฐ๋ž˜์†Œ ๋ด‡์ด ๊ฐ€๊ฒฉ ๋Œ์–ด์˜ฌ๋ฆฌ๋Š” ๋กœ์ง ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค(feat. ์„ธ๋ ฅ์€ ์ž๊ธฐ๋ˆ ๋งŽ์ด ์•ˆ์จ์š”)
๐Ÿšจ(ํŽŒํ•‘์žฅ๋‹จํƒ€๋น„๋ฒ•)์ด๊ฑฐ ๋น„๋ฐ€์ธ๋ฐ์šฅ.. ๊ฑฐ๋ž˜์†Œ ๋ด‡์ด ๊ฐ€๊ฒฉ ๋Œ์–ด์˜ฌ๋ฆฌ๋Š” ๋กœ์ง ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค(feat. ์„ธ๋ ฅ์€ ์ž๊ธฐ๋ˆ ๋งŽ์ด ์•ˆ์จ์š”)

์ฃผ์ œ์— ๋Œ€ํ•œ ๊ธฐ์‚ฌ ํ‰๊ฐ€ ์—… ๋น„ํŠธ ๋ด‡

  • Author: ํฌ๋ฆฝํ† ๋ฉ”ํƒ€ [crypto meta]
  • Views: ์กฐํšŒ์ˆ˜ 30,134ํšŒ
  • Likes: ์ข‹์•„์š” 294๊ฐœ
  • Date Published: 2020. 2. 13.
  • Video Url link: https://www.youtube.com/watch?v=AJJcF1EpTwg

์—…๋น„ํŠธ ์ž๋™๋งค๋งค ๋ด‡ ๋ฉ”๋‰ด์–ผ

์ž๋™๋งค๋งค ๋ด‡ ์†Œ๊ฐœ

1. ๊ฐ„๋‹จ ์„ค๋ช… API KEY(์‚ฌ์šฉ์ž ์—…๋น„ํŠธ ๊ณ„์ •์— ๋งค๋งค ์ฃผ๋ฌธ์„ ๋„ฃ์„์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” KEY)๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฝ”์ธ๋ด‡24 ์„œ๋ฒ„์—์„œ ๋ด‡์ด ์‚ฌ์šฉ์ž์˜ ์—…๋น„ํŠธ ๊ณ„์ •์œผ๋กœ ์ž๋™์œผ๋กœ ๋งค๋งค๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๋Š” ์ฝ”์ธ๋ด‡24์— ์ž๋ณธ๊ธˆ์„ ๋งก๊ธธ ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ, ์‚ฌ์šฉ์ž ๋ณธ์ธ ๊ณ„์ • ๋‚ด์— ์›ํ™”๋ฅผ ๋ณด์œ ํ•˜๊ณ  ๊ณ„์‹œ๋ฉด ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š” ์›ํ™”๋กœ ์ž๋™๋งค๋งค๊ฐ€ ์ด๋ฃจ์–ด์ง€๋ฉฐ, ์—…๋น„ํŠธ ๋‚ด์—์„œ๋„ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์—…๋น„ํŠธ ๋‚ด์— ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š” ์›ํ™”๊ฐ€ ๋ถ€์กฑํ•˜๊ฑฐ๋‚˜, ๋ด‡์ด ๋งค์ˆ˜ํ•˜์˜€๋˜ ์ฝ”์ธ์˜ ์ˆ˜๋Ÿ‰์ด ๋ถ€์กฑํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ ๋˜๋Š” ํฌ์ธํŠธ๊ฐ€ ๋ถ€์กฑํ•  ๊ฒฝ์šฐ, ๋ด‡์€ ์ •์ง€๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹ค์‹œ ON์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ์‹œ๋ฉด ์ž‘๋™ ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ด‡์ด ๋งค์ˆ˜ํ•œ ์ˆ˜๋Ÿ‰์— ๋Œ€ํ•ด์„œ๋งŒ ๊ด€์—ฌ๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์‚ฌ์šฉ์ž๋Š” ๋ด‡๊ณผ ์ˆ˜๋™๋งค๋งค๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํฌ์ธํŠธ๋Š” ์ฝ”์ธ๋ด‡24์˜ ์ž๋™๋งค๋งค ๋ด‡์„ ์‚ฌ์šฉํ•˜๋Š” ์ˆ˜์ˆ˜๋ฃŒ๋กœ ์ด์šฉ์ด ๋ฉ๋‹ˆ๋‹ค.

๋ด‡์€ ๊ธฐ๋ณธ์ ์œผ๋กœ 3๊ฐœ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋ด‡์€ ๋ฌด๊ธฐํ•œ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ข…๋ชฉ ๋ณ€๊ฒฝ์€ ๋ด‡์„ ์‚ญ์ œํ•œ ํ›„ ์žฌ์ƒ์„ฑํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. API KEY(์‚ฌ์šฉ์ž ์—…๋น„ํŠธ ๊ณ„์ •์— ๋งค๋งค ์ฃผ๋ฌธ์„ ๋„ฃ์„์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” KEY)๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฝ”์ธ๋ด‡24 ์„œ๋ฒ„์—์„œ ๋ด‡์ด ์‚ฌ์šฉ์ž์˜ ์—…๋น„ํŠธ ๊ณ„์ •์œผ๋กœ ์ž๋™์œผ๋กœ ๋งค๋งค๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.์‚ฌ์šฉ์ž๋Š” ์ฝ”์ธ๋ด‡24์— ์ž๋ณธ๊ธˆ์„ ๋งก๊ธธ ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ, ์‚ฌ์šฉ์ž ๋ณธ์ธ ๊ณ„์ • ๋‚ด์— ์›ํ™”๋ฅผ ๋ณด์œ ํ•˜๊ณ  ๊ณ„์‹œ๋ฉด ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š” ์›ํ™”๋กœ ์ž๋™๋งค๋งค๊ฐ€ ์ด๋ฃจ์–ด์ง€๋ฉฐ, ์—…๋น„ํŠธ ๋‚ด์—์„œ๋„ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.์—…๋น„ํŠธ ๋‚ด์— ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š” ์›ํ™”๊ฐ€ ๋ถ€์กฑํ•˜๊ฑฐ๋‚˜, ๋ด‡์ด ๋งค์ˆ˜ํ•˜์˜€๋˜ ์ฝ”์ธ์˜ ์ˆ˜๋Ÿ‰์ด ๋ถ€์กฑํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ ๋˜๋Š” ํฌ์ธํŠธ๊ฐ€ ๋ถ€์กฑํ•  ๊ฒฝ์šฐ, ๋ด‡์€ ์ •์ง€๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹ค์‹œ ON์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ์‹œ๋ฉด ์ž‘๋™ ๋ฉ๋‹ˆ๋‹ค.๋˜ํ•œ ๋ด‡์ด ๋งค์ˆ˜ํ•œ ์ˆ˜๋Ÿ‰์— ๋Œ€ํ•ด์„œ๋งŒ ๊ด€์—ฌ๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์‚ฌ์šฉ์ž๋Š” ๋ด‡๊ณผ ์ˆ˜๋™๋งค๋งค๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.ํฌ์ธํŠธ๋Š” ์ฝ”์ธ๋ด‡24์˜ ์ž๋™๋งค๋งค ๋ด‡์„ ์‚ฌ์šฉํ•˜๋Š” ์ˆ˜์ˆ˜๋ฃŒ๋กœ ์ด์šฉ์ด ๋ฉ๋‹ˆ๋‹ค.๋ด‡์€ ๊ธฐ๋ณธ์ ์œผ๋กœ 3๊ฐœ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋ด‡์€ ๋ฌด๊ธฐํ•œ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ข…๋ชฉ ๋ณ€๊ฒฝ์€ ๋ด‡์„ ์‚ญ์ œํ•œ ํ›„ ์žฌ์ƒ์„ฑํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

2. ํŠน์ง• ๊ฐ€์žฅ ํฐ ํŠน์ง•์œผ๋กœ ๋ณด์กฐ์ง€ํ‘œ๋ฅผ ์•Œ๊ณ  ์žˆ์ง€ ์•Š์•„๋„ ๋ˆ„๊ตฌ๋‚˜ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ํšŒ์›๊ฐ€์ž… ์ ˆ์ฐจ ์—†์ด ์นด์นด์˜คํ†ก ๊ณ„์ •์„ ์ด์šฉํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์ปดํ“จํ„ฐ์— ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์šด๋กœ๋“œ&์„ค์น˜ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ž๋™๋งค๋งค ๋ด‡์€ ์„œ๋ฒ„์—์„œ 24์‹œ๊ฐ„ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— PC์˜ ON/OFF ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ์›น์‚ฌ์ดํŠธ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

๋ด‡์€ ์˜๊ตฌ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ด‡ 1๊ฐœ๋‹น 1์ข…๋ชฉ(์˜ˆ: ETH)๋ฅผ ์ง€์ •ํ•˜์—ฌ ์šด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ด‡์ด ์ž๋™์œผ๋กœ ๋งค์ˆ˜ํ•œ ์ˆ˜๋Ÿ‰์— ๋Œ€ํ•ด์„œ๋งŒ ๋งค๋„๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์‚ฌ์šฉ์ž๊ฐ€ ์—…๋น„ํŠธ์—์„œ ์ถ”๊ฐ€์ ์œผ๋กœ ์ˆ˜๋™์œผ๋กœ ๋งค๋งค๋ฅผ ํ•จ๊ป˜ ํ•ด๋„ ๋ด‡์ด ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์— ์ง€์žฅ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ํฐ ํŠน์ง•์œผ๋กœ ๋ณด์กฐ์ง€ํ‘œ๋ฅผ ์•Œ๊ณ  ์žˆ์ง€ ์•Š์•„๋„ ๋ˆ„๊ตฌ๋‚˜ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ํšŒ์›๊ฐ€์ž… ์ ˆ์ฐจ ์—†์ด ์นด์นด์˜คํ†ก ๊ณ„์ •์„ ์ด์šฉํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์ปดํ“จํ„ฐ์— ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์šด๋กœ๋“œ&์„ค์น˜ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.์ž๋™๋งค๋งค ๋ด‡์€ ์„œ๋ฒ„์—์„œ 24์‹œ๊ฐ„ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— PC์˜ ON/OFF ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ์›น์‚ฌ์ดํŠธ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค๋ด‡์€ ์˜๊ตฌ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ด‡ 1๊ฐœ๋‹น 1์ข…๋ชฉ(์˜ˆ: ETH)๋ฅผ ์ง€์ •ํ•˜์—ฌ ์šด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๋˜ํ•œ ๋ด‡์ด ์ž๋™์œผ๋กœ ๋งค์ˆ˜ํ•œ ์ˆ˜๋Ÿ‰์— ๋Œ€ํ•ด์„œ๋งŒ ๋งค๋„๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์‚ฌ์šฉ์ž๊ฐ€ ์—…๋น„ํŠธ์—์„œ ์ถ”๊ฐ€์ ์œผ๋กœ ์ˆ˜๋™์œผ๋กœ ๋งค๋งค๋ฅผ ํ•จ๊ป˜ ํ•ด๋„ ๋ด‡์ด ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์— ์ง€์žฅ์ด ์—†์Šต๋‹ˆ๋‹ค.

3. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”์ธ๋ด‡24(https://coinbot24.com)๋Š” 2์›” 25์ผ๋ถ€ํ„ฐ ์„œ๋น„์Šคํ•ด์˜จ

‘์—…๋น„ํŠธ ๋‹จํƒ€ ์‹œ๊ทธ๋„’์„ ์„œ๋น„์Šคํ•˜๋ฉด์„œ ๋”์šฑ ๋งŽ์€ ๊ฒฝํ—˜์„ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ๋ณด์กฐ์ง€ํ‘œ๋Š” ๋Œ€๋ถ€๋ถ„ ํ›„ํ–‰์„ฑ์ด ๊ฐ•ํ•˜์—ฌ ์ƒ์Šน ์ดํ›„ ๋งค์ˆ˜ํ•  ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค

์ฝ”์ธ๋ด‡24๋งŒ์˜ ์ž์ฒด ๊ฐœ๋ฐœ๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ•˜๋ฝ ํ›„ ์ƒ์Šน ์˜ˆ์ƒ ์ง€์  ๋˜๋Š” ์ƒ์Šน ์ดˆ๊ธฐ ์ง€์ ์— ๋งค์ˆ˜๋ฅผ ํ•˜์—ฌ,

์ƒ์Šนํ•œ ๋’ค ๋งค๋„๋ฅผ ํ•˜์—ฌ ์ˆ˜์ต์„ ์–ป๋Š” ๋ฐฉ์‹์„ ์ทจํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ฒซ ๋งค์ˆ˜ ์ดํ›„ ์˜ˆ์ƒ๊ณผ๋Š” ๋ฐ˜๋Œ€๋˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ํ˜๋Ÿฌ๊ฐ€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ๋งค์ˆ˜ ๊ธฐ๋Šฅ์ด ํ•จ๊ป˜ ์ œ๊ณต๋˜๋ฉฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋กœ์จ ๋ณด๋‹ค ๋†’์€ ์Šน๋ฅ ์„ ์œ ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค

๋ด‡ ๊ฐœ๋ณ„๋กœ ์„ค์ •์„ ๋‹ค๋ฅด๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฉ”๋‰ด์˜ ๊ฐ€์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ด‡๋งˆ๋‹ค ๊ฐœ๋ณ„๋กœ ์‹œ์žฅ์„ ๋ถ„์„ํ•˜์—ฌ ๋งค๋งค๊ฐ€ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ๋งค๋งค ๋ฐฉ์‹์€ ์‹œ์žฅ๊ฐ€์ด๋ฉฐ,

์ž๋ณธ๊ธˆ์ด ํด์ˆ˜๋ก ๊ฑฐ๋ž˜๋Ÿ‰์ด ๋งŽ์€ ์ฝ”์ธ์„ ์„ ํƒํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์Šฌ๋ฆฌํ”ผ์ง€๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”์ธ๋ด‡24(https://coinbot24.com)๋Š” 2์›” 25์ผ๋ถ€ํ„ฐ ์„œ๋น„์Šคํ•ด์˜จ’์—…๋น„ํŠธ ๋‹จํƒ€ ์‹œ๊ทธ๋„’์„ ์„œ๋น„์Šคํ•˜๋ฉด์„œ ๋”์šฑ ๋งŽ์€ ๊ฒฝํ—˜์„ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.์ผ๋ฐ˜์ ์ธ ๋ณด์กฐ์ง€ํ‘œ๋Š” ๋Œ€๋ถ€๋ถ„ ํ›„ํ–‰์„ฑ์ด ๊ฐ•ํ•˜์—ฌ ์ƒ์Šน ์ดํ›„ ๋งค์ˆ˜ํ•  ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค์ฝ”์ธ๋ด‡24๋งŒ์˜ ์ž์ฒด ๊ฐœ๋ฐœ๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ•˜๋ฝ ํ›„ ์ƒ์Šน ์˜ˆ์ƒ ์ง€์  ๋˜๋Š” ์ƒ์Šน ์ดˆ๊ธฐ ์ง€์ ์— ๋งค์ˆ˜๋ฅผ ํ•˜์—ฌ,์ƒ์Šนํ•œ ๋’ค ๋งค๋„๋ฅผ ํ•˜์—ฌ ์ˆ˜์ต์„ ์–ป๋Š” ๋ฐฉ์‹์„ ์ทจํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.๋˜ํ•œ ์ฒซ ๋งค์ˆ˜ ์ดํ›„ ์˜ˆ์ƒ๊ณผ๋Š” ๋ฐ˜๋Œ€๋˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ํ˜๋Ÿฌ๊ฐ€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ๋งค์ˆ˜ ๊ธฐ๋Šฅ์ด ํ•จ๊ป˜ ์ œ๊ณต๋˜๋ฉฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ด๋กœ์จ ๋ณด๋‹ค ๋†’์€ ์Šน๋ฅ ์„ ์œ ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค๋ด‡ ๊ฐœ๋ณ„๋กœ ์„ค์ •์„ ๋‹ค๋ฅด๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฉ”๋‰ด์˜ ๊ฐ€์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๋ด‡๋งˆ๋‹ค ๊ฐœ๋ณ„๋กœ ์‹œ์žฅ์„ ๋ถ„์„ํ•˜์—ฌ ๋งค๋งค๊ฐ€ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ๋งค๋งค ๋ฐฉ์‹์€ ์‹œ์žฅ๊ฐ€์ด๋ฉฐ,์ž๋ณธ๊ธˆ์ด ํด์ˆ˜๋ก ๊ฑฐ๋ž˜๋Ÿ‰์ด ๋งŽ์€ ์ฝ”์ธ์„ ์„ ํƒํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์Šฌ๋ฆฌํ”ผ์ง€๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฑ„๊ตด ์ฑ„์‚ฐ์„ฑ ๋ฐ ์ˆ˜์ต๋ฅ  ๊ณ„์‚ฐ๊ธฐ ๋งˆ์ด๋‹ํ’€ํ—ˆ๋ธŒ ์ด๋”๋งˆ์ธ ๋‚˜๋…ธํ’€ ์กฐํšŒ

๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ ๊ฐ€์ƒํ™”ํ ๋ชฉ๋ก์—์„œ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•˜๊ณ  ์‹ถ์€ ์ฝ”์ธ์„ ํด๋ฆญํ•˜๋ฉด ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋‹ˆํ„ฐ๋ง์„ ํ•ด์ œํ•˜๊ณ  ์‹ถ์œผ๋ฉด ๋ด‡ ์ž‘๋™ ์˜์‹ฌ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€์ƒํ™”ํ์—์„œ ์ฝ”์ธํ‹€ ํด๋ฆญํ•˜๋ฉด ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค.

์ตœ๋Œ€ 30๊ฐœ ์ดํ•˜๋กœ ์„ค์ •ํ•˜์„ธ์š”~

๋ด‡ ์ž‘๋™ ์˜์‹ฌ ๊ธฐ์ค€์€ ์ตœ๊ทผ 1๋ถ„ ๊ฑฐ๋ž˜ ์ค‘ 1๋งŒ์› ์ดํ•˜ ๊ฑฐ๋ž˜ ๋น„์ค‘์ด 50% ์ด์ƒ์ธ ๊ฒฝ์šฐ ์ž…๋‹ˆ๋‹ค.

์•”ํ˜ธํ™”ํ ํŠธ๋ ˆ์ด๋”ฉ ๋ด‡์„ ๋งŒ๋“ค์—ˆ๋‹ค (feat. ์—…๋น„ํŠธ)

์•”ํ˜ธํ™”ํ ํŠธ๋ ˆ์ด๋”ฉ ๋ด‡

์ตœ๊ทผ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์ด ํ•œ ๋™์•ˆ ๋œธํ–ˆ๋˜ ์ด์œ ๋Š”, ์–ด๋Š ๋‚  ํŠธ๋ ˆ์ด๋”ฉ ๋ด‡ ์„ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ์š•๊ตฌ๊ฐ€ ์ƒ๊ฒจ์„œ ์—ฌ๊ธฐ์— ์ง€์†์ ์œผ๋กœ ํž˜์„ ์“ฐ๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ ํ•œ ๋ฒˆ์ฏค์€ ๋งŒ๋“ค์–ด๋ณธ๋‹ค๋Š” ์ด๊ฒƒ์„, ์•„์ง ๋‚˜๋Š” ๋งŒ๋“ค์–ด๋ณธ ์ ์ด ์—†์œผ๋‹ˆ ๊ดœ์ฐฎ์€ ๊ธฐํšŒ๋ผ ์—ฌ๊ฒจ ํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ์„ค๊ณ„๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ์ˆ˜์ •ํ•˜๋‹ค๊ฐ€ ์ด์ œ์„œ์•ผ ์–ด๋Š์ •๋„ ์™„์„ฑ๋„๋ฅผ ๋ณด์ด๊ณ  ์žˆ์–ด ๋ธ”๋กœ๊ทธ์— ์ ๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ฐธ๊ณ ๋กœ ๊ฐœ๋ฐœ ์–ธ์–ด๋Š” ํŒŒ์ด์ฌ์ด ์•„๋‹Œ Go ๋‹ค. ๊ทธ ์ด์œ ๋Š” ์•„๋ž˜์—์„œํ•˜์ž.

ํŠธ๋ ˆ์ด๋”ฉ ๋ด‡์„ ๊ตฌ๋™ํ•œ๋‹ค. CLI ๊ธฐ๋ฐ˜์ด๊ธฐ ๋•Œ๋ฌธ์— GUI ๊ฐ™์€๊ฑด ์—†๋‹ค.

๋ด‡ ๊ฐ™์€ ๊ฒฝ์šฐ ์ฃผ์‹ ํŠธ๋ ˆ์ด๋”ฉ์€ ๋ด‡์€ ์•„๋‹ˆ๊ณ , ์•”ํ˜ธํ™”ํ ๊ฑฐ๋ž˜์†Œ ์ค‘ ํ•˜๋‚˜์ธ ์—…๋น„ํŠธ์— ์•”ํ˜ธํ™”ํ๋ฅผ ์ฃผ๋ฌธํ•˜๊ณ , ์กฐ๊ฑด์— ๋งž๋Š” ์ฝ”์ธ์„ ๊ฐ์ง€, ์ดํ›„ ๊ฐ์ง€๋œ ๋งˆ์ผ“์„ ๋Œ€์ƒ์œผ๋กœ ์ „๋žต์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ด‡์„ ๊ฐœ๋ฐœํ–ˆ๋‹ค. ์ด๋ฏธ ์„œ๋ฌธ๋งŒ์œผ๋กœ๋„ ๋ด‡์˜ ๊ตฌ์กฐ๊ฐ€ ์ด๋ฏธ ๋…ธ์ถœ๋˜์—ˆ์ง€๋งŒ, ์ด๋Š” ๊ทธ์ € ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งŒ๋“ค์–ด๋‚ธ ๊ฒƒ ๋ฟ์ด๋ฉฐ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ „๋žต์ธ๋ฐ, ์ด๋Š” ๊ธฐ์—… ๋น„๋ฐ€์ด๋ผ ๋น„๊ณต๊ฐœ๋‹ค. ์• ์ดˆ์— ์ˆ˜์ต์„ ์ œ๋Œ€๋กœ ๋‚ด๊ณ  ์žˆ์ง€๋„ ์•Š์ง€๋งŒ.

docs.upbit.com/docs

ํŒŒ์ด์ฌ์ด ์•„๋‹Œ Go ์–ธ์–ด๋กœ ๊ฐœ๋ฐœํ•œ ์ด์œ 

์ด ํ”„๋กœ์ ํŠธ๋Š” ๋‚ด๊ฐ€ Go ๋กœ ์ž‘์„ฑํ•œ ์ฒซ ๋ฒˆ์งธ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํŠธ๋ ˆ์ด๋”ฉ ๋ด‡์€ ํŒŒ์ด์ฌ์œผ๋กœ ๊ฐœ๋ฐœ๋œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ, ๋‚˜๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” Go ๋ฅผ ์„ ํƒํ–ˆ๋‹ค. Go ๋ฅผ ์‚ฌ์šฉํ•œ ์ด์œ ๋Š” ๋ฌผ๋ก  ํ˜„์žฌ ๋‚ด ์ฃผ๋ ฅ ์–ธ์–ด๊ฐ€ Go ์ธ ๊ฒƒ์ด ๊ฐ€์žฅ ํฐ ์ด์œ ์ด๊ธฐ๋„ ํ•˜์ง€๋งŒ, Go ๋ฅผ ๋ด‡ ๊ฐœ๋ฐœ์— ์‚ฌ์šฉํ–ˆ์„๋•Œ ๊ฐ€์ง€๋Š” ๊ฐ„ํŽธํ•˜๊ณ  ์ฑ„๋„์„ ํ†ตํ•œ ๋™์‹œ์„ฑ ์ œ์–ด ์—์„œ์˜ ์ด์ ์ด ํฌ๋‹ค๊ณ  ์—ฌ๊ฒผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํŠธ๋ ˆ์ด๋”ฉ ๋ด‡์—์„œ ์—ฌ๋Ÿฌ ๋งˆ์ผ“์˜ ๊ฐ์‹œ๋ฅผ ์œ„ํ•ด ๊ณ ๋ฃจํ‹ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋™์‹œ์„ฑ์„ ์‚ฌ์šฉํ•  ์ผ์€ ๋งŽ์€๋ฐ, ๊ทธ ์˜ˆ๋Š” ์„ค๊ณ„์—์„œ ์‚ดํŽด๋ณด๋„๋ก ํ•˜์ž.

๋‚ด๊ฐ€ ๊ฐœ๋ฐœํ•œ ํŠธ๋ ˆ์ด๋”ฉ ๋ด‡์€ ์˜คํ”ˆ์†Œ์Šค ๋‹ค. ๋”ฐ๋ผ์„œ ๋ด‡์˜ ์‚ฌ์šฉ๋ฒ•์ด๋‚˜ ์ฝ”์–ด ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ์•„๋ž˜์˜ ๊นƒํ—ˆ๋ธŒ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํ™•์ธํ•˜์ž. ์ด ํฌ์ŠคํŠธ์—์„œ๋Š” ๋ด‡์— ๋Œ€ํ•œ ์ „๋ฐ˜์ ์ธ ์„ค๊ณ„๋ฅผ ์‚ดํŽด๋ณธ๋‹ค.

https://github.com/pronist/PachinCo

ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์ด upbit-trading-bot ์—์„œ PachinCo ๋กœ ๋ฐ”๋€Œ์—ˆ๋‹ค! ์š”์ฆ˜ ์ž˜ ๋‚˜๊ฐ€๋Š” ํŒŒ์นœ์ฝ” ์ฝ”์ธ์„ ํƒ€๋ณด์ž. ์ฐธ๊ณ ๋กœ ํŒŒ์นœ์ฝ”์˜ ์ฒ ์ž๋Š” ๋ณธ๋ž˜ Pachin K o ์ธ๋ฐ, ์ฝ”์ธ(Coin, Crypto) ํŠธ๋ ˆ์ด๋”ฉ ๋ด‡์ด์–ด์„œ C ๋กœ ๋ฐ”๊พธ์—ˆ๋‹ค.

์„ค๊ณ„

๋ด‡์€ ๊ฐ€์žฅ ํฐ ๊ด€์ ์—์„œ ๋ณด์ž๋ฉด, ๋ด‡์€ ์—…๋น„ํŠธ ์„œ๋ฒ„์˜ ๊ด€์ ์—์„œ ํด๋ผ์ด์–ธํŠธ ๋ผ๋Š” ์ ์ด๋‹ค. ์–ด๋–ค ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ํด๋ผ์ด์–ธํŠธ๋ƒ ํ•˜๋ฉด ์—…๋น„ํŠธ API ์„œ๋ฒ„์— ๋ณด๋‚ด๋Š” ํด๋ผ์ด์–ธํŠธ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์–ด๋– ํ•œ ํ˜•ํƒœ๋กœ๋“  ํŠธ๋ ˆ์ด๋”ฉ ๋ด‡์€ ์—…๋น„ํŠธ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ฒŒ ๋œ๋‹ค. ๊ทธ๊ฒŒ ์กฐํšŒ๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ๊ณ  ์ฃผ๋ฌธ์„ ์š”์ฒญ์„ ํ•˜๋Š” ๊ฒƒ์ผ ์ˆ˜๋„ ์žˆ๋‹ค.

ํŠธ๋ ˆ์ด๋”ฉ ๋ด‡์€ ์—…๋น„ํŠธ Open API ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.

๋˜ํ•œ ์‹œ์„ธ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ฐ์‹œ ํ•˜์—ฌ ์กฐ๊ฑด์— ๋„๋‹ฌํ–ˆ๋Š”์ง€๋ฅผ ํŒ๋‹จํ•˜๋Š” Detector , ๊ฐ ๋งˆ์ผ“์„ ๋Œ€์ƒ์œผ๋กœ ๊ฐœ๋ณ„์ ์ธ ๋งค์ˆ˜/๋งค๋„ ์ „๋žต ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” Strategy ๊ฐ€ ๊ณ ๋ฃจํ‹ด์˜ ์ฃผ์š” ์‚ฌ์šฉ์ฒ˜๋‹ค. ์ด๋Š” ์„œ๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค. Strategy ์—์„œ๋Š” ์กฐ๊ฑด์— ๋„๋‹ฌํ•˜๋ฉด ์—…๋น„ํŠธ API ์„œ๋ฒ„์— ์ฃผ๋ฌธ์„ ๋ณด๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋ฌธ๋งฅ์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•ด๋„ ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ์ด ์—†๋‹ค. ๋ด‡์˜ ์ „๋ฐ˜์ ์ธ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Detector ์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ์ „๋žต์„ ์‹คํ–‰ํ•˜๋Š” ํŠธ๋ ˆ์ด๋”ฉ ๋ด‡์˜ ์ „๋ฐ˜์ ์ธ ๊ตฌ์กฐ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

๋‹ค์ด์–ด๊ทธ๋žจ์„ ๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ, ๋ด‡์€ ์ค‘๊ฐ„์—์„œ ์ค‘๊ฐœ์ธ์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋˜๋ฉฐ Detector ๊ฐ€ ํŠน์ • ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ์ข…๋ชฉ์„ ์ฐพ์•„์„œ ๋ด‡์—๊ฒŒ ๋ณด๊ณ ๋ฅผ ํ•˜๋ฉด, ๋ด‡์€ ์ฝ”์ธ์„ ์ถ”์ƒํ™”ํ•œ Coin ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋งค์ˆ˜/๋งค๋„๋ฅผ ์œ„ํ•œ Strategy ์— ์ƒ์„ฑํ•œ Coin ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ์‹คํ–‰ํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์„œ Detector ๋Š” ๋ณ„๊ฐœ์˜ ๊ณ ๋ฃจํ‹ด์—์„œ ๋™์ž‘, ๋ด‡์ด ์‹คํ–‰ํ•˜๋Š” ์ „๋žต๋“ค๋„ ๋ชจ๋‘ ๋ณ„๊ฐœ์˜ ๊ณ ๋ฃจํ‹ด์—์„œ ์‹คํ–‰๋˜๋ฉฐ ๋…๋ฆฝ์ ์œผ๋กœ ์กฐ๊ฑด์„ ๊ฒ€์ฆํ•˜์—ฌ ๋งค์ˆ˜/๋งค๋„๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค. ๊ฑฐ์˜ ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋งˆ์ผ“์— ๋Œ€ํ•ด ์ „๋žต์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Detector ๊ฐ€ ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•œ ์ข…๋ชฉ์ธ KRW-BTC ๋ฅผ ๋ฐœ๊ฒฌํ•˜์—ฌ ๋ด‡์— ๋ณด๊ณ ํ•˜๋ฉด, ๋ด‡์€ BTC ์ฝ”์ธ์— ํ•ด๋‹นํ•˜๋Š” Coin ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  KRW-BTC ๋งˆ์ผ“์ด Strategy ์— ๋”ฐ๋ผ ๋งค์ˆ˜/๋งค๋„ ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ฒŒํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์ฃผ๋ชฉํ•ด๋ณผ๋งŒํ•œ ๋ถ€๋ถ„์€ ๊ฒฐ๋ก ์ ์œผ๋กœ ํŠธ๋ ˆ์ด๋”ฉ ๋ด‡์ด๋ผ๋Š” ๊ฒƒ์ด ์˜๋„๋Œ€๋กœ ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ข…๋ชฉ ์„ ์ •(Detecting) ๊ณผ ๋งค์ˆ˜/๋งค๋„ ์ „๋žต(Strategy) ์ด๋ผ๋Š” ๋‘ ๊ฐ€์ง€์˜ ์ฃผ์š” ํ•ต์‹ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋ฉฐ ์ด์—๋”ฐ๋ผ ์ ์ ˆํ•œ ์ข…๋ชฉ์„ ์ •๊ณผ ์ „๋žต์— ๋”ฐ๋ผ ๋ด‡์˜ ์„ฑ๊ณผ๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์—…๋น„ํŠธ API ํด๋ผ์ด์–ธํŠธ

๋ด‡์€ ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ ์—…๋น„ํŠธ์˜ API ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ํด๋ผ์ด์–ธํŠธ๋‹ค. ๋”ฐ๋ผ์„œ ์—…๋น„ํŠธ API ์— ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ํด๋ผ์ด์–ธํŠธ ๋ž˜ํ•‘ ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•˜๊ฒŒ ๋œ๋‹ค. ๋ฌผ๋ก  ์ด ๋ถ€๋ถ„์€ ์—…๋น„ํŠธ API ๋ฌธ์„œ์— ๋”ฐ๋ผ ์ž‘์„ฑ๋œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡๊ฒŒ ์ค‘์š”ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ, ์‹ค์ œ๋กœ ์—…๋น„ํŠธ API ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ์—ญํ• ์„ ํ•˜๋ฏ€๋กœ ์งค๋ง‰ํ•˜๊ฒŒ๋‚˜๋งˆ ์ด์•ผ๊ธฐํ•ด๋ณธ๋‹ค.

์ž์‚ฐ ์กฐํšŒ๋‚˜ ์ฃผ๋ฌธ ์š”์ฒญ์˜ ๊ฒฝ์šฐ Jwt ๊ฐ€ ํ•„์š”ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์€ ์ผ๋ฐ˜์ ์ธ ์ •๋ณด๋Š” ๊ทธ๋ƒฅ ๋ณด๋‚ด๋„ ์ƒ๊ด€์—†๋‹ค.

์—…๋น„ํŠธ API ์„œ๋ฒ„๋Š” ๋‘ ์ข…๋ฅ˜๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š”๋ฐ, Jwt ๋ฅผ ํฌํ•จํ•˜์—ฌ ์š”์ฒญ์„ ๋ณด๋‚ด์•ผ ํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ Client ์™€ ๊ทธ์ € Get ์š”์ฒญ๋งŒ ๋ณด๋‚ด๋„ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” QuotationClient ๋กœ ๋ถ„๋ฆฌ๋œ๋‹ค.

type Client

์ž์‚ฐ, ์ฃผ๋ฌธ ์š”์ฒญ์„ ์—…๋น„ํŠธ ์„œ๋ฒ„์— ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๋‹ค. ๋‹น์—ฐํ•˜๊ฒ ์ง€๋งŒ ์—ฌ๊ธฐ์—๋Š” AccessKey, SecretKey ๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•œ๋‹ค.

type Client struct { *http.Client AccessKey string SecretKey string }

type QuotationClient

QuotationClient ๋Š” ๋‹จ์ˆœํ•œ Get ์š”์ฒญ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ข…๋ชฉ์— ๋Œ€ํ•œ Tick, Trades ๋ฅผ ์–ป์–ด์˜ค๋Š” ๋“ฑ ์ธ์ฆ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋‹จ์ˆœํ•œ ์ •๋ณด๋“ค์„ ์–ป์–ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ http.Client ๋งŒ์„ ๊ฐ€์ง„๋‹ค.

type QuotationClient struct { *http.Client }

์ด๋ ‡๊ฒŒ ์„ ์–ธ๋œ ๋‘ ๊ฐœ์˜ ํด๋ผ์ด์–ธํŠธ๋Š” Bot ์„ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์˜€๋‹ค. ๋”ฐ๋ผ์„œ Client, QuotationClient ๋ฅผ ํ†ตํ•ด ์—…๋น„ํŠธ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ๋œ๋‹ค.

ํŠธ๋ ˆ์ด๋”ฉ ๋ด‡

type Bot

Bot ์€ main ๊ณ ๋ฃจํ‹ด์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ Bot.Run() ์ด๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ main() ํ•จ์ˆ˜์—์„œ ํ˜ธ์ถœํ•  ๊ฒƒ์ด๋‹ค. ๋จผ์ € Bot ๊ตฌ์กฐ์ฒด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ๊ฒผ๋‹ค. ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ํด๋ผ์ด์–ธํŠธ์˜ ์—ญํ• ๋„ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์žŠ์–ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.

type Bot struct { *client.Client *client.QuotationClient Accounts Accounts Strategies []Strategy }

Accounts, Strategy ํƒ€์ž…์€ ๋ชจ๋‘ ์ธํ„ฐํŽ˜์ด์Šค๋‹ค. ํŠนํžˆ Accounts ์˜ ๊ฒฝ์šฐ, ์—…๋น„ํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ์˜ํˆฌ์ž๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ์•ˆ์ „ํ•˜๊ฒŒ ์ „๋žต์ด ๋™์ž‘ํ•˜๋Š”์ง€ ์‹คํ—˜์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋Š”๋ฐ, ๊ทธ๋Ÿด๋•Œ ํ•„์š”ํ•œ ๊ฒƒ์ด ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ž„์˜๋กœ ๋งŒ๋“  ํ…Œ์ŠคํŠธ์šฉ ๊ณ„์ •์ด๋‹ค. ์ด๋Š” ์‹ค์ œ ์—…๋น„ํŠธ ๊ณ„์ •์ด ์•„๋‹ˆ๋ฉฐ ๋น„์Šทํ•œ ๋™์ž‘์„ ํ•˜๋„๋ก ๊ตฌํ˜„์ด ๋œ ๊ฒƒ ๋ฟ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋ฏธ๋ฌ˜ํ•œ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

๋˜ํ•œ Bot ์—์„œ๋Š” ๋ฏธ๋ฆฌ ๋งˆ์ผ“์— ์‚ฌ์šฉํ•  ์ „๋žต์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. Detector ๊ฐ€ ์กฐ๊ฑด์— ๋„๋‹ฌํ•œ ๋งˆ์ผ“์„ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น ๋งˆ์ผ“์— Strategies ์— ์žˆ๋Š” ์ „๋žต๋“ค์„ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.

main()

Bot ์„ ํ˜ธ์ถœํ•˜๋Š” main() ํ•จ์ˆ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑ๋œ๋‹ค. ๊ณ„์ •์„ ์ž„์˜๋กœ ์ƒ์„ฑํ•˜์—ฌ ์ „๋žต์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋‹ค.

func main() { ///// ๋ด‡์— ์‚ฌ์šฉํ•  ์ „๋žต์„ ์„ค์ •ํ•œ๋‹ค. b := bot.New([]bot.Strategy{ // https://wikidocs.net/21888 &bot.PenetrationStrategy{}, }) ///// ///// ๋ด‡์— ์‚ฌ์šฉํ•  ๊ณ„์ •์„ ์„ค์ •ํ•œ๋‹ค. //acc, err := bot.NewUpbitAccounts(b) acc, err := bot.NewFakeAccounts(“accounts.db”, 55000.0) // ํ…Œ์ŠคํŠธ์šฉ ๊ณ„์ • if err != nil { logrus.Fatal(err) } b.SetAccounts(acc) ///// logrus.Panic(b.Run()) }

.Run()

.Run() ๋ฉ”์„œ๋“œ๋Š” main ๊ณ ๋ฃจํ‹ด์ด ์‹คํ–‰ํ•˜๋Š” ๋ฉ”์„œ๋“œ์ด๋ฉฐ, Detector ์˜ ๋ณด๊ณ ๋ฅผ ๋ฐ›๊ณ , ์ „๋žต์„ ์‹คํ–‰ํ•˜๋Š” ํ•ต์‹ฌ ๋ฉ”์„œ๋“œ๋‹ค. Detector ์—๊ฒŒ ๋ณด๊ณ ๋ฅผ ๋ฐ›์„ ๋•Œ๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ฑ„๋„์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ฐธ๊ณ ๋กœ ์•„๋ž˜์˜ ์ฝ”๋“œ๊ฐ€ ์‹ค์ œ ๋Œ์•„๊ฐ€๊ณ  ์žˆ๋Š” ๋ด‡์˜ ์ฝ”๋“œ๋ž‘ ๋™์ผํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ํ•ต์‹ฌ์ ์ธ ์ฝ”๋“œ๋งŒ์„ ๊ฐ€์ ธ์™€ ํฌ์ŠคํŠธํ•˜๊ธฐ ํŽธํ•˜๋„๋ก ์งœ์ง‘๊ธฐํ–ˆ๋‹ค.

// ์ถ”์ ํ•  ์ข…๋ชฉ์— ๋Œ€ํ•œ ์กฐ๊ฑด์ด๋‹ค. func Predicate(t map[string]interface{}) bool { return true } func (b *Bot) Run() error { // ์ „๋žต์˜ ์‚ฌ์ „ ์ค€๋น„๋ฅผ ํ•ด์•ผํ•œ๋‹ค. for _, strategy := range b.strategies { log.Logger <- log.Log{ Msg: "Register strategy...", Fields: logrus.Fields{"strategy": reflect.TypeOf(strategy).String()}, Level: logrus.DebugLevel, } if err := strategy.register(b); err != nil { return err } } ///// ๋””ํ…ํ„ฐ d := newDetector() go d.run(b, predicate) // ์ข…๋ชฉ ์ฐพ๊ธฐ ์‹œ์ž‘! ///// for tick := range d.d { // ๋””ํ…ํŒ…๋˜์–ด ๊ฐ€์ ธ์˜จ ์ฝ”์ธ์— ๋Œ€ํ•ด์„œ ์ „๋žต ์‹œ์ž‘ ... market := tick["code"].(string) // ์ฝ”์ธ ์ƒ์„ฑ coin, err := newCoin(b.Accounts, market[4:], static.Config.TradableBalanceRatio) if err != nil { return err } // ์ „๋žต์— ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ฐ€๊ฒฉ ์ •๋ณด๋ฅผ ๋ณด๋‚ธ๋‹ค. go b.tick(coin) for _, strategy := range b.Strategies { if err := strategy.boot(b, coin); err != nil { return err } go b.strategy(coin, strategy) } } } ์ถ”๊ฐ€์ ์œผ๋กœ Detector.run() ์˜ ํŒŒ๋ผ๋งคํ„ฐ์— predicate ๊ฐ€ ์‚ฌ์šฉ๋œ ๊ฒƒ์ด ์žˆ๋Š”๋ฐ, ์ €๊ฒƒ์€ ํ•จ์ˆ˜์ด๋ฉฐ ๋””ํ…ํ„ฐ๊ฐ€ ์ฐพ์„ ์ข…๋ชฉ์— ๋Œ€ํ•œ ์กฐ๊ฑด์„ ๋ช…์‹œํ•œ๋‹ค. ํ•ด๋‹น ํ•จ์ˆ˜๊ฐ€ true ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ์กฐ๊ฑด์— ๋งž๋Š” ์ข…๋ชฉ์œผ๋กœ ํŒ๋‹จํ•˜๋ฉฐ Detector.d ์ฑ„๋„์— ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ธ๋‹ค. Detector.run() ์—์„œ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์—…๋น„ํŠธ ์›น์†Œ์ผ“ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด ๊ฐ€๊ฒฉ์„ ์–ป์–ด์˜ค๊ณ  ์กฐ๊ฑด์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. Bot, Detector, Strategy ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ชจ์Šต์„ ๋ณด์—ฌ์ค€๋‹ค. Bot.tick() ๋ฉ”์„œ๋“œ๋Š” coin ๊ตฌ์กฐ์ฒด์— ์ •์˜๋˜์–ด ์žˆ๋Š” t ์ฑ„๋„์— ๊ฐ€๊ฒฉ ์ •๋ณด๋ฅผ ๋ณด๋‚ด๊ณ  ์ด๋ฅผ Strategy ์—์„œ ์†Œ๋ชจํ•œ๋‹ค. Strategy ์—์„œ ์ง์ ‘ ๊ฐ€๊ฒฉ์ •๋ณด๋ฅผ ์–ป์–ด์™€๋„ ๋˜์ง€๋งŒ, ์š”์ฒญ์˜ ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„์ง€๋ฉด ์—…๋น„ํŠธ ์„œ๋ฒ„์˜ ์ œ์•ฝ์— ๋”ฐ๋ผ ์š”์ฒญ์ด ๊ฑฐ์ ˆ๋œ๋‹ค. ์—…๋น„ํŠธ ์„œ๋ฒ„์˜ ์ œํ•œ์€ ์ดˆ๋‹น 10๋ฒˆ์˜ ์š”์ฒญ์œผ๋กœ ํŒŒ์•…๋˜์—ˆ๋‹ค. ์œ„์˜ ๋‹ค์ด์–ด๊ทธ๋žจ์€ Bot ์ด Detector.run() ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ํ•ด๋‹น ๋ฉ”์„œ๋“œ๊ฐ€ Detector.d ์ฑ„๋„๋กœ ํ‹ฑ์„ ๋ณด๋‚ด๊ณ  ๊ทธ๊ฒƒ์„ Bot ์ด ์†Œ๋น„ํ•˜๋Š” ๋ชจ์Šต์„ ๋ณด์ธ๋‹ค. ๋˜ํ•œ Bot.tick() ์ด ์‹คํ–‰๋˜๋ฉด Coin.t ์ฑ„๋„์— ํ‹ฑ์„ ๋ณด๋‚ด๊ณ  Strategy ๊ฐ€ ์ด๋ฅผ ์†Œ๋น„ํ•˜๊ฒŒ ๋œ๋‹ค. Strategy ๊ฐ€ ์†Œ๋น„๋ฅผ ํ•˜๋Š” ๋ชจ์Šต์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. .strategy(*coin, Strategy) func (b *Bot) strategy(coin *Coin, strategy Strategy) { for { // ์ด๋Ÿฌํ•œ tick ์ •๋ณด๊ฐ€ ์žˆ๋‹ค๋ฉด ํ˜„์žฌ ์‹œ์ ์˜ ์ „์ผ ๋Œ€๋น„ ๊ฐ€๊ฒฉ ๋ณ€ํ™”์œจ, ๋งˆ์ผ“์˜ ์ด๋ฆ„๊ณผ ๊ฐ™์€ ์ •๋ณด๋ฅผ ์–ป์–ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค. // https://docs.upbit.com/docs/upbit-quotation-websocket#%ED%98%84%EC%9E%AC%EA%B0%80ticker-%EC%9D%91%EB%8B%B5 t := <-coin.t // ์ „๋žต์„ ์‹คํ–‰ํ•œ๋‹ค. if _, err := strategy.run(b.Accounts, coin, t); err != nil { panic(err) } // ์ „๋žต์ด ๋„ˆ๋ฌด ์ž์ฃผ ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ํ•ด์•ผํ•œ๋‹ค. time.Sleep(time.Second * 1) } } type Accounts Accounts ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋‹ค. Accounts ๋Š” ์—…๋น„ํŠธ ๊ณ„์ •์„ ํฌํ•จํ•œ ํ…Œ์ŠคํŠธ์šฉ ๊ณ„์ •์ด ๊ตฌํ˜„ํ•ด์•ผ ํ•  ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง„๋‹ค. Accounts ๊ฐ€ ๊ฐ€์ ธ์•ผ ํ•˜๋Š” ๋ฉ”์„œ๋“œ ์ค‘ ์ค‘์š”ํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ .order() ๋‹ค. ์ฃผ๋ฌธ์€ ๋ด‡, ๋˜๋Š” ์‚ฌ๋žŒ์ด ํ•˜์ง€๋งŒ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ณ„์ •์„ ์‚ฌ๋žŒ, ๋˜๋Š” ๋ด‡๊ณผ ๋™์ผ์‹œํ•˜์—ฌ Accounts ๊ฐ€ ํŠน์ • ์ฝ”์ธ์— ๋Œ€ํ•ด ๋งค์ˆ˜/๋งค๋„ ์ฃผ๋ฌธ์„ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค. type Accounts interface { // order ๋ฉ”์„œ๋“œ๋Š” ์ฃผ๋ฌธ์„ ํ•˜๋˜ Config.Timeout ๋งŒํผ์ด ์ง€๋‚˜๊ฐ€๋ฉด ์ฃผ๋ฌธ์„ ์ž๋™์œผ๋กœ ์ทจ์†Œํ•œ๋‹ค. // ๋งค์ˆ˜/๋งค๋„์— ๋‘˜๋‹ค ์‚ฌ์šฉํ•œ๋‹ค. order(b *Bot, c *coin, side string, volume, price float64) (bool, error) // ๋‚ด๋ถ€์— ์žˆ๋Š” upbit.API ์—์„œ์˜ ์ ‘๊ทผ์„ ์œ„ํ•ด accounts ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค. accounts() ([]map[string]interface{}, error) } .order(*Bot, *Coin, string, float64, float64) (bool, error) ์˜ค๋”์—์„œ๋Š” ์‹ค์ œ๋กœ ์—…๋น„ํŠธ ๊ณ„์ •์—์„œ๋Š” ์ฃผ๋ฌธ์„ ์š”์ฒญํ•˜๊ณ , ํ…Œ์ŠคํŠธ ๊ณ„์ •์—์„œ๋Š” ๋‚ด๋ถ€์˜ ์ž์‚ฐ ํ˜„ํ™ฉ์„ ๊ฐฑ์‹ ํ•˜๊ฒŒ ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ ์‚ดํŽด๋ณผ ๊ฒƒ์€ ์‹ค์‚ฌ์šฉ ๊ณ„์ •์—์„œ ์ฃผ๋ฌธ์„ ๋„ฃ์—ˆ์œผ๋‚˜ ์ฒด๊ฒฐ๋˜์ง€ ์•Š๊ณ  ๊ณ„์† ๊ธฐ๋‹ค๋ฆฌ๊ธฐ๋งŒ ํ•˜๋ฉด ํŠธ๋ž˜ํ‚น ์ค‘์ธ ํ•ด๋‹น ๋งˆ์ผ“์˜ ์ „๋žต ๊ณ ๋ฃจํ‹ด์ด ๋ฝ์ด ๋˜์–ด๋ฒ„๋ฆด ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. ๋”ฐ๋ผ์„œ ํƒ€์ด๋จธ๋ฅผ ๋‘๊ณ  ์ฒด๊ฒฐ์„ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ์ฒด๊ฒฐ์ด ๋˜์ง€ ์•Š์œผ๋ฉด ์ฃผ๋ฌธ์„ ์บ”์Šฌํ•œ๋‹ค. func (acc *Accounts) order(b *Bot, coin *coin, side string, volume, price float64) (bool, error) { // ์ฃผ๋ฌธ... timer := time.NewTimer(time.Second * 30) go acc.wait(b, done, uuid) select { // ์ฃผ๋ฌธ์ด ์ฒด๊ฒฐ๋˜์ง€ ์•Š๊ณ  ๋ฌด๊ธฐํ•œ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํƒ€์ž„์•„์›ƒ์„ ์ง€์ •ํ•œ๋‹ค. case <-timer.C: // ์ฃผ๋ฌธ ์ทจ์†Œ _, err := b.Client.Call("DELETE", "/order", struct { Uuid string `url:"uuid"` }{uuid}) if err != nil { return false, err } // ... } // ๊ณ„์ • ๊ฐฑ์‹ ... } ์—ฌ๊ธฐ์„œ log.Logger ๋Š” ๋กœ๊ทธ๋ฅผ ๋ณด๋‚ด๊ธฐ ์œ„ํ•œ ์ฑ„๋„์ด๋‹ค. ์ด์ „์— ์ ์ง€๋Š” ์•Š์•˜์ง€๋งŒ, ๋กœ๊ทธ ์ฑ„๋„์€ ๋ด‡์„ ์‹คํ–‰ํ•˜๊ธฐ ์ด์ „์— ์ดˆ๊ธฐํ™”๋ฅผ ๋ณ„๋„๋กœ ์ง„ํ–‰ํ•œ๋‹ค. ๋ณ„๋„๋กœ ์•„๋ž˜์—์„œ ์–ธ๊ธ‰ํ•˜์ง€๋Š” ์•Š๊ฒ ์ง€๋งŒ ๋‚˜์˜จ๊น€์— ์ด์•ผ๊ธฐํ–ˆ๋‹ค. ๋˜ํ•œ static.Config ๊ฐ์ฒด๋Š” ๊ธ€๋กœ๋ฒŒ ๊ฐ์ฒด์ด๋ฉฐ config.yml ๋กœ ๋ถ€ํ„ฐ Timeout ์„ค์ •์„ ์–ป์–ด์™€์„œ ๋งคํ•‘ํ•œ๋‹ค. type Strategy Strategy ๋˜ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋‹ค. ํ•ด๋‹น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ์กฑํ•˜๋Š” ๋ชจ๋“  ์ „๋žต์€ ๋ด‡์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ๋˜์—ˆ๋‹ค. ์—ฌ๊ธฐ์„œ .register() ๋Š” ์ „๋žต์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์ค€๋น„ํ•ด์•ผ ํ•  ๊ฒƒ์„, .run() ๋ฉ”์„œ๋“œ๋Š” ์ „๋žต์„ ์ง„ํ–‰ํ•œ๋‹ค. type Strategy interface { register(bot *Bot) error // ๋ด‡์ด ์‹คํ–‰๋  ๋•Œ ์ „๋žต์ด ์ตœ์ดˆ๋กœ ๋“ฑ๋ก๋  ๋•Œ boot(bot *Bot, c *coin) error // ์ฝ”์ธ์„ ์ƒ์„ฑํ•˜๊ณ  ์ „๋žต์„ ์‹คํ–‰ํ•˜๊ธฐ ์ง์ „ run(bot *Bot, c *coin, t map[string]interface{}) (bool, error) // ์ „๋žต } ๋งˆ์น˜๋ฉฐ ํŠธ๋ ˆ์ด๋”ฉ ๋ด‡์„ ๋งŒ๋“œ๋Š” ๊ณผ์ •์€ ํฅ๋ฏธ๋กญ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ์— ํ•ด๋‹นํ•˜๋Š” ํ‹€์€ ์–ด๋Š์ •๋„ ๊ตฌ์„ฑ๋˜์—ˆ๊ธฐ์— ์ด์ œ ์ „๋žต์„ ์žฌ๋ฏธ๋‚˜๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ์ผ๋งŒ ๋‚จ์•˜๋‹ค. ๋ด‡์€ ์‚ฌ์‹ค ์ „๋žต์ด ์ œ์ผ ์ค‘์š”ํ•˜๋‹ค. ์ „๋žต์— ๋”ฐ๋ผ ์ˆ˜์ต์ด ๋‚  ์ˆ˜๋„ ์žˆ๊ณ  ์•ˆ ๋‚ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ์ด๋ ‡๊ฒŒ ๊นŒ์ง€ ๊ตฌ์กฐ์ ์œผ๋กœ ๋ด‡์„ ์ž‘์„ฑํ•œ ์ด์œ ๋Š” ์ด๊ฒƒ์„ ๋‹จ์ˆœ ๊ฒฝํ—˜๋งŒ์œผ๋กœ ๋๋‚ผ๊ฒŒ ์•„๋‹ˆ๋ผ ๋ฌด์–ธ๊ฐ€ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•ด๋ณผ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋˜ํ•œ ์ด ํ”„๋กœ์ ํŠธ๋Š” ๋‚˜์˜ ์ฒซ๋ฒˆ์งธ Go ์–ธ์–ด ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ ๋ผ๋Š” ์ ์—์„œ ์˜๋ฏธ๊ฐ€ ์žˆ์œผ๋ฉฐ ๋ถ€๊ฐ€์ ์ธ ์จ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์‚ฌ์šฉํ•ด๋ณผ ๊ธฐํšŒ๋˜ํ•œ ์žˆ์–ด์„œ ๋‚˜๋ฆ„ ๊ดœ์ฐฎ์€ ํ”„๋กœ์ ํŠธ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๋” ์ฝ์„๊ฑฐ๋ฆฌ Webpack 3 ์—์„œ Webpack 5 ์œผ๋กœ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด ํ•ด์•ผ ํ•  ์ผ๋“ค ๋‚ด๊ฐ€ ๊ฐœ๋ฐœํ•œ ํ‹ฐ์Šคํ† ๋ฆฌ ํ”„๋กœ์ ํŠธ ์ •๋ฆฌ! ๋‚˜๋งŒ ์•Œ๊ณ  ์žˆ๊ธฐ์—๋Š” ๋„ˆ๋ฌด ์•„๊น์ž–์•„? ๊ทธ๋ž˜์„œ ๊ฐ•์˜๋ฅผ ๋งŒ๋“ค์–ด๋ดค์–ด. ํ‹ฐ์Šคํ† ๋ฆฌ ๊ตฌ๋… ์„œ๋น„์Šค ์ด์ „์— ์กด์žฌํ–ˆ๋˜, ํ‹ฐ์Šคํ† ๋ฆฌ ์ด์›ƒ์„œ๋น„์Šค ํ‹ฐ๋„ค์Šค(Tines) ๊ฐœ๋ฐœ ๋Œ์•„๋ณด๊ธฐ

ํ‚ค์›Œ๋“œ์— ๋Œ€ํ•œ ์ •๋ณด ์—… ๋น„ํŠธ ๋ด‡

๋‹ค์Œ์€ Bing์—์„œ ์—… ๋น„ํŠธ ๋ด‡ ์ฃผ์ œ์— ๋Œ€ํ•œ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋” ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ๋Š” ์ธํ„ฐ๋„ท์˜ ๋‹ค์–‘ํ•œ ์ถœ์ฒ˜์—์„œ ํŽธ์ง‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ๊ฐ€ ์œ ์šฉํ–ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ๊ฐ€ ์œ ์šฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด ๊ณต์œ ํ•˜์‹ญ์‹œ์˜ค. ๋งค์šฐ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์‚ฌ๋žŒ๋“ค์ด ์ฃผ์ œ์— ๋Œ€ํ•ด ์ž์ฃผ ๊ฒ€์ƒ‰ํ•˜๋Š” ํ‚ค์›Œ๋“œ ๐Ÿšจ(ํŽŒํ•‘์žฅ๋‹จํƒ€๋น„๋ฒ•)์ด๊ฑฐ ๋น„๋ฐ€์ธ๋ฐ์šฅ.. ๊ฑฐ๋ž˜์†Œ ๋ด‡์ด ๊ฐ€๊ฒฉ ๋Œ์–ด์˜ฌ๋ฆฌ๋Š” ๋กœ์ง ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค(feat. ์„ธ๋ ฅ์€ ์ž๊ธฐ๋ˆ ๋งŽ์ด ์•ˆ์จ์š”)

  • ๋น„ํŠธ์ฝ”์ธ
  • ์•”ํ˜ธํ™”ํ
  • ๊ฐ€์ƒํ™”ํ
  • ์•ŒํŠธ์ฝ”์ธ
  • ์ด๋”๋ฆฌ์›€
  • ๋น„ํŠธ์ฝ”์ธ์บ์‹œ
  • ์—์ด๋‹ค
  • ๋ผ์ดํŠธ์ฝ”์ธ
  • ์ด์˜ค์Šค
  • ๋ฆฌํ”Œ
  • ์ฐจํŠธ๋ถ„์„
  • ๊ธฐ์ˆ ๋ถ„์„

๐Ÿšจ(ํŽŒํ•‘์žฅ๋‹จํƒ€๋น„๋ฒ•)์ด๊ฑฐ #๋น„๋ฐ€์ธ๋ฐ์šฅ.. #๊ฑฐ๋ž˜์†Œ #๋ด‡์ด #๊ฐ€๊ฒฉ #๋Œ์–ด์˜ฌ๋ฆฌ๋Š” #๋กœ์ง #๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค(feat. #์„ธ๋ ฅ์€ #์ž๊ธฐ๋ˆ #๋งŽ์ด #์•ˆ์จ์š”)


YouTube์—์„œ ์—… ๋น„ํŠธ ๋ด‡ ์ฃผ์ œ์˜ ๋‹ค๋ฅธ ๋™์˜์ƒ ๋ณด๊ธฐ

์ฃผ์ œ์— ๋Œ€ํ•œ ๊ธฐ์‚ฌ๋ฅผ ์‹œ์ฒญํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿšจ(ํŽŒํ•‘์žฅ๋‹จํƒ€๋น„๋ฒ•)์ด๊ฑฐ ๋น„๋ฐ€์ธ๋ฐ์šฅ.. ๊ฑฐ๋ž˜์†Œ ๋ด‡์ด ๊ฐ€๊ฒฉ ๋Œ์–ด์˜ฌ๋ฆฌ๋Š” ๋กœ์ง ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค(feat. ์„ธ๋ ฅ์€ ์ž๊ธฐ๋ˆ ๋งŽ์ด ์•ˆ์จ์š”) | ์—… ๋น„ํŠธ ๋ด‡, ์ด ๊ธฐ์‚ฌ๊ฐ€ ์œ ์šฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด ๊ณต์œ ํ•˜์‹ญ์‹œ์˜ค, ๋งค์šฐ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

Leave a Comment