用Python投資加密貨幣:手機監控與自動下單 (Part 12)

thumbnail 6 6

我們上次已經寫好了「核心」程式,但什麼時候,才能執行這些程式呢?總共有兩種方式啟動程式:

  1. 一種是連上網監控
  2. 另一種是時間間格、自動下單(每4小時)

1. 連上網監控

我們可以用「新增觸發條件」來觸發,並且點選「API Gateway」:

selectTrigger 1
createGateway 1

最後會給你一個網址,用任何手機、筆電 連進去就可以了!

triggerUrl 1
results

2. 時間間格、自動下單

首先我們先將原本的 API Gateway 刪除,然後再增加新的 Trigger:每4小時執行一次!

addcron 1

這樣就會四小時執行一次了!

假如我們希望它四小時判斷多空與下單,可以將上一個單元的範例,做以下的修改:

  1. 新增 client 使用金鑰登入(可以到 Binance 申請)
  2. 做多時,要買入「BTCUSDT」
  3. 做空時,賣出「BTCUSDT」

以下的範例,在做空時,我們只單純的賣出,而不額外做空,因為我們現在是用現貨且無槓桿的交易帳戶,所以沒有辦法做空喔!
假如想要做BTC期貨,也可以參考官方的Margin Trading End Point

以下就是現貨範例:

import json
from binance.client import Client

def lambda_handler(event, context):
    
    ##########
    # Login #
    ##########
    
    # before:
    # client = Client()
    
    # after:
    PUBLIC = '<YOUR-PUBLIC-KEY>'
    SECRET = '<YOUR-SECRET-KEY>'
    QUANTITY = 0.0001

    client = Client(api_key=PUBLIC, api_secret=SECRET)
    
    ###################
    # historical data #
    ###################
    
    klines = client.get_historical_klines("BTCUSDT", Client.KLINE_INTERVAL_4HOUR, "two week ago")
    
    def sma(n):
        return sum([float(k[4]) for k in klines[-n-1:-1]])/n
    
    def prev_sma(n):
        return sum([float(k[4]) for k in klines[-n-2:-2]])/n
    
    sma60 = sma(65)
    sma5 = sma(5)
    
    psma60 = prev_sma(65)
    psma5 = prev_sma(5)

    ###################
    #      Trade      #
    ###################
    
    ret = ''
    
    if sma5 > sma60 and psma5 < psma60:
        ret = 'long'
        order = client.order_market_buy(
            symbol='BTCUSDT',
            quantity=QUANTITY)
        
    if sma5 < sma60 and psma5 > psma60:
        ret = 'short'
        order = client.order_market_sell(
            symbol='BTCUSDT',
            quantity=QUANTITY)
        
    if sma5 < sma60 and psma5 < psma60:
        ret = 'hold short'
    
    if sma5 > sma60 and psma5 > psma60:
        ret = 'hold long'

    # TODO implement
    return {
        'statusCode': 200,
        'body': json.dumps('btc-trading-signal: ' + ret)
    }

經過這12個單元,相信大家對於加密貨幣量化交易有初步的理解,大概瞭解如何建構一個自動化的交易系統!

你會發現,手刻一個交易系統,其實沒有很難,難的在於,如何「系統化」的建立一個多元的交易策略,研發多個策略 並統整起來,考驗大家撰寫策略、系統化的能力!

怕輸太多錢嗎?沒關係,因為加密貨幣可以切割至 10 的 8 次方!就算你有一百種不同的策略,也可以用300元台幣順利分散風險喔!所以不要再猶豫了,趕快來試試看吧!

如果喜歡我們的文章,也歡迎參考我們最新募資的線上課程「用 Python 理財:打造加密貨幣實戰策略」,在線上課程中,我們會更有系統、更完整地教您如何從無到有,打造10種加密貨幣實戰策略,並且能夠自動化雲端交易!有興趣的話,可以點此觀看課程介紹影片喔!

FinLab - 韓承佑

嗨大家好,我是韓承佑,FinLab創辦人,畢業於巴黎薩克雷大學資工博士,目前擔任臺灣量化交易協會 學術顧問、台北商業大學 創新育成中心 創業技術顧問與上市科技公司 量化交易顧問。當初,我喜歡寫程式、無意間因為軟體比賽接觸Fintech,從此開始了財經跟程式的學習之路。我們成立 FinLab 量化投資部落格,用自己研發的軟體,對台灣股市做大量快速的實驗。希望可以在量化投資的路上,當大家的「武器製造商」!