在本指南中,我们将介绍API的一些核心功能,以帮助您启动和运行。本指南假设您已经启用了Haasonline实例的LocalAPI功能。
# 要求
python 3.6+
virtualenv
Haasonline Trading Platform 3.1.14+
# 设置我们的环境
我们要做的第一件事是设置一个虚拟环境用于我们的项目。首先我们将创建一个文件夹,然后从文件夹中创建一个虚拟环境。
```
From our favorite terminal on mac,linux, or windows
virtualenv --python=python3 .env
```
然后我们需要将环境更改为生成的环境
```
On Windows We Do
.env/Scripts/activate.bat
```
```
On linux/mac we do
source .env/bin/activate
```
在我们设置环境之后,我们想要安装haasomeapi依赖项
```
In our terminal we do
pip install haasomeapi
```
# 连接到Haasonline本地接口
现在我们已经有了库和环境设置,我们希望继续创建一个名为main.py的文件并保存。我们假设您将本地api ip设置为127.0.0.1,将端口设置为9000。
在文件内部添加以下行,忽略三个“>”
```
from haasomeapi.HaasomeClient import HaasomeClient
from haasomeapi.enums.EnumOrderType import EnumOrderType
from haasomeapi.enums.EnumCustomBotType import EnumCustomBotType
from haasomeapi.enums.EnumBotTradeAmount import EnumBotTradeAmount
haasomeClient = HaasomeClient("[http://127.0.0.1:9000](http://127.0.0.1:9000/)", "secretkeyhere")
```
我们在这里做的是导入我们的api库,然后创建一个到本地api的初始连接。我们可以通过在我们之前添加的三个代码下编写以下代码来验证连接和凭据输入是否正确。这将验证我们提供的密钥是否正确。如果抛出异常,那么我们知道ip和port没有正确设置。
```
try:
testCredsResult = haasomeClient.test_credentials()
if testCredsResult.result == EnumErrorCode.SUCCESS:
print("Connection Succesfull and Secret Is Correct")
else:
print("Connection Failed but Ip and Port are correct")
except:
print("Connection Failed - Check Ip and Port)
```
# The HaasomeClientResponse Class
在我们继续之前,我们需要理解,与普通库不同,此库中的函数不会直接返回其对象。相反,他们都返回HaasomeClientResponse。该类包含以下定义。但最重要的是错误代码字段和结果字段。结果可以是任何类,因此请确保根据函数返回的文档说明来处理它。
```
class HaasomeClientResponse:
""" Standard Haas API Response Object
Contains the Haas Local API Response
:param errorCode: :class:~haasomeapi.enums.EnumErrorCode: Error Code Returned if any
:param errorMessage: str: Error message returned from the server if any
:param result: any: Can contain anything so check functiona definition
"""
def init(self, errorcode: EnumErrorCode, errormessage: str, result):
self.errorCode: EnumErrorCode = errorcode
self.errorMessage: str = errormessage
self.result = result
```
# 获取可用帐户并使用一个
现在我们需要做的是获取所有激活帐户的列表并选择要使用的帐户。为简单起见,我们将使用返回列表中第一个的任何内容。我们可以通过以下方式实现这一目标
```
Get a dict of all enabled accounts
accounts = haasomeClient.accountDataApi.get_enabled_accounts()
Display our current accounts
print (accounts.result)
Select the First Guid
accountGuid = accounts.keys[0]
```
# 执行简单的现货交易
现在让我们继续并在binance上执行一个简单的买卖订单(我们假设我们选择的accountguid是一个binance帐户)。参数的格式为(ACCOUNT_GUID,PRIMARY_COIN,SECONDARY_COIN,PRICE,AMOUNT)。这些函数将返回模板guid。重要的是要注意,在Haasonline订单中有一个名为“Template”的父类,因此所有订单实际上都是模板。
```
Place a spot buy order
spotBuy = haasomeClient.tradeApi.place_spot_buy_order(accountGuid, "BNB", "BTC", 0.0020852, 20)
Place a spot sell order
spotSell = haasomeClient.tradeApi.place_spot_sell_order(accountguid, "BNB", "BTC", 0.0020852, 20)
```
# 检查我们的订单状态¶
我们已经创建了基本订单,但现在我们需要检查订单的状态。我们有几种方法可以解决这个问题。首先,我们可以获得所有账户上所有未结订单的清单,或查看未结订单状态。
```
Get All Open Orders
allOrders = haasome.accountDataApi.get_all_open_orders()
Get Open Orders From account
orders = haasome.accountDataApi.get_open_orders(accountguid)
Get the order status specifically
orderStatus = haasome.accountDataApi.get_template_status(spotBuy.result)
Then we check to see if the order is completed
if orderStatus.result == EnumOrderStatus.COMPLETED:
print("Order Completed")
```
# 创建一个剥头皮机器人
本快速入门指南的最后一部分将向您展示如何创建和回测基本的剥头皮机器人并对其进行回测。首先我们需要创建一个scalper bot来执行此操作,我们从customBotApi调用函数new_custom_bot。参数的格式为(ACCOUNT_GUID,BOT_TYPE,BOT_NAME,PRIMARY_CURRENCY,SECONDARY_CURRENCY,CONTRACT_NAME(可选))
```
newScalper = haasomeClient.customBotApi.new_custom_bot(accountGuid, EnumCustomBotType.SCALPER_BOT,"SuperCoolTutorialBot", "BNB", "BTC", "")
```
# 配置新的剥头皮机器人
现在我们已经创建了一个新的scalper bot,我们将要配置它,这可以使用customBotApi中的setup_scalper_bot函数完成。该函数的格式为(ACCOUNT_GUID,BOT_GUID,BOT_NAME,PRIMARY_CURRENCY,SECONDARY_CURRENCY,TEMPLATE_GUID,CONTRACT_NAME,LEVERAGE,AMOUNT_TYPE,TRADE_AMOUNT,POSITION,FEE,TARGET_PERCENTAGE,SAFETY_THRESHOLD)
```
newScalperEdited = haasomeClient.customBotApi.setup_scalper_bot(accountGuid, newScalper.result.guid, [newScalper.result.name](http://newscalper.result.name/), newScalper.result.primaryCurrency, newScalper.result.secondaryCurrency, "LOCKEDLIMITORDERGUID", "", 0.0, EnumBotTradeAmount.STATIC, 100, "BTC", 0.1, 1.0, 1.0)
```
# 激活剥头皮机器人
现在剩下要做的就是激活我们的scalper bot,我们可以使用customBotApi中的activate_custom_bot函数轻松完成。该函数的格式为(BOT_GUID,WITH_EXTRA)
```
isActivated = haasomeClient.customBotApi.activate_custom_bot(newScalper.result.guid, False)
```
# 获取机器人的状态
在机器人运行之后,我们偶尔会想要获取机器人的状态,它当前的ROI是什么等。为此,我们只需要一个新的机器人对象,它将包含本地api的所有这些信息,我们通过调用customBotApi中的get_custom_bot函数。该函数的格式为(BOT_GUID,BOT_TYPE)
```
newBotInfo = haasomeClient.customBotApi.get_custom_bot(newScalper.result.guid, EnumCustomBotType.SCALPER_BOT)
```
# 停用机器人
最后,我们要使用customBotApi中的deactivate_custom_bot函数停用机器人。该函数的格式为(BOT_GUID,WITH_EXTRA)
```
isDeactivated = haasomeClient.customBotApi.activate_custom_bot(newScalper.result.guid, False)
```
# 最后附注
希望这足以让您使用haasomeapi来控制您的Haasonline交易平台。HaasomeApi功能齐全,可实现haasonline local api目前提供的所有端点。我们可以使用api做更多的事情,你可以在文档中找到所有这些。