仮想通貨自動売買システム ~注文編~
目次
仮想通貨自動売買システム ~注文編~
本記事では、仮想通貨を自動売買するシステム構築に向けて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を用いて仮想通貨の注文を出すことができました。 この調子で少しずつ不労所得システムを構築しましょう。