1. ๋ด‡ ์ƒ์„ฑ

๊ฒ€์ƒ‰์ฐฝ์— @botfather๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ํ…”๊ทธ ๊ณต์‹ ๊ณ„์ •์ด ํ•˜๋‚˜ ๋ณด์ธ๋‹ค (์ฒดํฌํ‘œ์‹œํ™•์ธ)



Open > Create a New Bot ์„ ๋ˆ„๋ฅด๋ฉด ๋ด‡ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๋Š” ์ฐฝ์ด ๋‚˜์˜จ๋‹ค




๋ด‡์˜ ๋‹‰๋„ค์ž„๊ณผ ์œ ์ €๋„ค์ž„์„ '์ ์ ˆํžˆ' ์ž…๋ ฅํ•ด์ค€๋‹ค, ์œ ์ €๋„ค์ž„์˜ ๋ ๋ถ€๋ถ„์€ bot์œผ๋กœ ๋๋‚˜์•ผ ํ•œ๋‹ค



๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ API ํ‚ค๋ฅผ ์•Œ๋ ค์ฃผ๋Š”๋ฐ ์ด๊ฑธ๋กœ ๋„ˆ์˜ ๋ด‡์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค(์ด๊ฒƒ๋งŒ ์žˆ์œผ๋ฉด ๋ด‡์ด ๋“ค์–ด๊ฐ€์žˆ๋Š” ์ฑ„ํŒ…์„ ์ฝ๋Š”๋‹ค๋˜๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค)
์ ์ ˆํžˆ ๋ฉ”๋ชจ์žฅ์— ์ ์–ด๋†“์ž



2. ๋ด‡ ์ฑ„๋„ ์ดˆ๋Œ€ ๋ฐ ์ฑ„๋„ ์•„์ด๋”” ์–ป๋Š” ๋ฐฉ๋ฒ•


๊ทธ๋ƒฅ ์œ ์ € ์ถ”๊ฐ€ํ•˜๋“ฏ์ด ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค




๊ด€๋ฆฌ์ž๋กœ ์„ธ์šฐ๊ธฐ>์ €์žฅ



์ด์ œ ๋งŒ๋“ค์–ด์ง„ ์ฑ„๋„์˜ ์•„์ด๋””๋ฅผ ์•Œ์•„์•ผํ•˜๋Š”๋ฐ

https://api.telegram.org/bot[์•„๊นŒย ๋ฐ›์€ ๋ด‡ ํ† ํฐ]/getUpdates

์ด ์ฃผ์†Œ๋กœ ๋“ค์–ด๊ฐ€๋ฉด ์ตœ๊ทผ ๋ฐ›์•˜๋˜ ๋ฉ”์‹œ์ง€ ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค
๊ฐ€๋ น ๋ด‡ ํ† ํฐ์ด 1234:ABCDE_1234๋ผ๋ฉดย 
https://api.telegram.org/bot1234:ABCDE_1234/getUpdates

(๋„์–ด์“ฐ๊ธฐ ์—†์Œ์ฃผ์˜)

์— ๋“ค์–ด๊ฐ€๋ฉด๋œ๋‹คย 

์ฑ„๋„์— ๋ฉ”์‹œ์ง€๋ฅผ ํ•˜๋‚˜ ๋ณด๋‚ด๊ณ  ํ•ด๋‹น ํŽ˜์ด์ง€์—๋“ค์–ด๊ฐ€๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค




์ €๊ธฐ -100์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ํฐ ์ˆซ์ž๊ฐ€ ์ฑ„๋„์˜ ์•„์ด๋””๋‹ค ์ด๊ฒƒ๋„ ๋ฉ”๋ชจ์žฅ์— ๋ณต์‚ฌํ•ด๋‘์ž


3. ๊ฑฐ๋ž˜๋Ÿ‰ ๊ธ‰๋“ฑ ์ง€ํ‘œ ์„ค์ •

๋‹ค์Œ ํŒŒ์ธ์Šคํฌ๋ฆฝํŠธ ์ธ๋””์ผ€์ดํ„ฐ๋ฅผ ํŠธ๋ ˆ์ด๋”ฉ๋ทฐ์— ์‚ฝ์ž…ํ•˜๋ฉด ์ด๋Ÿฐ ์ง€ํ‘œ๊ฐ€ ํ•˜๋‚˜ ๋œฌ๋‹ค


//@version=6
indicator('Volume Spike with Cooldown', overlay = false)

// ํŒŒ๋ผ๋ฏธํ„ฐ
len = input.int(20, 'MA Length') // ๋ณผ๋ฅจ ์ด๋™ํ‰๊ท  ๊ธฐ๊ฐ„
mult = input.float(6, 'Threshold x๋ฐฐ') // ์ž„๊ณ„์น˜ ๋ฐฐ์ˆ˜
cdBars = input.int(30, '์ฟจ๋‹ค์šด ๊ธฐ๊ฐ„(๋ด‰ ์ˆ˜)')

// ๊ณ„์‚ฐ
vol_ma = ta.sma(volume, len)
threshold = vol_ma * mult
isSpike = volume > threshold

// ์ฟจ๋‹ค์šด ๋กœ์ง
var int lastAlertBar = na
canAlert = isSpike and (na(lastAlertBar) or bar_index - lastAlertBar > cdBars)

if canAlert
ย  ย  // ์•Œ๋ฆผ ๋ฐœ์ƒ
ย  ย  alert('{"text":"โšก ' + syminfo.ticker + '๊ฑฐ๋ž˜๋Ÿ‰ ๊ธ‰๋“ฑ (๊ฑฐ๋ž˜๋Ÿ‰: ' + str.tostring(volume) + ')"}', alert.freq_once_per_bar)
ย  ย  lastAlertBar := bar_index
ย  ย  lastAlertBar

// ์‹œ๊ฐํ™”
plot(volume, title = 'Volume', color = color.blue)
plot(vol_ma, title = 'Volume MA', color = color.orange)
plot(threshold, title = 'Threshold', color = color.red, style = plot.style_stepline)
plotshape(canAlert, title="Alert Marker", location=location.top, style=shape.labeldown,
ย  ย  ย  ย  ย  text="+", textcolor=color.white, size=size.small, color=color.red)




์ข… ์ด๋ชจ๋””์ฝ˜์ด ์žˆ๋Š” ๋ถ€๋ถ„์ด ์•Œ๋ฆผ์ด ๊ฐˆ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜๋Š” ๋ถ€๋ถ„์ด๋‹ค. ์ง€ํ‘œ ์„ค์ •์œผ๋กœ ์กฐ์ •๊ฐ€๋Šฅํ•˜๋‹ˆ ์ž…๋ง›์— ๋งž๊ฒŒ ์กฐ์ ˆํ•ด์ค€๋‹ค




4. ์•Œ๋žŒ ์ถ”๊ฐ€

condition์— ๋ฐฉ๊ธˆ ์ถ”๊ฐ€ํ•œ ์ง€ํ‘œ๋ฅผ ์„ ํƒํ•ด์ฃผ๊ณ , any alert()๋ญ์‹œ๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ์ค€๋‹ค
๊ทธ๋ฆฌ๊ณ  notificationํƒญ์— ๊ฐ€์„œ ์›นํ›… URL์„ ์ฒดํฌํ•ด์ฃผ๊ณ  ๋‹ค์Œ๊ณผ๊ฐ™์ด ์ž…๋ ฅํ•ด์ค€๋‹ค


https://api.telegram.org/bot[ํ† ํฐ]/sendMessage?chat_id=[์•„๊นŒ ๋ณต์‚ฌํ–ˆ๋˜ ์ฑ„๋„์•„์ด๋””]


์˜ˆ์‹œ
https://api.telegram.org/bot1234:ABCDE_1234/sendMessage?chat_id=-100123123123


(์—ฌ๊ธฐ๋„ ๋„์–ด์“ฐ๊ธฐ๊ฐ€ ์—†๋‹ค)

์ด๋ ‡๊ฒŒ ์„ธํŒ…ํ•˜๋ฉด ์•„๊นŒ ๋งŒ๋“ค์—ˆ๋˜ ์ฑ„๋„์— ์•Œ๋ฆผ์ด ์˜ค๋Š”๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค