๋น์ ์ ์ฃผ์ ๋ฅผ ์ฐพ๊ณ ์์ต๋๊น “์ ๋นํธ ๋ด – ๐จ(ํํ์ฅ๋จํ๋น๋ฒ)์ด๊ฑฐ ๋น๋ฐ์ธ๋ฐ์ฅ.. ๊ฑฐ๋์ ๋ด์ด ๊ฐ๊ฒฉ ๋์ด์ฌ๋ฆฌ๋ ๋ก์ง ๊ณต๊ฐํฉ๋๋ค(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. ์ธ๋ ฅ์ ์๊ธฐ๋ ๋ง์ด ์์จ์). ๋๊ธ์์ ๋ ๋ง์ ๊ด๋ จ ์ด๋ฏธ์ง๋ฅผ ๋ณด๊ฑฐ๋ ํ์ํ ๊ฒฝ์ฐ ๋ ๋ง์ ๊ด๋ จ ๊ธฐ์ฌ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์ฃผ์ ์ ๋ํ ๊ธฐ์ฌ ํ๊ฐ ์ ๋นํธ ๋ด
- 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. ์ธ๋ ฅ์ ์๊ธฐ๋ ๋ง์ด ์์จ์) | ์ ๋นํธ ๋ด, ์ด ๊ธฐ์ฌ๊ฐ ์ ์ฉํ๋ค๊ณ ์๊ฐ๋๋ฉด ๊ณต์ ํ์ญ์์ค, ๋งค์ฐ ๊ฐ์ฌํฉ๋๋ค.