我正在尝试使用 a Go port ib API 连接到我的 Interactive Brokers Trader 工作站。
我可以连接 API 并从中读取数据,但是当我尝试在模拟交易账户上下订单时,出现以下错误:
&{1 321 Error validating request:-'bB' : cause - Cannot set VOL attribute on non-VOL order.}
但我不相信我在请求中设置了 VOL 属性。重现错误的最小程序是:
package main
import (
"fmt"
"math"
"time"
"github.com/gofinance/ib"
)
func main() {
eng, err := ib.NewEngine(ib.EngineOptions{
DumpConversation: true,
Gateway: "127.0.0.1:1122",
})
if err != nil {
fmt.Printf("Connection error: %v", err)
}
// Note: you have to make sure the connection has been fully established
// before attempting to do any requests to the TWS. Failure to do so will
// result in the TWS closing the connection. Typically this can be done by
// waiting for a callback from an event and the end of the initial connection
// handshake, such as IBApi.EWrapper.nextValidId or IBApi.EWrapper.managedAccounts
// https://interactivebrokers.github.io/tws-api/connection.html
// TODO take apart engine.go and make it wait properly.
time.Sleep(1 * time.Second)
defer eng.Stop()
// printInstrument(eng)
reqID := eng.NextRequestID()
o := make(chan ib.Reply)
eng.Subscribe(o, reqID)
order := ib.Order{
Action: "BUY",
OrderType: "LMT",
TotalQty: 100,
LimitPrice: 95.94,
}
contract := ib.Contract{
SecurityType: "STK",
Symbol: "MSFT",
Exchange: "SMART",
PrimaryExchange: "NASDAQ",
Currency: "USD",
}
req := &ib.PlaceOrder{
Order: order,
Contract: contract,
}
req.SetID(reqID)
if err := eng.Send(req); err != nil {
fmt.Printf("Send error: %v", err)
}
fmt.Println("Waiting for reply...")
reply := <-o
fmt.Println(reply)
}
程序的输出是:
$ go run main.go
2> '71-1-2-'
2< &{15 1} &{[DU1029297]}
2< &{9 1} &{1}
2< &{4 2} &{-1 2104 Market data farm connection is OK:usfuture}
2< &{4 2} &{-1 2104 Market data farm connection is OK:cashfarm}
2< &{4 2} &{-1 2104 Market data farm connection is OK:usfarm.us}
2< &{4 2} &{-1 2104 Market data farm connection is OK:usfarm}
2< &{4 2} &{-1 2106 HMDS data farm connection is OK:ilhmds}
2< &{4 2} &{-1 2106 HMDS data farm connection is OK:euhmds}
2< &{4 2} &{-1 2106 HMDS data farm connection is OK:fundfarm}
2< &{4 2} &{-1 2106 HMDS data farm connection is OK:ushmds}
2> '3-42-1-0-MSFT-STK--0---SMART-NASDAQ-USD-----BUY-100-LMT-95.94-0-----0--0-0-0-0-0-0-0-0--0-------0--0-0---0-0-0-0-0-0-0-0-0-0-0-0-0-0-0--0-0-0-0-0-0-0-0-----0---0-0--0--'
Waiting for reply...
2< &{4 2} &{1 321 Error validating request:-'bB' : cause - Cannot set VOL attribute on...
&{1 321 Error validating request:-'bB' : cause - Cannot set VOL attribute on non-VOL order.}
特别注意来自 ib 引擎的转储 3-42-1-0-MSFT-STK--0---SMART-NASDAQ-USD-----BUY-100-LMT-95.94-0 -----0--0-0-0-0-0-0-0-0--0------0--0-0---0-0-0-0- 0-0-0-0-0-0-0-0-0-0-0--0-0-0-0-0-0-0-0-----0---0-0 --0--。也许熟悉 IB API 的人可以告诉我我在这里做错了什么?
最佳答案
代替in.Order{...}order := in.New Order()
关于go - IB API下单错误: cannot set VOL attribute on non-vol order,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49971796/
在Railcasts上,我注意到一个非常有趣的功能“转到符号”窗口。它像Command-T一样工作,但显示当前文件中可用的类和方法。如何在vim中获取它? 最佳答案 尝试:helptags有各种程序和脚本可以生成标记文件。此外,标记文件格式非常简单,因此很容易将sed(1)或类似的脚本组合在一起,无论您使用何种语言,它们都可以生成标记文件。轻松获取标记文件(除了下载生成器之外)的关键在于格式化样式而不是实际解析语法。 关于ruby-on-rails-Textmate'Gotosymbol
自97年以来我一直在使用vi/vim进行各种快速编辑和管理任务,但最近才考虑使用它来替换Netbeans作为我选择的ruby编辑器。我发现一件事在Netbeans和Eclipse中非常有用的是Ctrl+Click“转到定义”功能,您可以在其中按住Ctrl键并单击一个类或方法,然后它将带您了解定义。现在,我玩过丰富的ctags和rails.vim,而且很接近,但没有雪茄。这就是我想要的:默认情况下在Netbeans和Eclipse中,您可以在本地rails中按住ctrl并单击本地方法或类项目,但你也可以ctrl+click定义在gems或用Ruby编写的系统库。以Netbeans为例
这个问题在这里已经有了答案:HowdoIcreatemultiplesubmitbuttonsforthesameforminRails?(7个答案)关闭9年前。所以..'save'%>'library'%>然后在我的Controller中:with_actiondo|a|a.savedoenda.librarydoendend问题是只有一个操作被调用...两个submit_tags调用相同的操作...知道为什么吗?或者我如何获得两个按钮以将表单提交给两种不同的方法?
我在MySQL数据库中有一个英语词典,其中只有超过250K个条目,我正在使用一个简单的ruby前端在字符串的开头使用通配符来搜索它。到目前为止,我一直这样做:SELECT*FROMwordsWHEREwordLIKE'_e__o'甚至SELECT*FROMwordsWHEREwordLIKE'____s'我总是知道单词的确切长度,但除了一个字符之外的所有字符都可能是未知的。这比糖蜜慢,比没有前导通配符的类似查询慢大约15倍,因为无法使用该列的索引。我尝试了几种方法来缩小搜索范围。例如,我添加了26个额外的列,其中包含每个单词的单个字母计数,并首先使用这些列来缩小搜索范围。我也试过按
在ruby中是否有更“干”的方式来执行以下操作?#!/usr/bin/envrubyclassVolumeattr_accessor:name,:size,:type,:owner,:date_created,:date_modified,:iscsi_target,:iscsi_portalSYSTEM=0DATA=1definitialize(args={:type=>SYSTEM})@name=args[:name]@size=args[:size]@type=args[:type]@owner=args[:owner]@iscsi_target=args[:iscsi_ta
IV.SYSTEMIMPLEMENTATIONWeadoptmodulardesignfollowingtheintegrationofblockchain.Itbringsmoreflexibilitybyseparatingtheimplementationofdifferentfunctionalities,sowecouldleveragetheadvantagesoftheblockchain-basedsmartcontractwhilereducingoverhead.Figure3illustrateshowdifferentmodulesareinvolvedintheint
问题我该如何做这样的事情:{{$use_ssl:=(ne$.Env.CERT_NAME"")}}其中$.Env.CERT_NAME可能为零/未定义。如果它是零,它给出这个错误:at:errorcallingne:invalidtypeforcomparison注意:我无法控制传递给Go模板的对象,因此必须完全在模板本身内解决这个问题。我尝试过的我试图通过首先检查它是否为非空来变通:{{$use_ssl:=(($.Env.CERT_NAME)&&(ne$.Env.CERT_NAME""))}}但它给出了这个错误:unexpected"&"inoperand所以我切换到这个,这在语法上是允
time包与string包可以说是在Go语言的开发中常用的两个包实际开发过程中(例如web开发)经常会遇到time类型与string类型的交互,计算比较等场景首先来了解GO语言里非常浪漫的一个点,即2006-01-0215:04:05,GO语言诞生的时间,通常用来做时间的格式化time转stringt:=time.Now()//当前时间timeLayoutStr:="2006-01-0215:04:05"t.Format(timeLayoutStr)//返回值为string,可以用一个值来接收它上述例子中,将time类型t转换为string类型,并格式化为年-月-日时-分-秒,这里的格式化是可
我正在研究ui-router。我有一个状态:.state('new-personal-orders',{url:'/orders/new-personal-orders/:catId?',template:''})在我的Controller中,我可以使用$state.go('new-personal-orders',null,{reload:true})在Html文件中我有一个anchor标记:Link如果标签被点击,状态就会改变,'new-personal-orders'变成当前状态,在url中有尾随散列。然后url看起来像:http://localhost:3000/orders/
我一直在重读SpencerTipping的优秀作品JavascriptinTenMinutes在这个使用惰性作用域创建语法宏的示例中,我终究无法弄清楚发生了什么:varf=function(){return$0+$1};varg=eval(f.toString().replace(/\$(\d+)/g,function(_,digits){return'arguments['+digits+']'}));g(5,6);//=>11(exceptonIE)特别是,$0和$1正在被一个函数定义取代——那个函数是如何被计算的?(大概是通过eval(),但我没有看到)。函数中单个下划线参数的用