The Bollinger Band indicator is a technical analysis tool used to identify potential price breakouts or breakdowns. By entering the correct value in the tool, you can find coins with tight prices that are about to rise.
The value to be entered in the Bollinger Band indicator varies depending on the time frame. For example:
- For daily scans, enter a value of 0.12 for BBW to get tight coins.
- For 4-hour scans, the optimum value will be 0.04.
- For hourly scans, enter a value of 0.02.
- For 15 minutes, enter bbw value of 0.08.
Clone the project
git clone https://github.com/atilaahmettaner/bollinger-band-screener.gitGo to the project directory
cd bollinger-band-screenerWith Makefile
Run:
make runRerun:
make rerunAnother Way
Before the project can be run with Docker, a Docker image must be created. You can use the following constraint for this:
docker build -t cryptoscreener .Run docker on localhost:5000
docker run -d -p 5000:5000 cryptoscreenerGo to to http://localhost:5000
The application provides several API endpoints that can be consumed by mobile applications. All API endpoints require authentication using an API key provided in the Authorization header.
All API requests require an API key:
Authorization: YOUR_API_KEY
Endpoint: /api/scan
Method: POST
Description: Scans for coins based on Bollinger Band parameters.
Request Parameters:
{
"hours": "4h", // Timeframe (5m, 15m, 1h, 4h, 1D)
"bbw": "0.04", // Bollinger Band Width threshold
"exchange": "kucoin" // Exchange (kucoin, binance, etc.)
}Response:
{
"status": "success",
"timeframe": "4h",
"exchange": "kucoin",
"data": [
{
"symbol": "KUCOIN:BTCUSDT",
"price": 43215.5,
"bbw": 0.0321,
"change": 2.5,
"rsi": 58.2,
"volume": 1234567
},
// More coins...
]
}Endpoint: /api/trending
Method: GET
Description: Gets trending coins or coins with specific BB ratings.
Request Parameters:
timeframe(query param, default: "5m")exchange(query param, default: "kucoin")filter_type(query param, optional: "rating")rating(query param, optional: rating value to filter by)
Response:
{
"status": "success",
"timeframe": "5m",
"exchange": "kucoin",
"filter_type": "rating",
"rating_filter": "2",
"data": [
{
"symbol": "KUCOIN:ETHUSDT",
"price": 2315.75,
"change": 1.8,
"bbw": 0.0254,
"rating": 2,
"signal": "BUY",
"volume": 987654
},
// More coins...
]
}Endpoint: /api/symbols
Method: GET
Description: Gets all available symbols for a specific exchange.
Request Parameters:
exchange(query param, default: "kucoin")
Response:
{
"status": "success",
"exchange": "kucoin",
"symbols": [
"KUCOIN:BTCUSDT",
"KUCOIN:ETHUSDT",
// More symbols...
]
}Endpoint: /api/coin-details
Method: GET
Description: Gets detailed analysis for a specific coin.
Request Parameters:
symbol(query param, required)exchange(query param, default: "kucoin")timeframe(query param, default: "4h")
Response:
{
"status": "success",
"data": {
"symbol": "KUCOIN:BTCUSDT",
"timeframe": "4h",
"price": 43215.5,
"open": 42865.25,
"high": 43500.0,
"low": 42800.0,
"volume": 1234567,
"change": 0.82,
"bb_rating": 2,
"signal": "BUY",
"bbwidth": 0.0321,
"bb_upper": 43500.0,
"bb_middle": 43100.0,
"bb_lower": 42700.0,
"rsi": 58.2,
"ema_50": 42950.0,
"ema_200": 41200.0,
"macd": 105.5,
"macd_signal": 98.2,
"adx": 28.5,
"oscillators": {},
"moving_averages": {}
}
}Endpoint: /api/hot-movers
Method: GET
Description: Finds coins that have both high price change and specific BB Rating range in a given timeframe.
Request Parameters:
timeframe(query param, default: "5m"): Desired timeframe (5m, 15m, 1h, 4h, 1D)min_change(query param, default: "3.0"): Minimum percentage change (e.g. 3.0 = 3% and above)min_rating(query param, default: "2"): Minimum BB Rating value (1, 2, 3 etc.)max_rating(query param, default: "3"): Maximum BB Rating value (to filter specific rating range)exchange(query param, default: "kucoin"): Exchange
Example Usage:
- To filter coins with BB Rating of 2 only:
/api/hot-movers?min_rating=2&max_rating=2 - To filter coins with BB Rating of 1 or 2:
/api/hot-movers?min_rating=1&max_rating=2
Response:
{
"status": "success",
"timeframe": "5m",
"exchange": "kucoin",
"min_change": 3.0,
"min_rating": 2,
"max_rating": 2,
"count": 3,
"data": [
{
"symbol": "KUCOIN:BRWLUSDT",
"price": 0.001,
"change": 3.966,
"bbw": 0.1018,
"rating": 2,
"signal": "BUY",
"volume": 24300,
"alert_message": "BRWLUSDT 5m zaman diliminde %4.0 yükseldi ve BB Rating 2!"
},
]
}All endpoints will return an error response in the following format:
{
"status": "error",
"message": "Error message description"
}Common HTTP status codes:
- 400: Bad Request (missing parameters)
- 401: Unauthorized (invalid or missing API key)
- 404: Not Found (requested resource not found)
- 500: Internal Server Error
The application includes an email subscription system that allows users to receive daily Bollinger Band scan results directly to their inbox.
- Subscribe: Users can subscribe with their email address from the main page.
- Automated Emails: Subscribers receive daily scan results with detailed information about coins that meet the Bollinger Band criteria.
- Multiple Timeframes: The emails include scan results for multiple timeframes (4H and 1D).
- Fear & Greed Index: Each email includes the current Fear & Greed Index value with visual representation.
- Unsubscribe: Users can easily unsubscribe through a link provided in each email.
- Users enter their email address in the subscription form on the main page.
- The system validates the email and adds it to the subscriber database.
- The cron job runs daily to perform scans and send emails to all active subscribers.
- Each subscriber receives a personalized email with the latest scan results.
Users can manage their subscription at: https://crypto-scanner-app.herokuapp.com/subscription
This page allows users to unsubscribe if they no longer wish to receive scanning emails.

