Hello I am trying to use Quickfix with FIX 4.4 using a Python Wrapper for a personal resume builder. I have googled to all over for help with this but haven't found anything to figure this out.
So in Quickfix's Data Dictionary here:
field number='54' name='Side' type='CHAR'
It is telling us that this tag must be a CHAR.
However in our method to send an order looks like this:
def sendOrder(self, tradeSide):
print("Creating the following order: ")
cTime = datetime.utcnow()
qOrder = fix.Message()
print(qOrder)
qOrder.getHeader().setField( fix.BeginString("FIX.4.4") )
print(qOrder)
qOrder.getHeader().setField(35, "D" )
print(qOrder)
qOrder.getHeader().setField(49, "Place_To_Go")
print(qOrder)
qOrder.getHeader().setField(56, "Place_To_Trade")
print(qOrder)
qOrder.getHeader().setField(43,"Y")
print(qOrder)
qOrder.getHeader().setField(52, str(cTime))
print(qOrder)
qOrder.setField(40, chr(1) )
print(qOrder)
qOrder.setField(11, str(self.genOrderID()))
print(qOrder)
qOrder.setField(311, "EUR")
print(qOrder)
qOrder.setField(309, "EUR/USD.E.FX")
print(qOrder)
qOrder.setField(305, "111")
print(qOrder)
qOrder.setField(54, chr(1))
print(qOrder)
qOrder.setField(60, str(cTime))
print(qOrder)
qOrder.setField(38, "1" )
print(qOrder)
qOrder.setField(59, "1" )
print("Order:" + str(qOrder))
print("ayyy")
fix.Session_sendToTarget(qOrder)
You can see in this line: qOrder.setField(54, chr(1))
That we are trying to force it to become a char however when we send the message to the server we still recieve:
(Invalid message: Field tag is invalid: 54)
In a tester online our FIX message appears to be valid on this website:
http://fixparser.targetcompid.com?sharedlink=-LF0tkvCToW5RzneNJg2
Input this key:
jaiPj3brnf7tlgy5X28BgqwCwxpIq7H%BH6b81joE!rUzWof9hQvvby3
Does anyone have any experience in why it is still blatantly rejecting our message?
Thank you for reading.
If CHAR(1)
is actually ASCII code 1, this is the SOH
character (Start Of Heading). That is not a valid value for tag 54. You want the character 1
, not SOH.