仮想通貨自動売買システム ~注文編~

仮想通貨_1618848375.webp
目次

仮想通貨自動売買システム ~注文編~

本記事では、仮想通貨を自動売買するシステム構築に向けてAPIを使った注文の実装手順を解説しています。 過去記事で作り込んできたソースに注文に利用する構造体を追加し、bitflyer.goに注文を行う関数を実装します。 最後にTrade.goに全体像を書き、プログラムを実行することで注文を出すことができます。

このようにして、不労所得システムを構築していくことができます。(できたら良いなぁ)

関連する過去記事

過去の記事のコードをベースに機能を追加します。

bitFlyerのREALTIME APIを動かしてBitcoinの現在価格を取得する golangからbitflyer Lightning API呼び出して、保有資産の一覧を取得する

golangでiniファイルを読み込むとき用テンプレートプロジェクト golangでLogファイルを作成する方法

実装手順

ファイル構造

/
│  Config.ini
│  go.mod
│  go.sum
│  Trade.go
│─bitflyer
|   bitflyer.go
|   type.go
│─utils
|   logging.go
└─Config
    Config.go

type.go

過去記事で作り込んできたソースも随分膨らんできたので、ファイルに構造体を移動します。 過去定義した構造体に加え、注文に利用する構造体をコーディングします。

注文構造体

type Order struct {
    ID                     int     `json:"id"`
    ChildOrderID           string  `json:"child_order_id"`
    ProductCode            string  `json:"product_code"`
    Side                   string  `json:"side"`
    ChildOrderType         string  `json:"child_order_type"`
    Price                  int     `json:"price"`
    AveragePrice           int     `json:"average_price"`
    Size                   float64 `json:"size"`
    ChildOrderState        string  `json:"child_order_state"`
    ExpireDate             string  `json:"expire_date"`
    ChildOrderDate         string  `json:"child_order_date"`
    ChildOrderAcceptanceID string  `json:"child_order_acceptance_id"`
    OutstandingSize        int     `json:"outstanding_size"`
    CancelSize             int     `json:"cancel_size"`
    ExecutedSize           float64 `json:"executed_size"`
    TotalCommission        int     `json:"total_commission"`
    MinuteToExpire         int     `json:"minute_to_expire"`
    TimeInForce            string  `json:"time_in_force"`
}

注文の結果構造体

type ChildOrderAcceptanceOrder struct {
    ChildOrderAcceptanceID string `json:"child_order_acceptance_id"`
}

bitflyer.go

注文を行う関数を実装します。 内容としては過去記事と同じなので解説は割愛します。

func (api *APIClient) SendOrder(order *Order) (*ChildOrderAcceptanceOrder, error) {
    date, _ := json.Marshal(order)
    url := "me/sendchildorder"
    resp, _ := api.reqMessage("POST", url, map[string]string{}, date)
    var response ChildOrderAcceptanceOrder
    _ = json.Unmarshal(resp, &response)
    return &response, nil
}

Trade.go

まずはmain関数の全体像を書きます。

func main() {
    utils.LoggingSetting(config.Config.LogFile)
    apikey := config.Config.ApiKey
    secretKey := config.Config.ApiSecret
    productCode := config.Config.ProductCode
    apiClient := bitflyer.New(apikey, secretKey)

    order := &bitflyer.Order{
        ProductCode:    productCode,
        ChildOrderType: "LIMIT",
        Side:           "BUY",
        Price:          51,
        Size:           10,
        TimeInForce:    "GTC",
    }

    res, _ := apiClient.SendOrder(order)
    fmt.Println(res.ChildOrderAcceptanceID)
}

新規注文を出す Orderの内容はこちらを参考に設定します。

実行結果

このプログラムの実行するため、bitflyerに入金します。 入金が確認できたらこのプログラムを実行します。

注文前の状態 プログラムを実行した際にはこのように買い注文を入れることができていますね。

注文後の状態

まとめ

bitflyer Lightning APIを用いて仮想通貨の注文を出すことができました。 この調子で少しずつ不労所得システムを構築しましょう。

Related Post

> 仮想通貨自動売買システム ~注文編~
bitFlyer APIを用いた仮想通貨価格取得プログラムの実装
> 仮想通貨自動売買システム ~注文編~
golangからbitflyer Lightning API呼び出して、保有資産の一覧を取得する
> 仮想通貨自動売買システム ~注文編~
SMTPHogとGolangでメール送信アプリを作ろう
> 仮想通貨自動売買システム ~注文編~
爆速!GolangでJSONの記載から構造体を作る方法
> 仮想通貨自動売買システム ~注文編~
Golangでログファイルを作成する方法
> 仮想通貨自動売買システム ~注文編~
GolangでINIファイルを読み込む方法とテンプレートプロジェクトの作成

おすすめの商品

>