如何将python脚本限制为每天1次API交易?
我正在编写一个python脚本,用API在poloniex上进行交易,到目前为止,我已经让它在满足某些条件时进行交易,但我仍然需要它在那天剩下的时间里不再进行交易(我让整个脚本每60秒循环一次) 到目前为止,我有以下脚本:如何将python脚本限制为每天1次API交易?,python,json,api,cryptocurrency,poloniex,Python,Json,Api,Cryptocurrency,Poloniex,我正在编写一个python脚本,用API在poloniex上进行交易,到目前为止,我已经让它在满足某些条件时进行交易,但我仍然需要它在那天剩下的时间里不再进行交易(我让整个脚本每60秒循环一次) 到目前为止,我有以下脚本: import requests import urllib.request import urllib.parse import http.client import hashlib import hmac import time import json from urlli
import requests
import urllib.request
import urllib.parse
import http.client
import hashlib
import hmac
import time
import json
from urllib.request import urlopen
The_Currency_Pair = input('Which Currency Pair?\nPAIRS TO CHOOSE FROM:\nUSDT_BTC\nUSDT_XRP\nUSDT_ETH\nUSDT_BCH\nUSDT_STR\nUSDT_LTC\nUSDT_ETC\nUSDT_XMR\n')
api = 'https://poloniex.com/tradingApi'
key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
secret = 'XXXXXXXXXXXXXXXXXXXXXXXXX'
def main():
poloniexPrices = urlopen('https://poloniex.com/public?command=returnTicker').read()
poloniexjson = json.loads(poloniexPrices)
poloniexlastP = poloniexjson[The_Currency_Pair]['last']
poloniexOCHL = urlopen('https://poloniex.com/public?command=returnChartData¤cyPair=USDT_BCH&start=1538352000&period=86400').read()
poloniexOCHLjson = json.loads(poloniexOCHL)
poloniexlasthigh = poloniexOCHLjson[-2]['high']
print ('Last Price')
print (poloniexlastP)
print ('----------------------------------------')
print ('Last Day High')
print (poloniexlasthigh)
print ('----------------------------------------')
data = {
'command': 'returnBalances',
'nonce' : int(time.time() * 1000)
}
data = urllib.parse.urlencode(data).encode()
signature = hmac.new(secret.encode(), data, hashlib.sha512)
headers = {
'Key' : key,
'Sign': signature.hexdigest()
}
request = urllib.request.Request(
url=api, data=data, headers=headers, method='POST'
)
text = urllib.request.urlopen(request).read().decode()
print ('MY ACCOUNT BALANCE')
try:
print(json.loads(text)['USDT'])
except:
print(text)
print ('-----------------------------------------')
if float(poloniexlastP) > 0:
print ('PLACING TRADE')
print ('-----------------------------------------------')
parms = {"command":"buy",
"currencyPair":The_Currency_Pair,
"rate":100,
"immediateOrCancel":1,
"amount":0.01,
"nonce":int(time.time() * 1000)}
parms = urllib.parse.urlencode(parms).encode()
signature = hmac.new(secret.encode(), parms, hashlib.sha512)
headers = {'Key' : key,
'Sign': signature.hexdigest()}
request = urllib.request.Request(
url=api, data=parms, headers=headers, method='POST')
text = urllib.request.urlopen(request).read().decode()
ordernumber = (json.loads(text)['orderNumber'])
print ('Order Number:')
print (ordernumber)
while True:
main()
time.sleep(60)
无论如何,交易完成后,我需要它来确保在60秒睡眠后,它不会进行第二次交易,除非是新的一天/交易完成后的第二天。(我可以用poloniex服务器时间来做这个吗?)
因此,如果它已经达到了打印(订单号)的程度,这意味着它已经进行了交易。但是我如何将它标记为当天的已放置交易或其他东西,并在下一个循环的
if float(poloniexlastP)>0:
中使用它,以确保它不会放置另一个循环?也许您可以使用Python获取日期,并创建一个全局变量,然后在print
语句之后,您可以将变量设置为当前日期,咖啡将检查它是否已经发送,这样它一天不会执行超过一次
import datetime
# This Gets The Day Of The Month
todaysDateNumber = int(datetime.datetime.now().strftime("%d"))
dateNumberTradeSent = 0
if todaysDateNumber == dateNumberTradeSent:
print("The API has already been used once today, try again tomorrow!")
return
else:
# Call Your Trade Sending Code Here
# After The Print Statement That Shows That The Trade Was Sent:
global dateNumberTradeSent
dateNumberTradeSent = int(datetime.datetime.now().strftime("%d"))
哪里是
main()
?此代码不起作用。请生成一个main(),这是进一步向上的代码。我只提供了需要帮助的部分代码。请阅读我提供的链接。非常重要。谢谢。我已经编辑并包含了完整的脚本。当然,我已经用多个X替换了我的api密钥和密码。也许,但是有没有办法改用poloniex服务器时间呢?因为那是我需要的时间。我不想让它进行第二次交易,直到它正好达到午夜poloniex服务器时间。这可能提供了需要的东西:为了让事情更容易理解,我用完整的脚本更新了这个问题。