【发布时间】:2022-01-12 09:56:49
【问题描述】:
我有这个脚本
from ib_insync import *
import pandas as pd
from tqdm import tqdm
util.startLoop()
ib = IB()
ib.connect('127.0.0.1', 7497, clientId=1)
data = {'Name': ['AAPL', 'TSLA', 'GOOG', 'NVDA'], 'buy_amount': [10, 10, 10, 10]}
df = pd.DataFrame(data)
for i in tqdm(df.index):
contract = Stock(df['Name'].iloc[i],exchange='SMART',currency='USD')
marketOrder = MarketOrder('BUY',df['buy_amount'].iloc[i])
marketOrder.tif = 'GTC'
marketOrder = ib.placeOrder(contract, marketOrder)
我正在使用ib_insync 来自动化我的交易。我希望它能够自动完成所有操作。为了自动化,我尝试使用 bat 文件来运行我的脚本。
首先,我可以在 VScode 中毫无问题地运行此脚本。它可以在没有任何问题的情况下下达所有订单。但是,当我使用 bat 文件或在 VScode 之外运行此脚本(在 Windows 资源管理器上双击 py 脚本)时,它不会下所有订单,只有第一个订单(即 AAPL)。这意味着该循环仅在我使用 VScode 运行时才有效。我不使用虚拟环境,因此这应该不是问题。我无法确定问题的原因,非常感谢任何帮助
【问题讨论】:
-
是否有任何异常可见?您是否尝试将您的代码段“框定”成单独的防异常、异常的自我报告代码段以帮助解决根本原因?
-
@user3666197 不,我看不到任何异常。我尝试在 bat 文件末尾使用暂停,但终端在下第一个订单后关闭。据我了解,当我在 bat 文件末尾使用暂停时,终端不应关闭。我还没有尝试“框架”我的代码,因为我还不知道该怎么做。但这将是我现在学习的第一件事
-
在你自己启动的终端中运行
.bat文件 -
@rioV8 好的,谢谢,我尝试了您的建议,现在它不会自动关闭。我还使用了user3666197提供的代码,报告显示一切正常,但它仍然只发送带有.bat文件的第一个订单。完全相同的代码就像 VScode 的魅力一样
-
什么是使用pandas的原因一个简单的带有元组的列表就足够了
标签: python batch-file visual-studio-code algorithmic-trading interactive-brokers