数字货币MACD指标自动化交易策略实现(含源代码)

前情回顾

在前面我们实现了2中方法进行数字货币交易,同时还能获取到实时行情。数字货币交易接口实现(含源代码)

在此基础上,我们今天实现一个指标策略自动化交易的功能(以MACD指标为例),并进行2次优化,增加仓位管理以及风险控制的功能,实现一个完成的交易策略。

MACD 策略逻辑

  1. 获取 5 分钟的 K 线数据
  2. 计算 MACD 指标
  3. 买入条件:MACD 越过零线
  4. 卖出条件:MACD 低于零线

代码实现

import ccxt
import pandas as pd
import ta
import time

# 初始化 Binance 交易所实例
exchange = ccxt.binance({
   
   
    'apiKey': 'YOUR_API_KEY',        # 替换为你的 API Key
    'secret': 'YOUR_SECRET_KEY',     # 替换为你的 Secret Key
})

# 获取 5 分钟的 K 线数据
def fetch_ohlcv(symbol, timeframe='5m', limit=100):
    ohlcv = exchange.fetch_ohlcv(symbol, timeframe, limit=limit)
    df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
    df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')
    df.set_index('timestamp', inplace=True)
    return df

# 计算 MACD 指标
def calculate_macd(df):
    macd = ta.trend.MACD(df['close'])
    df['macd'] = macd.macd()
    df['macd_signal'] = macd.macd_signal()
    df['macd_diff'] = macd.macd_diff()

# 检查交易信号
def check_trade_signals(df):
    last_row = df.iloc[-1]
    previous_row = df.iloc[-2]
    
    # 买入条件:MACD 越过零线
    if previous_row['macd'] < 0 and last_row['macd'] > 0:
        return 'buy'
    
    # 卖出条件:MACD 低于零线
    if previous_row['macd'] > 0 and last_row['macd'] < 0:
        return 'sell'
    
    return 'hold'

# 执行交易
def execute_trade(signal, symbol='BTC/USDT', amount=0.001):
    if signal == 'buy':
        order = exchange.create_market_buy_order(symbol, amount)
        print('Buy order executed:', order)
    
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值