如何将python脚本每天限制为1个API交易?

时间:2018-10-12 02:37:07

标签: python json api cryptocurrency poloniex

我正在整理一个python脚本以使用API​​在poloniex上进行交易,到目前为止,我已经在满足某些条件时进行了交易,但是我仍然需要它不再进行其余交易那天(我的整个脚本每60秒循环一次)。

到目前为止,我有这个脚本:

  componentDidUpdate(preProps) {
    if (this.props.value !== preProps.value) {
      this.move(this.props.value);
    }
  }

无论如何,在进行交易后,我需要确保60秒的睡眠后,除非进行了新的一天/交易完成的第二天,否则就不会进行第二次交易。 (我可以为此使用poloniex服务器时间吗?)

因此,如果它已经达到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&currencyPair=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) ,则表示已经进行了交易。但是,如何将其标记为当天或某天的交易,并在print (ordernumber)中将其用于下一个循环,以确保它不会再进行其他交易?

1 个答案:

答案 0 :(得分:-1)

也许您可以使用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"))