Skip to content

Latest commit

 

History

History
93 lines (67 loc) · 2.21 KB

README.md

File metadata and controls

93 lines (67 loc) · 2.21 KB

cTraderFixPy

PyPI version versions GitHub license

A Python package for interacting with cTrader FIX API.

This package uses Twisted and it works asynchronously.

Features

  • Works asynchronously by using Twisted

  • Allows you to easily interact with cTrader FIX API and it manages everything in background

  • Generate FIX message by using Python objects

Insallation

pip install ctrader-fix

Config

Config file sample:

{
  "Host": "",
  "Port": 0,
  "SSL": false,
  "Username": "",
  "Password": "",
  "BeginString": "FIX.4.4",
  "SenderCompID": "",
  "SenderSubID": "QUOTE",
  "TargetCompID": "cServer",
  "TargetSubID": "QUOTE",
  "HeartBeat": "30"
}

Usage

from twisted.internet import reactor
import json
from ctrader_fix import *

# Callback for receiving all messages
def onMessageReceived(client, responseMessage):
    print("Received: ", responseMessage.getMessage().replace("�", "|"))
    messageType = responseMessage.getFieldValue(35)
    if messageType == "A":
        print("We are logged in")

# Callback for client disconnection
def disconnected(client, reason): 
    print("Disconnected, reason: ", reason)

# Callback for client connection
def connected(client):
    print("Connected")
    logonRequest = LogonRequest(config)
    client.send(logonRequest)

# you can use two separate config files for QUOTE and TRADE
with open("config-trade.json") as configFile:
    config = json.load(configFile)

client = Client(config["Host"], config["Port"], ssl = config["SSL"])

# Setting client callbacks
client.setConnectedCallback(connected)
client.setDisconnectedCallback(disconnected)
client.setMessageReceivedCallback(onMessageReceived)
# Starting the client service
client.startService()
reactor.run()

Please check documentation or samples for a complete example.

Dependencies