交易入門【零基礎入門教程】(四) - 知乎

咱們繼續上一篇的策略代碼進行詳解,本篇將介紹下單,函數和API。python

def initialize(context):         
           context.security = 'BTC/USDT.binance'         
           context.myaccount = context.get_account('myaccount')

def handle_data(context):         
           current_price = context.get_price(context.security)         
           context.myaccount.buy(context.security, current_price, 0.1)

(一)函數與API

函數是封裝好的,可重複使用的,用來實現某一特定功能的代碼段。函數使得代碼易於維護與交流,提升編寫策略的效率。編程

通俗的理解就是把一系列代碼指令包起來就是一個函數,起個名字就是函數名,以後用這個函數名,就能夠執行被包起來的一系列代碼指令了。app

Python語言自帶了許多內建函數,好比print(),能夠直接使用。你也能夠建立本身的函數,這叫自定義函數。例如以下就是定義了一個自定義的名叫handle_data的函數,在這個函數裏調用了vitu自帶的函數get_price()和buy()框架

def handle_data(context):         
           current_price = context.get_price(context.security)         
           context.myaccount.buy(context.security, current_price, 0.1)

get_price()和buy()的準確稱謂實際上是API(application programming interface,應用程序編程接口),你能夠理解爲vitu基於python封裝成的函數,你能夠在「幫助」中看到其餘的API。函數

(二)如何使用一個函數

在使用函數的時候,一般須要提供一些參數(也有可能不須要),函數根據參數執行一系列的函數做者寫好的操做,也會根據提供的參數返回結果區塊鏈

提供了一個參數context.security,執行了返回當前價格的操做 spa

current_price = context.get_price(context.security)

提供了三個參數context.security,current_price和0.1,執行了以當前價格買入0.1個context.security的操做 設計

context.myaccount.buy(context.security, current_price, 0.1)

提供了一個參數"你好",執行了打印"你好"的操做code

print("你好")

函數的功能多種多樣,須要參數和返回的結果都不一樣,因此具體怎麼用要看函數提供者的說明文檔,vitu的API文檔都在「幫助」裏,接下來以buy爲例講一下文檔怎麼看blog

在「幫助」->「策略框架」->「下單函數用法」,找到buy函數的說明,以下:

能夠看到buy函數能夠接受的參數有3個,分別是symbol,price,qty,這三個參數的名字和含義是函數做者設計的。你在使用的時候,將按照順序以此對應這三個參數,若是不按順序則須要提供參數, 例如:

context.myaccount.buy(qty=0.1, symbol=context.security, price=current_price)


buy的各個參數說明

  • symbol:標的代碼,數據類型要求是字符串,在vitu裏的規則爲Base Currency/Quote Currency.Exchange,例如「BTC/USDT.binance」,通常Base/Quote Currency用大寫,交易所爲小寫
  • price:限價單須要提供的當前價格
  • qty:交易數量

(三)自定義函數


Python定義函數使用def關鍵字,通常格式:

def 函數名稱(參數列表):     
           函數體


例如, 咱們設計一個計算收益率的函數,函數名稱爲ret,提供的參數是price和cost,返回收益率

def ret(price,cost):     
        return price/cost-1

你應該意識到,函數內部是相對獨立的,數據想進來要經過參數傳進來,想出去要經過返回值傳出去,函數從得到參數到返回值的過程當中所產生的數據與變量中沒經過返回值傳出去的,在函數運行結束後(即返回值後)都將被計算機釋放再也不存儲。若是想函數間通用某變量能夠考慮用以前講的全局變量放到context裏,還記得context.security的例子嗎?

經常使用的下單函數

vitu裏經常使用的下單函數有四個,咱們分別介紹一下基本用法
buy
函數釋義: 經過一個帳戶在指訂價格買入指定數量的指定數字資產。
函數用法:


#先配置帳戶 
context.account1 = context.get_account('account1')

#再用該帳戶買入 
context.account1.buy(symbol,price,qty)

sell
函數釋義: 經過一個帳戶在指訂價格賣出指定數量的指定數字資產。
函數用法:

#先配置帳戶 
context.account1 = context.get_account('account1')

#再用該帳戶賣出 
context.account1.sell(symbol,price,qty)

buy_pct
函數釋義: 經過一個帳戶在指訂價格買入指定百分比的指定數字資產。
函數用法:

#先配置帳戶 
context.account1 = context.get_account('account1')

#再用該帳戶買入 
context.account1.buy_pct(symbol,price,pct)

sell_pct
函數釋義: 經過一個帳戶在指訂價格賣出指定百分比的指定數字資產。
函數用法:

#先配置帳戶 
context.account1 = context.get_account('account1')

#再用該帳戶賣出 
context.account1.sell_pct(symbol,price,pct)


原文連接

Vitu.ai - 數據從不說慌 - 區塊鏈的世界也不例外

相關文章
相關標籤/搜索