You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何循环遍历字符串列表逐个打印每个币种对应的指标数据

问题根因

你写的币种列表遍历逻辑仅执行了赋值操作,没有把后续的接口请求、指标计算、结果打印逻辑包含在循环内。遍历结束后pair变量仅保留了列表最后一个值BTCUSDT,后续的死循环全程复用这个固定值发起请求,自然只会输出最后一个币种的指标。

修改方案

将币种遍历逻辑移到while死循环内部,每次轮询时依次处理所有币种即可。另外原代码里的>是HTML转义字符,要替换为正常的大于号>才能正常运行,修改后的完整代码如下:

import time
import numpy as np
# 请确保以下依赖已正确导入
from binance.client import Client
import config

if __name__ == '__main__':
    # 初始化币安客户端
    client = Client(config.API_KEY, config.API_SECRET)

    coinlist = ['XRPUSDT', 'ETHUSDT', 'BTCUSDT']
    limit = 500
    interval = '5m'
    # 可切换为EMA
    ortalama_tipi = 'VAR'

    while 1:
        # 全局每次轮询等待10秒,避免触发接口限流
        time.sleep(10)
        # 每次轮询遍历所有币种处理
        for pair in coinlist:
            try:
                klines = client.get_klines(symbol=pair, interval=interval, limit=limit)
            except Exception as exp:
                msg = f'获取{pair}K线出错: {str(exp)}'
                print(msg, flush=True)
                time.sleep(10)
                client = Client(config.API_KEY, config.API_SECRET)
                # 单个币种出错跳过,继续处理下一个币种
                continue

            open_time = [int(entry[0]) for entry in klines]
            open_klines = [float(entry[1]) for entry in klines]
            high = [float(entry[2]) for entry in klines]
            low = [float(entry[3]) for entry in klines]
            close = [float(entry[4]) for entry in klines]

            close_array1 = np.asarray(close)
            close_array = close_array1[:-1]

            high_array1 = np.asarray(high)
            high_array = high_array1[:-1]

            low_array1 = np.asarray(low)
            low_array = low_array1[:-1]

            open_array1 = np.asarray(open_klines)
            open_array = open_array1[:-1]

            if ortalama_tipi == 'VAR':
                var_arr = generateVar(high_array, low_array, moving_average_length=10)
                pmax = generatePMax(var_arr, close_array, high_array, low_array, 10, 3)

                last_var = var_arr[-1]
                previous_var = var_arr[-2]

                last_pmax = pmax[-1]
                previous_pmax = pmax[-2]
                # 按需求格式打印
                print(f'{pair} ——————START——————')
                print('last var:', last_var, 'last pmax', last_pmax, flush=True)

                if last_var > last_pmax and previous_var < previous_pmax:
                    msg = f'buy signal for {pair}'
                    print(msg, flush=True)

                if last_var < last_pmax and previous_var > previous_pmax:
                    msg = f'sell signal for {pair}'
                    print(msg, flush=True)

            elif ortalama_tipi == 'EMA':
                ema_arr = generateEma(high_array, low_array, moving_average_length=10)
                pmax = generatePMax(ema_arr, close_array, high_array, low_array, 10, 3)

                last_ema = ema_arr[-1]
                previous_ema = ema_arr[-2]

                last_pmax = pmax[-1]
                previous_pmax = pmax[-2]

                print(f'{pair} ——————START——————')
                print('last ema:', last_ema, 'last pmax', last_pmax, flush=True)

                if last_ema > last_pmax and previous_ema < previous_pmax:
                    msg = f'buy signal for {pair}'
                    print(msg, flush=True)

                if last_ema < last_pmax and previous_ema > previous_pmax:
                    msg = f'sell signal for {pair}'
                    print(msg, flush=True)

内容的提问来源于stack exchange,提问作者Mehmet Reşat Demir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:21:01