oneZero

oneZero

Provider ID66

oneZero Hub liquidity on Obermind Stream. Connect as a FIX 4.4 taker for full-refresh quotes, order execution, positions, and collateral, so a white-label broker can consume oneZero liquidity inside the Obermind execution stack.

  • CFD
  • FX
  • Integrations
  • Market Data
  • OMS / EMS
  • Order Execution

Overview

oneZero is a FIX 4.4 taker on Obermind Stream. Two initiator sessions share EncryptMethod 0, a 30-second heartbeat, and the password issued by the hub. The price session takes quotes. The trade session sends orders and can request positions and collateral. Quote logon sets ResetSeqNumFlag to Y and does not send NextExpectedMsgSeqNum. TLS ends in stunnel. QuickFIX connects to localhost in the clear, so UseSsl stays false.

Messaging & Protocols

The price session carries market data. The trade session carries orders, execution reports, positions, and collateral. Both sessions log on, heartbeat, and log out with the standard FIX session messages.

Obermind Platform is integrated with the oneZero FIX 4.4 taker API.

Order types

Three order types are sent on NewOrderSingle. Market (tag 40 = 1) does not send a price. Limit (40 = 2) sends the limit in tag 44. Previously Quoted (40 = D) sends tag 117 set to the QuoteEntryID (tag 299) of the side being hit, the offer on a buy and the bid on a sell, and tag 44 set to that quote's price. Stop and Stop Limit are not sent to the hub. A previously quoted order also requires a live quote; GTC is not valid for that type and is rejected before the order is sent. ClOrdID (tag 11) is the order time plus the order id, and a FIX reconnect does not reuse it.

  • Market
  • Limit
  • Previously Quoted

Time in force

The hub accepts GTC (tag 59 = 1), IOC (59 = 3), and FOK (59 = 4). Day and GTD are not accepted. Obermind rewrites any other time in force to GTC before the order is sent. Previously Quoted orders are IOC or FOK only.

  • GTC
  • IOC
  • FOK

Quotes

Subscriptions are full refresh (tag 265 = 0) for bid and offer (267 = 2). Subscribe with 263 = 1 and unsubscribe with 263 = 2 on the same MDReqID (tag 262). Indicative quotes are dropped. Market depth is requested as a full book (264 = 0). The hub returns one bid and one offer unless depth is enabled for the taker. Each side carries its own QuoteEntryID (tag 299), and that id changes on every refresh. Previously Quoted orders use the latest id.

Quantity

The quantity on the wire is the platform quantity multiplied by the instrument factor, and execution-report quantities are divided by that same factor on the way back. The factor belongs to the instrument configuration on Obermind Platform. Some instruments are configured in lots and some in units; the factor is what aligns that platform quantity with the quantity the hub expects. An instrument whose factor is 100000 sends a platform quantity of 0.1 as 10000, and a hub fill of 10000 is booked as 0.1.

Positions and collateral

Both requests run on the trade session. Positions use RequestForPositions (35 = AN) and return an acknowledgement (35 = AO) followed by zero or more reports (35 = AP). Collateral uses CollateralInquiry (35 = BB), an acknowledgement (35 = BG), and zero or more reports (35 = BA). The party id is the margin account, or * for every account the session may see. An empty book is a valid acknowledgement with a report count of zero.

Provider setup

Register the assembly in Obermind Stream Configuration, then paste the provider element into OberMind.Configurations.Configuration. Point both sessions at the local stunnel ports. Reload stunnel, then restart Obermind Stream. On the Aggregator, add oneZero to LiquidityProviders and SyntheticOrderProviders. If those properties already list other venues, append 66 to the existing values instead of replacing them. If they are empty, paste the entries below into the Aggregator properties on ObermindStream.ObermindSTREAMSettings.

<Property name="LiquidityProviders">66</Property>
<Property name="SyntheticOrderProviders">66:Market,Limit,PreviouslyQuoted</Property>

Stunnel

Client-mode services. verify = 0 is required while connect is an IP address, because the certificate name will not match. Place onezero-client.pem (certificate and private key in one file) in the same folder as stunnel.conf. The local accept port must match SocketConnectPort. Replace hub.example.com and the remote ports with the values on the venue sheet.

[OneZero-Q]
client = yes
accept = 127.0.0.1:10522
connect = hub.example.com:10522
sslVersionMin = TLSv1.2
sslVersionMax = TLSv1.2
verify = 0
cert = onezero-client.pem

[OneZero-T]
client = yes
accept = 127.0.0.1:10523
connect = hub.example.com:10523
sslVersionMin = TLSv1.2
sslVersionMax = TLSv1.2
verify = 0
cert = onezero-client.pem

Assembly registration

Register this provider in Obermind Stream Configuration. Id 0 uses the id from the class, which is 66. Do not set an id above 100. Only include this provider's assembly block.

<Provider>
  <TypeName>OberMind.OZ.OneZeroProvider, OberMind.OZ</TypeName>
  <Id>0</Id>
  <X64>true</X64>
</Provider>

Stream provider XML

Paste this provider element into OberMind.Configurations.Configuration. Replace CLIENT_Q, CLIENT_T, HUB_QUOTES, HUB_TRADES, and ReplaceWithHubPassword. TargetCompID must match the hub exactly, including letter case. SocketConnectHost stays 127.0.0.1 because stunnel terminates TLS, and UseSsl stays false so the session is not encrypted twice. Account is tag 1 on every NewOrderSingle; the sample uses UAT. TakerPortfolioId 0 means tag 33010 is not sent; set it only on a risk-management trading session. SessionsXml is the two sessions, stored escaped inside that property.

<provider>
  <id>66</id>
  <instance>1</instance>
  <properties>
    <property name="Enabled">True</property>
    <property name="AutoReconnect">True</property>
    <property name="AutoReconnectInterval">10</property>
    <property name="ConfigFile">FIX\FIX44_OZ.cfg</property>
    <property name="DataDictionary">FIX\FIX44_OZ.xml</property>
    <property name="Account">UAT</property>
    <property name="TakerPortfolioId">0</property>
    <property name="LoggingEnabled">True</property>
    <property name="LogPath">%LogsPath%</property>
    <property name="LogMessageFilter"></property>
    <property name="SessionsXml">&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;data schemaVersion="1"&gt;&lt;sessions&gt;&lt;session type="OberMind.OZ.OneZeroSessionInfo, OberMind.OZ"&gt;&lt;properties&gt;&lt;property name="Password" type="System.String, System.Private.CoreLib"&gt;ReplaceWithHubPassword&lt;/property&gt;&lt;property name="Enabled" type="System.Boolean, System.Private.CoreLib"&gt;True&lt;/property&gt;&lt;property name="Description" type="System.String, System.Private.CoreLib"&gt;Quotes&lt;/property&gt;&lt;property name="Type" type="OberMind.FIXBaseProviders.Constants.SessionType, OberMind.FIXBaseProviders"&gt;Price&lt;/property&gt;&lt;property name="SenderCompID" type="System.String, System.Private.CoreLib"&gt;CLIENT_Q&lt;/property&gt;&lt;property name="TargetCompID" type="System.String, System.Private.CoreLib"&gt;HUB_QUOTES&lt;/property&gt;&lt;property name="SocketConnectHost" type="System.String, System.Private.CoreLib"&gt;127.0.0.1&lt;/property&gt;&lt;property name="SocketConnectPort" type="System.Int32, System.Private.CoreLib"&gt;10522&lt;/property&gt;&lt;property name="ResetSeqNumFlag" type="System.Boolean, System.Private.CoreLib"&gt;True&lt;/property&gt;&lt;property name="UseSsl" type="System.Boolean, System.Private.CoreLib"&gt;False&lt;/property&gt;&lt;property name="SslValidateCertificates" type="System.Boolean, System.Private.CoreLib"&gt;False&lt;/property&gt;&lt;/properties&gt;&lt;/session&gt;&lt;session type="OberMind.OZ.OneZeroSessionInfo, OberMind.OZ"&gt;&lt;properties&gt;&lt;property name="Password" type="System.String, System.Private.CoreLib"&gt;ReplaceWithHubPassword&lt;/property&gt;&lt;property name="Enabled" type="System.Boolean, System.Private.CoreLib"&gt;True&lt;/property&gt;&lt;property name="Description" type="System.String, System.Private.CoreLib"&gt;Trades&lt;/property&gt;&lt;property name="Type" type="OberMind.FIXBaseProviders.Constants.SessionType, OberMind.FIXBaseProviders"&gt;Order&lt;/property&gt;&lt;property name="SenderCompID" type="System.String, System.Private.CoreLib"&gt;CLIENT_T&lt;/property&gt;&lt;property name="TargetCompID" type="System.String, System.Private.CoreLib"&gt;HUB_TRADES&lt;/property&gt;&lt;property name="SocketConnectHost" type="System.String, System.Private.CoreLib"&gt;127.0.0.1&lt;/property&gt;&lt;property name="SocketConnectPort" type="System.Int32, System.Private.CoreLib"&gt;10523&lt;/property&gt;&lt;property name="ResetSeqNumFlag" type="System.Boolean, System.Private.CoreLib"&gt;True&lt;/property&gt;&lt;property name="UseSsl" type="System.Boolean, System.Private.CoreLib"&gt;False&lt;/property&gt;&lt;property name="SslValidateCertificates" type="System.Boolean, System.Private.CoreLib"&gt;False&lt;/property&gt;&lt;/properties&gt;&lt;/session&gt;&lt;/sessions&gt;&lt;/data&gt;</property>
  </properties>
</provider>
Alipay
Stripe
Eurex
AWS
Azure
Google Cloud
Currenex
Velocity Trade
Bitcoin
CME
Interactive Brokers
Kraken
FIX API
XTX
Bloomberg
Binance

أطلق منصتك.