主页 > imtoken怎么转bc1地址 > 动手操作:使用 Python 构建加密货币交易模拟器,无需投入任何资金即可玩

动手操作:使用 Python 构建加密货币交易模拟器,无需投入任何资金即可玩

imtoken怎么转bc1地址 2023-04-07 05:59:42

大数据文摘作品

编译:王晓七、黄文昌、小宇

虽然我不是交易员,但我对加密货币交易非常感兴趣。但是,我不会在我什么都不知道的情况下盲目投资加密货币,所以我想在投资之前测试我的交易策略。

播音员:今天的道琼斯曲线是华盛顿天际线的形状(林肯纪念堂、华盛顿纪念碑、美国国会大厦)……(即股市表现异常)

而我的想法是搭建一个加密货币交易模拟器,让新手投资者无需投入任何资金也能学习和体验加密货币交易。在这一系列的研究中,我将向您展示如何构建这样一个交易模拟器

首先,我们需要将 2018 年 3 月 7 日至 2018 年 3 月 16 日期间加密货币的交易价格导入数据库。

在本练习中,我们将使用 Python 构建一个简单的加密货币交易模拟器,用户可以在其中投资加密货币并观察他的加密货币资产在接下来的 9 天内将如何变化。

目前,模拟器会给出用户资产的最佳退出价格,并与其原始投资价格进行比较,然后告诉用户最终的盈亏状态。接下来,我将介绍如何添加流通货币的价格监控、如何编写和测试交易策略、如何构建用户界面等等。

Github 库链接:

github.com/jamesfebin/CryptoTradingSimulator

数据库链接:

交易模拟器

drive.google.com/file/d/1OHhtrvOe-EWcX_8tipWo6tWYqkkYDkPw/view?usp=sharing

假代码

在编写代码之前,清楚我们接下来的每一步是至关重要的,否则我们在编程时会感到困惑。为了清楚起见,我们使用伪代码进行说明,这不是真正的代码,而是用我们自己的语言编写的思维导图。

步骤1: 欢迎用户
步骤2: 在数据库启动时,抓取2013年3月7日的加密货币价格
步骤3: 让用户选择一种货币并进行投资
步骤4: 接着,运行模拟器并显示未来9天里用户的加密货币价格走势
步骤5: 模拟器会给出该加密货币的最佳出仓价,并与用户投资时的资产进行对比,显示盈亏情况

我们不需要按照上面的步骤依次编写代码,我们可以根据自己的能力从最简单的步骤开始。随着模拟器功能的不断完善,我们的编程能力和信心也逐渐提高,从而完成整个项目。

本文代码开发环境为Python2.7。

首先交易模拟器,我们创建一个空的项目文件夹,例如:“CryptoSimulator”,然后下载加密货币价格的数据库并将其放在这个项目文件夹中。

数据库下载链接:

drive.google.com/file/d/1OHhtrvOe-EWcX_8tipWo6tWYqkkYDkPw/view?usp=sharing

接下来,创建一个名为“run.py”的新 py 文件

交易模拟器

欢迎页面

我们将创建一个简单的“欢迎”函数。这个功能不需要有太多的功能。它只需要输出一系列项目介绍,包括程序名称和程序功能介绍。换句话说,向用户问好。

def welcome():
   print(“Simple Crypto Trading Simulator”)
   print(“Hey Yo, you are back in time. It’s Wednesday, March 7, 2018 7:39 AM”)
   print(“Here are the crypto currencies you can invest.”)
   print(“Fetching prices … ”)

现在我们需要在 2018 年 3 月 7 日上午 7:39 获取加密货币价格。

因为我们的数据库是基于sqlite3的,所以在此之前我们还需要下载安装sqlite3库,可以通过下面的命令来实现。

pip install sqlite3

在run.py文件开头,需要导入sqlite3库,命令如下。

import sqlite3

现在,让我们编写代码来获取开头的价格数据并显示它。

数据库有以下列:时间戳(timestamp)、基础货币(first_leg)、报价货币(second_leg)、卖价(ask)、买价(bid)和交易所名称。

如果我们当前的货币对是“比特币和美元”(BTC/USD),那么基础货币是比特币(BTC),计价货币是美元(USD)。

交易模拟器

以下代码行用于抓取指定时间的价格数据。

connection = sqlite3.connect(‘./currency_monitor.db’)
cursor = connection.cursor()
query = “SELECT first_leg, ask FROM prices WHERE     timestamp=’1520408341.52' AND second_leg=’USD’;”    cursor.execute(query)
coinAskPrices = cursor.fetchall()

首先,我们遍历销售价格列表,删除重复项,将它们添加到名为 coin{} 的字典中,然后输出。

coins = {}
for coinAskPrice in coinAskPrices:
    if coinAskPrice[0] in coins:
        continue
    coins[coinAskPrice[0]] = {“price”:coinAskPrice[1], “curreny”:coinAskPrice[0]}
    print(“{} — ${} \n”.format(coinAskPrice[0], round(coinAskPrice[1],4)))
return coins

代码看不懂也别着急,下载整个包,运行,修改部分代码再运行,对比结果看看有什么不同,重复循环,慢慢你就开始了理解代码的含义。

现在,我们将以上部分代码组合成一个函数 fetchCoins(),结果如下:

现在价格显示功能已经完成,我们需要用户选择自己的交易币种和交易量,这需要创建一个inputBuy()函数来实现。

def inputBuy():
   print(“Select the crypto curreny you want to buy? \n”)
   curreny = raw_input(“”).upper()
   print(“That’s great. How much quantity you want to buy? \n”)
   quantity = float(raw_input(“”))
   return curreny, quantity

接下来,我们需要找出用户感兴趣的货币的价格。这个功能可以通过查询coins{}字典来实现。

交易模拟器

price = coins[currency][‘price’]

然后我们需要将返回的参数传递给模拟器。现在我们可以把上面的代码块组合起来放到main函数中。

到目前为止我们还没有创建runSimulation()函数,接下来的任务是创建一个名为“simulator.py”的py文件。

在创建 runSimulation() 函数之前,请导入以下库函数。

import sqlite3
import datetime

然后定义 runSimulation() 函数。

def runSimulation(boughtPrice, quantity, currency):
  valueThen = boughtPrice * quantity
  bestPrice, timestamp = fetchBestBidPriceFromDB(currency)
  bestValue = bestPrice * quantity
  priceDifference = (bestValue — valueThen)/float(valueThen) * 100

在这个函数中,我们先计算买入时总资产的价格,然后找到3月7日至3月16日之间的最佳卖出价,然后计算两者的差价并显示盈亏情况。

让我们编写一个 fetchBestBidPriceFromDB() 函数来找到最佳出价。

交易模拟器

def fetchBestBidPriceFromDB(currency):
   connection = sqlite3.connect(‘./currency_monitor.db’)
   cursor = connection.cursor()
   query = “SELECT max(bid),timestamp from prices WHERE first_leg=’{}’ and second_leg=’USD’ and timestamp> ‘1520408341.52’”.format(currency)
   cursor.execute(query)
   rows = cursor.fetchone()
   return rows[0], rows[1]

向 runSimulation() 函数添加几行以输出搜索结果。

print(“The best bid price for {} was ${} at {} \n”.format(currency, bestPrice, time))
if priceDifference>0:
     print(“Your total asset value is ${}, it has increase by {}% \n”.format(round(bestValue, 4), round(priceDifference,2)))
else:
     print(“Your total asset value is ${}, it has decreased by {} \n”.format(round(bestValue, 4), round(priceDifference,2)))

在这里,再次集成上面的代码块,结果如下:

现在整个程序基本完成了,但是我想加一个特效——就像电影里一样,字幕里的字母会一个一个的弹出来。

创建一个名为“drama.py”的文件并输入以下代码:

import time
import sys
def dramaticTyping(string):
   for char in string:
     sys.stdout.write(char)
     sys.stdout.flush()
     time.sleep(0.10)

现在,将此文件导入run.py 和simulator.py,并将print 函数替换为 DramaTyping 函数。

得到它!现在我们已经编写了加密货币交易模拟器的轻量版。

这里应该有掌声交易模拟器,谢谢!好戏才刚刚开始,接下来我们还有一系列工作要做,比如将加密货币交易模拟器和加密货币实时交易集成到一个API中,编码和测试交易策略,甚至考虑创建一个UI界面,等等等等,敬请期待~

原文链接:

hacknoon.com/how-to-build-a-simple-crypto-trading-simulator-part-1-4ccdddcd6b76