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

QuickFix技术咨询:如何在Java中创建自定义组

在Java中创建QuickFix自定义组(包含2101/2102/2103字段)

1. 定义自定义组类

先创建继承自quickfix.Group的组类,指定2100作为组计数器字段,组内第一个字段用2101(符合QuickFix组的定义规则):

import quickfix.Group;

public class CustomStrategyParameters extends Group {
    // 构造函数:参数为组计数器字段(2100)、组内第一个字段(2101)
    public CustomStrategyParameters() {
        super(2100, 2101);
    }

    // 2101字段的setter/getter
    public void setStrategyName(String value) {
        setField(new StrategyName(value));
    }

    public String getStrategyName() {
        StrategyName field = new StrategyName();
        getField(field);
        return field.getValue();
    }

    // 2102字段的setter/getter
    public void setStrategyParameter(String value) {
        setField(new StrategyParameter(value));
    }

    public String getStrategyParameter() {
        StrategyParameter field = new StrategyParameter();
        getField(field);
        return field.getValue();
    }

    // 2103字段的setter/getter
    public void setStrategyParameterType(String value) {
        setField(new StrategyParameterType(value));
    }

    public String getStrategyParameterType() {
        StrategyParameterType field = new StrategyParameterType();
        getField(field);
        return field.getValue();
    }

    // 自定义字段类(QuickFix默认无这些字段时需自行定义)
    public static class StrategyName extends quickfix.StringField {
        public static final int FIELD = 2101;
        public StrategyName() { super(FIELD); }
        public StrategyName(String data) { super(FIELD, data); }
    }

    public static class StrategyParameter extends quickfix.StringField {
        public static final int FIELD = 2102;
        public StrategyParameter() { super(FIELD); }
        public StrategyParameter(String data) { super(FIELD, data); }
    }

    public static class StrategyParameterType extends quickfix.StringField {
        public static final int FIELD = 2103;
        public StrategyParameterType() { super(FIELD); }
        public StrategyParameterType(String data) { super(FIELD, data); }
    }
}

2. 在父消息中扩展组支持

以NewOrderSingle(35=D)为例,扩展消息类以支持自定义组,逻辑和内置的NoStrategyParameters一致:

import quickfix.fix44.NewOrderSingle;

public class ExtendedNewOrderSingle extends NewOrderSingle {
    public ExtendedNewOrderSingle() {
        super();
        addGroup(new CustomStrategyParameters());
    }

    // 添加自定义组的快捷方法
    public void addCustomStrategyParameters(CustomStrategyParameters group) {
        addGroup(group);
    }

    public CustomStrategyParameters getCustomStrategyParameters(int index) {
        CustomStrategyParameters group = new CustomStrategyParameters();
        getGroup(index, group);
        return group;
    }
}

3. 实例化并生成目标Fix消息

创建消息并设置字段值,生成符合要求的格式:

import quickfix.field.ClOrdID;
import quickfix.field.HandlInst;
import quickfix.field.OrderQty;
import quickfix.field.Symbol;

public class FixMessageBuilder {
    public static void main(String[] args) throws Exception {
        ExtendedNewOrderSingle order = new ExtendedNewOrderSingle();
        
        // 设置主消息必填字段
        order.set(new ClOrdID("ORD-7890"));
        order.set(new HandlInst('1'));
        order.set(new Symbol("AAPL"));
        order.set(new OrderQty(50));
        
        // 创建并配置自定义组
        CustomStrategyParams params = new CustomStrategyParams();
        params.setStrategyName("ETRSJSD");
        params.setStrategyParameter("ABCD");
        params.setStrategyParameterType("5");
        
        // 添加组到主消息(QuickFix自动维护2100计数器)
        order.addCustomStrategyParameters(params);
        
        // 输出以|分隔的Fix消息
        System.out.println(order.toString().replace('\001', '|'));
    }
}

运行后输出的消息格式如下:

35=D|11=ORD-7890|21=1|55=AAPL|38=50|2100=1|2101=ETRSJSD|2102=ABCD|2103=5|

关键注意点

  • 组计数器2100由QuickFix自动维护,添加N个组时会自动设置为N
  • 自定义字段类需继承对应类型的Field(如StringField、IntField),要和Fix协议定义的字段类型匹配
  • 若使用QuickFix代码生成器,可直接在消息XML配置中添加组规则,自动生成对应Java类,效果与手动编写一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:50:17