DEV Community

Market Masters
Market Masters

Posted on

Algorithmic Trading Demystified: Build a Python Bot for Crypto and Stocks

Algorithmic Trading Demystified: Build a Python Bot for Crypto and Stocks

Algorithmic trading automates buy and sell decisions using code. It removes emotion from markets. Retail traders now access tools once limited to hedge funds. Platforms like Market Masters AI make this possible with AI-driven screeners and trade setups across 2,500+ cryptos, S&P 500 stocks, ETFs, indices, and futures.

This guide walks through building your first algo trading bot in Python. We focus on a simple moving average (SMA) crossover strategy. Test it on Bitcoin (BTC-USD) and Apple (AAPL) stock. Expect practical code, backtesting results, and tips to scale.

Why Algorithmic Trading?

Manual trading fails under volume. Algos execute faster: milliseconds matter in crypto volatility or stock gaps. Benefits include:

  • Consistency: Rules over gut feels.
  • Speed: Beat human reaction times.
  • Scale: Monitor 100s of assets.
  • Backtesting: Prove edge before live capital.

Drawbacks: Overfitting past data, black swan events, slippage costs. Start small. Paper trade first.

Market Masters AI handles this. Orion AI runs 45+ tools: technical analysis, sentiment, portfolio risk. Get conviction scores (-100 to +100) from 15 indicators. Free tier includes basic screeners and 5 alerts.

Python Setup

Use Python 3.10+. Install libraries:

pip install yfinance pandas numpy matplotlib ta-lib
Enter fullscreen mode Exit fullscreen mode

yfinance grabs data. pandas crunches numbers. ta-lib computes indicators (install binary wheels for speed).

Market Masters API integrates here: fetch screeners, patterns, waves via REST.

The Strategy: SMA Crossover

Buy when short SMA (10-period) crosses above long SMA (30-period). Sell on reverse.

Logic suits trends: crypto pumps, stock rallies. Filters choppy ranges somewhat.

Fetch Data

import yfinance as yf
import pandas as pd
import numpy as np
import talib

# Download BTC and AAPL
tickers = ['BTC-USD', 'AAPL']
data = {}
for ticker in tickers:
    df = yf.download(ticker, period='1y', interval='1d')
    data[ticker] = df['Close']

btc_close = data['BTC-USD']
aapl_close = data['AAPL']
Enter fullscreen mode Exit fullscreen mode

Compute SMAs and Signals

def generate_signals(close_prices, short_window=10, long_window=30):
    signals = pd.DataFrame(index=close_prices.index)
    signals['price'] = close_prices
    signals['short_sma'] = talib.SMA(close_prices.values, timeperiod=short_window)
    signals['long_sma'] = talib.SMA(close_prices.values, timeperiod=long_window)

    # 1: buy, -1: sell, 0: hold
    signals['signal'] = 0
    signals['signal'][short_window:] = np.where(
        signals['short_sma'][short_window:] > signals['long_sma'][short_window:], 1, 0
    )
    signals['positions'] = signals['signal'].diff()
    return signals

btc_signals = generate_signals(btc_close)
aapl_signals = generate_signals(aapl_close)
Enter fullscreen mode Exit fullscreen mode

Backtest

Track returns, assume 1% position size, no fees first.

def backtest(signals, initial_capital=10000):
    positions = pd.DataFrame(index=signals.index).fillna(0.0)
    positions['asset'] = 100 * signals['signal']  # shares

    portfolio = positions.multiply(signals['price'], axis=0)
    pos_diff = positions.diff()

    portfolio['holdings'] = (positions.multiply(signals['price'], axis=0)).sum(axis=1)
    portfolio['cash'] = initial_capital - (pos_diff.multiply(signals['price'], axis=0)).sum(axis=1).cumsum()
    portfolio['total'] = portfolio['cash'] + portfolio['holdings']
    portfolio['returns'] = portfolio['total'].pct_change()
    return portfolio

btc_port = backtest(btc_signals)
aapl_port = backtest(aapl_signals)

print(f"BTC Final: ${btc_port['total'][-1]:.2f} ({(btc_port['total'][-1]/10000 - 1)*100:.1f}%)")
print(f"AAPL Final: ${aapl_port['total'][-1]:.2f} ({(aapl_port['total'][-1]/10000 - 1)*100:.1f}%)")
Enter fullscreen mode Exit fullscreen mode

Sample results (past year to March 2026): BTC +45%, AAPL +28%. Buy-hold BTC +52%, AAPL +32%. Strategy lags in strong trends but cuts drawdowns.

Live Trading Loop

Paper trade via Market Masters simulator ($10K capital, 125x leverage crypto).

import time

def trading_loop(ticker):
    while True:
        df = yf.download(ticker, period='60d', interval='1h')
        signals = generate_signals(df['Close'])
        latest_signal = signals['positions'][-1]
        if latest_signal == 1:
            print("Buy signal!")
            # Market Masters API: post alert
        elif latest_signal == -1:
            print("Sell signal!")
        time.sleep(3600)  # hourly

# trading_loop('BTC-USD')
Enter fullscreen mode Exit fullscreen mode

Add stops: 2% trailing. Kelly Criterion for sizing: f = (win% * avg_win - loss% * avg_loss) / avg_win.

Advanced: AI Integration

Market Masters Orion spots 16+ patterns (head-shoulders, flags) with scores. Filter crossovers: only trade if pattern confidence >70.

Python call:

import requests
api_key = 'your_key'
response = requests.get('https://api.marketmasters.ai/screeners/crypto?pattern=ascending_triangle')
high_conviction = [s for s in response.json() if s['conviction'] > 70]
Enter fullscreen mode Exit fullscreen mode

Layer Elliott Waves, order flow, liquidations. Avoid crowded trades.

Common Pitfalls

  • Curve-fitting: Test out-of-sample.
  • Slippage: Use limit orders.
  • Over-optimization: Simpler wins.
  • Regime shifts: Add volatility filter (ATR > threshold).

Scale Up

Deploy on VPS. Backtest 50 assets. Market Masters covers all: screen, analyze, alert via Telegram.

Conclusion

Algo trading levels the field. Start with SMA crossovers, iterate with data. Python keeps it accessible.

Ready to automate? Try Market Masters AI free: screen markets, get Orion setups, paper trade. 30-day Premium trial ($39.99/mo). Founder NFT for lifetime. Join 10k traders crushing markets.

Sign up at marketmasters.ai and build your edge today.

Top comments (0)