Checks your crypto watchlist every hour and sends a Telegram alert for each coin that moved more than your threshold.

UsesCoinMarketCapTelegram

Alert me in Telegram when a coin moves sharply

ScheduleRun every hour.Run every hour.
ValuesSet watchlist to blank.Set watchlist to blank.
ValuesSet alertChatId to blank.Set alertChatId to blank.
ValuesSet movePercent to blank.Set movePercent to blank.
ValuesSet maxAlertsPerRun to 10.Set maxAlertsPerRun to 10.
ValuesSet coinsSearched to 300.Set coinsSearched to 300.
ValuesSet alertThreshold to 0.Set alertThreshold to 0.
Decisions & LoopsIf a step below fails, save the error as thresholdErrorIf a step below fails, save the error as thresholdError
Try
MathRound movePercent multiplied by 1 to 2 decimal places and save it as alertThreshold.Round movePercent multiplied by 1 to 2 decimal places and save it as alertThreshold.
On error
ValuesShow in the output: The move percentage is not a number..Show in the output: The move percentage is not a number..
Decisions & LoopsIf alertThreshold is less than or equal to 0If alertThreshold is less than or equal to 0
Yes
Decisions & LoopsStop and report a problem: Set 'movePercent' to a positive number, for example 5 for a five percent hourly move, then run it again.Stop and report a problem: Set 'movePercent' to a positive number, for example 5 for a five percent hourly move, then run it again.
No
No steps
ValuesSet alertCap to 0.Set alertCap to 0.
Decisions & LoopsIf a step below fails, save the error as capErrorIf a step below fails, save the error as capError
Try
MathRound maxAlertsPerRun multiplied by 1 to the nearest integer and save it as alertCap.Round maxAlertsPerRun multiplied by 1 to the nearest integer and save it as alertCap.
On error
ValuesShow in the output: The alert cap is not a number..Show in the output: The alert cap is not a number..
Decisions & LoopsIf alertCap is less than or equal to 0If alertCap is less than or equal to 0
Yes
Decisions & LoopsStop and report a problem: Set 'maxAlertsPerRun' to a whole number of alerts, for example 10, then run it again.Stop and report a problem: Set 'maxAlertsPerRun' to a whole number of alerts, for example 10, then run it again.
No
No steps
ValuesSet watchedSymbols to an empty list.Set watchedSymbols to an empty list.
Decisions & LoopsFor each watchlistEntry in watchlist split by ,:For each watchlistEntry in watchlist split by ,:
TextMake watchlistEntry uppercase and save it as cleanedSymbol.Make watchlistEntry uppercase and save it as cleanedSymbol.
Decisions & LoopsIf cleanedSymbol isn't emptyIf cleanedSymbol isn't empty
Yes
ListsAdd cleanedSymbol to the end of watchedSymbols and save it as watchedSymbols.Add cleanedSymbol to the end of watchedSymbols and save it as watchedSymbols.
No
No steps
Decisions & LoopsIf watchedSymbols is emptyIf watchedSymbols is empty
Yes
Decisions & LoopsStop and report a problem: The 'watchlist' step has no ticker symbols in it. Write them separated by commas, for example BTC,ETH,SOL.Stop and report a problem: The 'watchlist' step has no ticker symbols in it. Write them separated by commas, for example BTC,ETH,SOL.
No
No steps
CoinMarketCapCoinMarketCapGet top CoinMarketCap cryptocurrencies. Save it as listings.Get top CoinMarketCap cryptocurrencies. Save it as listings.
ValuesSet rows to listings.listings.data.Set rows to listings.listings.data.
ValuesSet alertsSent to 0.Set alertsSent to 0.
Decisions & LoopsFor each row in rows:For each row in rows:
Decisions & LoopsIf alertsSent is greater than or equal to alertCapIf alertsSent is greater than or equal to alertCap
Yes
Decisions & LoopsStop repeating.Stop repeating.
No
No steps
ValuesSet symbol to row.symbol.Set symbol to row.symbol.
ValuesSet shouldAlert to false.Set shouldAlert to false.
ValuesSet alertText to blank.Set alertText to blank.
Decisions & LoopsIf a step below fails, save the error as rowErrorIf a step below fails, save the error as rowError
Try
Decisions & LoopsIf symbol isn't empty and watchedSymbols contains symbolIf symbol isn't empty and watchedSymbols contains symbol
Yes
ValuesSet usdQuote to row.quote.USD.Set usdQuote to row.quote.USD.
ValuesSet hourChangeRaw to usdQuote.percent_change_1h.Set hourChangeRaw to usdQuote.percent_change_1h.
ValuesSet hourChange to 0.Set hourChange to 0.
ValuesSet moveSize to -1.Set moveSize to -1.
Decisions & LoopsIf hourChangeRaw isn't emptyIf hourChangeRaw isn't empty
Yes
MathChange hourChange to hourChangeRaw multiplied by 1.Change hourChange to hourChangeRaw multiplied by 1.
MathCalculate the absolute value of hourChange and save it as moveSize.Calculate the absolute value of hourChange and save it as moveSize.
No
No steps
Decisions & LoopsIf moveSize is greater than or equal to alertThresholdIf moveSize is greater than or equal to alertThreshold
Yes
ValuesSet alertLines to an empty list.Set alertLines to an empty list.
ValuesSet heading to symbol.Set heading to symbol.
Decisions & LoopsIf row.name isn't emptyIf row.name isn't empty
Yes
ValuesChange heading to row.name (symbol).Change heading to row.name (symbol).
No
No steps
ListsAdd heading to the end of alertLines and save it as alertLines.Add heading to the end of alertLines and save it as alertLines.
ListsAdd 1h change: hourChange formatted as a plain number with 2 decimal places% to the end of alertLines and save it as alertLines.Add 1h change: hourChange formatted as a plain number with 2 decimal places% to the end of alertLines and save it as alertLines.
ListsAdd Your alert threshold: alertThreshold formatted as a plain number with 2 decimal places% in an hour to the end of alertLines and save it as alertLines.Add Your alert threshold: alertThreshold formatted as a plain number with 2 decimal places% in an hour to the end of alertLines and save it as alertLines.
ValuesSet priceLine to Price: not reported by CoinMarketCap.Set priceLine to Price: not reported by CoinMarketCap.
ValuesSet priceRaw to usdQuote.price.Set priceRaw to usdQuote.price.
Decisions & LoopsIf priceRaw isn't emptyIf priceRaw isn't empty
Yes
Decisions & LoopsIf a step below fails, save the error as priceErrorIf a step below fails, save the error as priceError
Try
MathSet priceNumber to priceRaw multiplied by 1.Set priceNumber to priceRaw multiplied by 1.
Decisions & LoopsIf priceNumber is less than 1If priceNumber is less than 1
Yes
ValuesChange priceLine to Price: priceNumber formatted as US dollars with 8 decimal places.Change priceLine to Price: priceNumber formatted as US dollars with 8 decimal places.
No
ValuesChange priceLine to Price: priceNumber formatted as US dollars with 2 decimal places.Change priceLine to Price: priceNumber formatted as US dollars with 2 decimal places.
On error
ValuesShow in the output: The price came back in a form that is not a number, so it was left out..Show in the output: The price came back in a form that is not a number, so it was left out..
No
No steps
ListsAdd priceLine to the end of alertLines and save it as alertLines.Add priceLine to the end of alertLines and save it as alertLines.
ValuesSet dayChangeRaw to usdQuote.percent_change_24h.Set dayChangeRaw to usdQuote.percent_change_24h.
Decisions & LoopsIf dayChangeRaw isn't emptyIf dayChangeRaw isn't empty
Yes
Decisions & LoopsIf a step below fails, save the error as dayChangeRawErrorIf a step below fails, save the error as dayChangeRawError
Try
ListsAdd 24h change: dayChangeRaw multiplied by 1 formatted as a plain number with 2 decimal places% to the end of alertLines and save it as alertLines.Add 24h change: dayChangeRaw multiplied by 1 formatted as a plain number with 2 decimal places% to the end of alertLines and save it as alertLines.
On error
ValuesShow in the output: A percentage came back in a form that is not a number, so it was left out..Show in the output: A percentage came back in a form that is not a number, so it was left out..
No
No steps
ListsAdd Observed market data from CoinMarketCap. Not financial advice. to the end of alertLines and save it as alertLines.Add Observed market data from CoinMarketCap. Not financial advice. to the end of alertLines and save it as alertLines.
TextJoin alertLines with a new line and save it as alertText.Join alertLines with a new line and save it as alertText.
ValuesChange shouldAlert to true.Change shouldAlert to true.
No
No steps
No
No steps
On error
ValuesShow in the output: Skipped one coin while checking for moves: rowError as text.Show in the output: Skipped one coin while checking for moves: rowError as text.
Decisions & LoopsIf shouldAlert is yesIf shouldAlert is yes
Yes
TelegramTelegramSend a message to chat alertChatId.Send a message to chat alertChatId.alertText
ValuesAdd 1 to alertsSent.Add 1 to alertsSent.
No
No steps