我目前正在编写一个小型python程序,使用他们的API在1Broker.com上观看我目前的交易,它应列出任何未平仓头寸,使用计数器对其进行编号,然后更新所选择的统计数据(P / L百分比和position_id )在每次运行之后,在睡眠计时器之后。
我在一个肮脏的早期草案中工作,但决定"优化"并清理我的代码...并打破它。 以下是错误部分的信息:
if self.total_open_positions != []:
counter = int("0")
for position in self.total_open_positions:
counter += 1
display = {}
display["Open Order"] = str(counter)
display["ID"] = str(position["position_id"])
display["P/L Percent"] = str(position["profit_loss_percent"])
print display
time.sleep(timer - ((time.time() - starttime) % timer))
if self.total_positions == []:
print "All trades closed"
P / L百分比和ID中的数据拒绝在每个循环中更新。
提前感谢任何帮助过的人:)
通过"拒绝更新"我的意思是当程序运行时,它会根据需要检索P / L百分比。但是,每个连续循环打印相同的P / L百分比。意味着str(position [" profit_loss_percent"])的值没有更新为从网站检索到的最新数据。 (例如,当交易达到6%时,显示3%)
左图是第1稿。但是,你看,P / L%在每次迭代中逐渐变化。而在右图中,它保持不变。
至于self.total_open_positions,它等于我的api请求:
self.total_open_positions = requests.get(API_URL)
继承人"脏"至少可以正常工作的版本,也许它会帮助显示我的意图,以及我的noob级技能(这就是为什么我需要帮助大声笑):
total_open_orders = open_orders["response"]
while total_open_orders == []:
print "Checking again......"
time.sleep(timer1 - ((time.time() - starttime) % timer1))
else:
#When orders are found, loop through and display
while True:
#Wait desired time between refreshing stats
time.sleep(timer1 - ((time.time() - starttime) % timer1))
#Position number (oldest first)
counter = 0
##Print a small seperator between refreshes
print "#" * 20
#Loop through list of positions and print stats for each
for order in total_open_orders:
#Add to counter for each position
counter += 1
#Display stats to user (anything in '[]' is JSON format
try:
print "#" * 40
print "Open Order #: " + str(counter)
print "ID #: " + str(order["position_id"])
print "Market: " + str(order["symbol"])
print "Entry: " + str(order["entry_price"])
print "Stop Loss: " + str(order["stop_loss"])
print "Take Profit: " + str(order["take_profit"])
print "P/L: " + str(order["profit_loss_percent"])
print "#" * 40
print ""
#Catch any connection errors and print for debugging
except Exception as e:
print e
答案 0 :(得分:0)
问题已经解决了。因为self.total_open_positions是在上面的函数中定义的,所以它只被调用一次,因此只有一组统计数据。通过在我的循环范围内重新定义total_open_positions,可以正确显示所有数据:)