Python - 快速修复:尝试登录时 getHeader() 属性错误

2024-02-23

我正在使用 Quickfix,并修改了 toAdmin 函数以将用户名和密码插入登录消息中。我根据 C++ 指令改编了代码,但遇到了奇怪的 getHeader() 属性错误。

回溯如下:

<20151223-10:48:31.142, FIX.4.2:MATHCLIENT1->CSTEST, event>
  (Created session)
Type 1 for order , 2 to exit and d to debug.
<20151223-10:48:31.149, FIX.4.2:CLIENT1->TEST, event>
  (Connecting to hostX on port Y)

Traceback (most recent call last):
  File "initiator.py", line 28, in toAdmin
    message.getHeader ().getField (msgType)
  File "C:\Users\user\Anaconda\lib\site-packages\quickfix.py", line 27015, in <lambda>
    __getattr__ = lambda self, name: _swig_getattr(self, SessionID, name)
  File "C:\Users\user\Anaconda\lib\site-packages\quickfix.py", line 57, in _swig_getattr
    raise AttributeError(name)
AttributeError: getHeader

我的代码如下:

import sys
import time
import thread
import argparse
from datetime import datetime
import quickfix as fix

class Application(fix.Application):
    orderID = 0
    execID = 0
    def gen_ord_id(self):
        global orderID
        orderID+=1
        return orderID


def onCreate(self, sessionID):
        return
def onLogon(self, sessionID):
        self.sessionID = sessionID
        print ("Successful Logon to session '%s'." % sessionID.toString())
        return

def onLogout(self, sessionID): return

def toAdmin(self, sessionID, message):
    msgType = fix.MsgType ()
    message.getHeader ().getField (msgType)
    if (msgType.getValue () == fix.MsgType_Logon):
        print 'Logging on.'
        # message.setField (fix.Password (settings.get (self.sessionID).getString ("Password")))
        # message.setField (fix.Username (settings.get (self.sessionID).getString ("Username")))   
        message.setField(fix.Password('password'))
        message.setField(fix.Username('username'))        
        message.setField (fix.ResetSeqNumFlag (True))     
    return

def fromAdmin(self, sessionID, message):
    return


def toApp(self, sessionID, message):
    print "Sent the following message: %s" % message.toString()
    return

def fromApp(self, message, sessionID):
    print "Received the following message: %s" % message.toString()
    return

def genOrderID(self):
    self.orderID = self.orderID+1
    return `self.orderID`

def genExecID(self):
    self.execID = self.execID+1
    return `self.execID`
def put_order(self):
    print("Creating the following order: ")
    trade = fix.Message()
    trade.getHeader().setField(fix.BeginString(fix.BeginString_FIX50)) #
    trade.getHeader().setField(fix.MsgType(fix.MsgType_NewOrderSingle)) #39=D
    trade.setField(fix.ClOrdID(self.genExecID())) #11=Unique order

    trade.setField(fix.HandlInst(fix.HandlInst_MANUAL_ORDER_BEST_EXECUTION)) #21=3 (Manual order, best executiona)
    trade.setField(fix.Symbol('SMBL')) #55=SMBL ?
    trade.setField(fix.Side(fix.Side_BUY)) #43=1 Buy
    trade.setField(fix.OrdType(fix.OrdType_LIMIT)) #40=2 Limit order
    trade.setField(fix.OrderQty(100)) #38=100
    trade.setField(fix.Price(10))
    print trade.toString()
    fix.Session.sendToTarget(trade, self.sessionID)


def main(config_file):
    try:
        settings = fix.SessionSettings(config_file)
        application = Application()
        storeFactory = fix.FileStoreFactory(settings)
        # logFactory = fix.FileLogFactory(settings)
        logFactory = fix.ScreenLogFactory(settings)
        initiator = fix.SocketInitiator(application, storeFactory, settings, logFactory)
        initiator.start()

    print 'Type 1 for order , 2 to exit and d to debug.'
    while 1:
            input = raw_input()
            if input == '1':
                print "Putin Order"
                application.put_order()
            if input == '2':
                sys.exit(0)
            if input == 'd':
                import pdb
                pdb.set_trace()
            else:
                print "Valid input is 1 for order, 2 for exit"
                continue
except (fix.ConfigError, fix.RuntimeError), e:
    print e

if __name__=='__main__':
    # logfile = open('errorlog.txt','w')
    # original_stderr = sys.stderr
    # sys.stderr = logfile
    parser = argparse.ArgumentParser(description='FIX Client')
    parser.add_argument('file_name', type=str, help='Name of configuration file')
    args = parser.parse_args()
    main(args.file_name)
    # sys.stderr = original_stderr
    # logfile.close()

这看起来大部分是正确的,但是,我相信您以错误的顺序输入了您的论点。尝试按如下方式定义您的函数:

def toAdmin(self, message, sessionID):

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python - 快速修复:尝试登录时 getHeader() 属性错误 的相关文章

随机推荐

  • 在 Virtual Box 中调试来宾操作系统的工具

    我只是交叉发布了我在 virtualbox org 上提出的相同问题 如果不违反任何规则 我很乐意了解更多相关信息 因为 stackoverflow 承诺会更加动态 你好 我做了一些搜索 但找不到任何工具可以从虚拟盒中的早期启动中调试来宾系
  • 有没有办法向 ADO.NET 实体框架中的关联添加额外的字段?

    我希望能够对多对多关系进行建模 其中包含有关该关系的额外详细信息 例如 Person int id String name Project int id String name ProjectPerson Person id Project
  • 使用 .NET 的稳定 RSS 阅读器

    我一直在寻找一个稳定的 NET RSS Atom 库 最好是开源的 比如 Adob e 创建的 AS3 Syndicate Library 我想在我的基于 NET 的网站中集成 RSS 源 另外 是否有适用于同一个 RSS 提要阅读器的 J
  • 如何在 Gradle 中查找/删除未使用的依赖项

    我想在我的项目中找到未使用的依赖项 Gradle 中有类似 Maven 的功能吗 Kotlin 用户更新 2021 年 12 月 17 日 检测 Kotlin 项目中缺失或多余的构建依赖项 版本 1 0 9 最新 我为 Kotlin 用户添
  • .NET WinForms 中与 Qt 的表单布局最接近的等效项是什么?

    与 Qt 最接近的等效项是什么QFormLayout在 NET WinForms 中 TableLayoutPanel 将由我决定
  • WooCommerce:删除产品写入面板选项卡

    我正在使用 WooCommerce 我想隐藏后端的 链接产品 选项卡 我找到了一个添加选项卡的钩子 woocommerce product write panel tabs 但我不确定是否也可以用这个钩子隐藏某些选项卡 谢谢你的帮助 所以我
  • RestSharp.NetCore 中的 ExecuteAsyncPost 示例

    我正在使用 RestSharp NetCore 包 并且需要调用 ExecuteAsyncPost 方法 我正在努力理解回调参数 var client new RestClient url request AddParameter appl
  • 代表们——他们到底是什么?

    有人能用一些现实生活流程的类比来解释它们吗 比如经营一支棒球队 一家咖啡店或一家汽车修理店 任何有意义的事情 就像我们甚至不要谈论代码 语法或编程 我看过很多这样的帖子 但没有一个真正适合我 我们可以先谈谈概念吗 就像我什至不明白为什么我们
  • Java do-while 循环不起作用

    我希望我的程序不断询问问题 直到它得到可以使用的响应 特别是从 0 到 20 的数字 我在这个类上还有很多其他内容 所以这里有一个小摘录 其中 do while 是 我已经为所有变量命名了 public static void main S
  • 如何在 iPhone 中检测来自麦克风而不是语音的打击?

    我正在使用此代码来检测打击 但我受不了打击 我有声音 NSURL url NSURL fileURLWithPath dev null NSDictionary settings NSDictionary dictionaryWithObj
  • *&++i 是否会导致 C++03 中的未定义行为?

    In 另一个答案 https stackoverflow com a 17400329 1505939据说在 C 11 之前 其中i is an int 然后使用表达式 i 导致未定义的行为 这是真的 关于另一个答案 评论中有一些讨论 但似
  • 为什么4.2.0版本没有maven Resteasy-jaxrs包?

    我在 Maven 中看到的最后一个版本resteasy jaxrs是 3 8 1 当尝试升级时resteasy client到 4 2 0 存在依赖关系resteasy jaxrs 4 2 0 org jboss resteasy plug
  • 防止片段着色器中的循环展开

    我正在使用最新版本的 Chrome 和 Firefox 为 WebGL GLSL ES 1 0 编写一个片段着色器 并且编写了一个迭代算法 首先 我发现循环的长度是非常有限的 文档说它必须在编译时是可猜测的 这意味着它必须是一个常量或非常接
  • Zend Framework 2 - 自定义表单验证

    我需要自定义表单验证 所以我写了一个类似的函数this http framework zend com manual 2 0 en modules zend validator writing validators html one 到目前
  • 如何在 Java Swing 应用程序中播放 MP4 视频

    有谁知道我可以在 JPanel 中播放 mp4 视频文件的方法吗 我尝试过使用 avi 文件使用 JMF 但没有成功 现在我对播放视频文件这样一个简单的任务变得如此乏味感到困惑和沮丧 请任何人告诉我我可以走什么路 我将不胜感激 我听说过 V
  • android recyclerview 不显示项目

    我想在我的回收视图中显示这些项目 但它根本不显示 而且我看不到错误 也许你们可以帮助我 MainActivity java RecyclerView recyclerView RecyclerView findViewById R id r
  • pandas 数据帧索引:to_list() 与 tolist()

    我最近为某人编写了一个 python 脚本 其中我使用以下命令将 pandas 数据帧的索引转换为列表to list 然而 这对他们不起作用 因为他们得到 AttributeError Index object has no attribu
  • 如何将 django 中的 InMemoryUploadedFile 转换为 flickr API 的格式?

    我有一个类将文件上传到 Flickr 该文件的类型为 内存中上传文件 我想知道如何将 InMemoryUploadedFile 文件中的数据转换或传递为 flickr API 的格式 Eg photo image jpg
  • Django 管理员:一对一关系作为内联?

    我正在为 satchmo 应用程序整理管理员 Satchmo 使用 OneToOne 关系来扩展基础Product模型 我想在一页上全部编辑 是否可以将 OneToOne 关系作为内联关系 如果没有 将一些字段添加到我的管理的给定页面 最终
  • Python - 快速修复:尝试登录时 getHeader() 属性错误

    我正在使用 Quickfix 并修改了 toAdmin 函数以将用户名和密码插入登录消息中 我根据 C 指令改编了代码 但遇到了奇怪的 getHeader 属性错误 回溯如下 lt 20151223 10 48 31 142 FIX 4 2