Backend automation · Retired
DCA Service
A personal backend project exploring whether a weekly DCA strategy could respond to market conditions instead of investing the same amount every time.
View source on GitHubThe challenge
Could a weekly DCA strategy respond to market conditions instead of investing the same amount every time? The goal was to adjust purchases based on BTC's position relative to the EMA100 and EMA200 while keeping real orders limited, traceable, and safe.
The approach
Once a week, the service fetched and stored the latest BTC market data, calculated the EMA100 and EMA200, and used those signals to determine the weekly investment amount. When BTC traded below the EMA200, it deployed additional reserved funds. It then distributed the amount across configured assets and placed capped Binance Spot orders. The .NET service used Clean Architecture, SQLite, Telegram notifications, and ran through systemd on a VPS with a static IP.
The outcome
The service ran reliably and completed live purchases. New features and changes to the strategy sometimes caused incorrect values or unexpected allocations, which required manual log reviews. As the complexity grew, the monthly VPS cost and ongoing maintenance became harder to justify, especially once exchanges offered smart DCA with higher availability. I therefore made the deliberate decision to retire the service.