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

如何将实现交易信号连续去重的JS代码改写为Python版本?

交易序列连续重复方向去重Python实现

功能说明

核心需求为删除列表中连续重复的同向交易值,匹配示例效果:输入[Buy, Buy, Sell, Buy, Sell, Sell]时输出[Buy, Sell, Buy, Sell]。

完整实现代码

import json
import os

# 对应原JS的Trade类结构,可根据你的实际数据结构调整
class Trade:
    def __init__(self, price, side):
        self.price = price
        self.side = side

def deduplicate_trades(trade_list):
    if not trade_list:
        return []
    deduplicated = []
    for trade in trade_list:
        # 方向取值逻辑兼容列表/类两种格式,若实际用Trade类实例,可直接改为trade.side
        current_side = trade[0] if isinstance(trade, (list, tuple)) else trade.side
        if not deduplicated:
            deduplicated.append(trade)
            continue
        # 取上一个已保留条目的方向
        last_side = deduplicated[-1][0] if isinstance(deduplicated[-1], (list, tuple)) else deduplicated[-1].side
        # 仅方向不同时保留当前条目
        if current_side != last_side:
            deduplicated.append(trade)
    return deduplicated

if __name__ == "__main__":
    # 替换为你的实际交易数据
    array = [
        ["BUY", 100],
        ["BUY", 101],
        ["SELL", 102],
        ["BUY", 103],
        ["SELL", 104],
        ["SELL", 105]
    ]
    print("AllTrades:")
    print(array)

    trades = deduplicate_trades(array)

    print('D Trades:')
    for trade in trades:
        print(trade)

    # 自动创建data目录避免写入报错
    os.makedirs('./data', exist_ok=True)
    with open('./data/trades.json', 'w', encoding='utf-8') as f:
        json.dump(trades, f, ensure_ascii=False, indent=2)
    print('Trades > trades.txt')

代码说明

  • 核心逻辑完全匹配需求,测试给定输入可直接输出预期结果
  • 兼容嵌套列表、Trade类实例两种常用交易数据格式,可根据实际场景调整方向取值逻辑
  • 若需要严格对齐原JS中「首条交易为SELL时自动丢弃」的特殊逻辑,可在去重函数开头增加对应判断即可
  • 内置目录自动创建、UTF-8编码配置,避免运行时异常和乱码问题

内容的提问来源于stack exchange,提问作者tetter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:18:04