Skip to content

Commit

Permalink
DBへのクエリ機能を実装
Browse files Browse the repository at this point in the history
  • Loading branch information
tktk4751 committed Jan 25, 2024
1 parent 37c8130 commit 2a22af2
Show file tree
Hide file tree
Showing 16 changed files with 940 additions and 195 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
*.exe
*.db
bin/
data/
spot/


Expand Down
144 changes: 37 additions & 107 deletions cmd/main.go
Original file line number Diff line number Diff line change
@@ -1,40 +1,26 @@
package main

import (
<<<<<<< HEAD

// "v1/pkg/analytics/metrics"

// "v1/pkg/config"
// "v1/pkg/db/models"
// p "v1/pkg/management/position"

// "fmt"
// "log"
// data "v1/pkg/db"
"fmt"
"log"
"v1/pkg/data"
"v1/pkg/utils"
databace "v1/pkg/db"
)

var path = "/home/lux/dev/go_trading_bot/pkg/data/spot/monthly/klines"
=======
"fmt"
"math/rand"

"v1/pkg/analytics/metrics"
"v1/pkg/config"
"v1/pkg/db/models"
p "v1/pkg/management/position"
"v1/pkg/utils"
)

var path = "pkg/data/spot/monthly/klines/OPUSDT/4h"
>>>>>>> f2368b9e69670deb7cada702d1a07d48385c2c42
// var path = "/home/lux/dev/go_trading_bot/pkg/data/spot/monthly/klines"

var close []float64 = utils.GetClosePrice(path)
// var close []float64 = utils.GetClosePrice(path)

var hloc = utils.GetCandleData(path)
// var hloc = utils.GetCandleData(path)

<<<<<<< HEAD
// var side = randam_side()

// func randam_side() string {
Expand All @@ -58,29 +44,31 @@ var hloc = utils.GetCandleData(path)
// }
func main() {

var assets_names []string = []string{"BTCUSDT", "MATICUSDT", "PEPEUSDT", "ARBUSDT", "ETHUSDT", "XRPUSDT", "OPUSDT", "ATOMUSDT", "UNIUSDT", "SEIUSDT", "SUIUSDT", "TIAUSDT", "DOTUSDT", "NEARUSDT", "WLDUSDT", "XRPUSDT"}
var durations []string = []string{"1m", "15m", "30m", "4h"}
paths := data.GetRelativePaths()

groupedPaths := data.GroupAssetNamePaths(paths)

asset_data, err := data.LoadOHLCV(groupedPaths, assets_names, durations)
if err != nil {
log.Fatalf("Error loading OHLCV data: %v", err)
}

// DBに接続する関数を呼び出し
db, err := data.ConnectDB("./db/kline.db")
if err != nil {
log.Fatal(err)
}
// DBをクローズするのを遅延実行
defer db.Close()
// データをDBに保存する関数を呼び出し
err = data.SaveAssetDatas(db, asset_data)
if err != nil {
log.Fatal(err)
}
databace.GetCloseData("BTCUSDT", "4h")

// var assets_names []string = []string{"BTCUSDT", "MATICUSDT", "PEPEUSDT", "ARBUSDT", "ETHUSDT", "XRPUSDT", "OPUSDT", "ATOMUSDT", "UNIUSDT", "SEIUSDT", "SUIUSDT", "TIAUSDT", "DOTUSDT", "NEARUSDT", "WLDUSDT", "XRPUSDT"}
// var durations []string = []string{"1m", "15m", "30m", "4h"}
// paths := data.GetRelativePaths()

// groupedPaths := data.GroupAssetNamePaths(paths)

// asset_data, err := data.LoadOHLCV(groupedPaths, assets_names, durations)
// if err != nil {
// log.Fatalf("Error loading OHLCV data: %v", err)
// }

// // DBに接続する関数を呼び出し
// db, err := data.ConnectDB("./db/kline.db")
// if err != nil {
// log.Fatal(err)
// }
// // DBをクローズするのを遅延実行
// defer db.Close()
// // データをDBに保存する関数を呼び出し
// err = data.SaveAssetDatas(db, asset_data)
// if err != nil {
// log.Fatal(err)
// }
// indicators.GetData()
// 終了メッセージを表示

Expand All @@ -90,12 +78,12 @@ func main() {

// }

for _, assetData := range asset_data {
fmt.Printf("Asset: %s, Duration: %s, OHLCV: %+v\n", assetData.AssetName, assetData.Duration, assetData.Data)
}
// for _, assetData := range asset_data {
// fmt.Printf("Asset: %s, Duration: %s, OHLCV: %+v\n", assetData.AssetName, assetData.Duration, assetData.Data)
// }

fmt.Println(asset_data)
// fmt.Println("メイン関数終了")
// fmt.Println(asset_data)
defer fmt.Println("メイン関数終了")

}

Expand Down Expand Up @@ -132,61 +120,3 @@ func main() {
// fmt.Println(winrate)
// fmt.Println(db)
// fmt.Println(hloc)
=======
var side = randam_side()

func randam_side() string {
// Declare a local variable result to store the random side
var result string

for i := 0; i < len(close); i++ {

n := rand.Intn(2)
// Assign "BUY" or "SELL" to result
if n == 0 {
result = "BUY"
} else {
// Otherwise, assign "SELL" to result
result = "SELL"
}

}
// Return the value of result
return result
}
func main() {

db := models.DbConnection

env := config.GetEnv()

var wr = metrics.Winrate_arg{
Totall_wintrade: 100,
Totall_trade: 200,
}
var winrate float64 = metrics.Calc_winrate(wr.Totall_wintrade, wr.Totall_trade)

w := 0.4044
r := 4.699
d := 0.33

position := p.PositionSizeCalculator{}

risk_size := position.Risk_size_calculator(w, r, d) * 100

sl := position.Stop_loss_price_calc(close, side)

// management := money_management.PositionSizeCalculator{}
// sl := management.Stop_loss_price_calc()

// Call the KellyCriterion function and print the result
fmt.Println(risk_size, "%")
fmt.Println(env.TradeDuration, "DURATION")
fmt.Println(sl, side, "EXITPRICE")
// fmt.Println(env.ApiKey)
fmt.Println(winrate)
fmt.Println(db)
fmt.Println(hloc)

}
>>>>>>> f2368b9e69670deb7cada702d1a07d48385c2c42
7 changes: 3 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ require (
golang.org/x/net v0.20.0
)

<<<<<<< HEAD
require (
github.com/gorilla/websocket v1.5.1
github.com/labstack/echo/v4 v4.11.4
Expand All @@ -17,6 +16,9 @@ require (
)

require (
github.com/go-echarts/go-echarts/v2 v2.3.3 // indirect
github.com/iamjinlei/go-tachart v0.0.0-20210729041122-12052a3368c8 // indirect
github.com/iamjinlei/go-tart v0.0.0-20210623083942-ceb57e98706b // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/labstack/gommon v0.4.2 // indirect
Expand All @@ -29,6 +31,3 @@ require (
golang.org/x/sys v0.16.0 // indirect
golang.org/x/text v0.14.0 // indirect
)
=======
require github.com/gorilla/websocket v1.5.1
>>>>>>> f2368b9e69670deb7cada702d1a07d48385c2c42
34 changes: 34 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/go-echarts/go-echarts/v2 v2.3.3 h1:uImZAk6qLkC6F9ju6mZ5SPBqTyK8xjZKwSmwnCg4bxg=
github.com/go-echarts/go-echarts/v2 v2.3.3/go.mod h1:56YlvzhW/a+du15f3S2qUGNDfKnFOeJSThBIrVFHDtI=
github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY=
github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY=
github.com/iamjinlei/go-tachart v0.0.0-20210729041122-12052a3368c8 h1:H5kOh2IkewOq8rhT45eAgXAntN870QpomwnmCohEtbo=
github.com/iamjinlei/go-tachart v0.0.0-20210729041122-12052a3368c8/go.mod h1:T8ypfvEbb7q1C/Sbu/KtZ4ANa0z7RRFyTBghcmQcWCE=
github.com/iamjinlei/go-tart v0.0.0-20210623083942-ceb57e98706b h1:KfgXYALdIQOs1IQNUDzwBu3SM+3eNUR3T0C6sl626fU=
github.com/iamjinlei/go-tart v0.0.0-20210623083942-ceb57e98706b/go.mod h1:30Qg94n/KqLWfDL2OCY77Z1uNrY5DK9Oe0DyftSn8IU=
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
Expand All @@ -23,28 +30,55 @@ github.com/mattn/go-sqlite3 v1.14.19 h1:fhGleo2h1p8tVChob4I9HpmVFIAkKGpiukdrgQbW
github.com/mattn/go-sqlite3 v1.14.19/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc=
golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c=
golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo=
golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU=
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gorm.io/driver/sqlite v1.5.4 h1:IqXwXi8M/ZlPzH/947tn5uik3aYQslP9BVveoax0nV0=
Expand Down
36 changes: 36 additions & 0 deletions pkg/chart/chart.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package chart

import (
"math/rand"
"os"

"github.com/go-echarts/go-echarts/v2/charts"
"github.com/go-echarts/go-echarts/v2/opts"
)

// generate random data for bar chart
func generateBarItems() []opts.BarData {
items := make([]opts.BarData, 0)
for i := 0; i < 7; i++ {
items = append(items, opts.BarData{Value: rand.Intn(300)})
}
return items
}

func main() {
// create a new bar instance
bar := charts.NewBar()
// set some global options like Title/Legend/ToolTip or anything else
bar.SetGlobalOptions(charts.WithTitleOpts(opts.Title{
Title: "My first bar chart generated by go-echarts",
Subtitle: "It's extremely easy to use, right?",
}))

// Put data into instance
bar.SetXAxis([]string{"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"}).
AddSeries("Category A", generateBarItems()).
AddSeries("Category B", generateBarItems())
// Where the magic happens
f, _ := os.Create("pkg/chart/html/bar.html")
bar.Render(f)
}
33 changes: 33 additions & 0 deletions pkg/chart/html/bar.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Awesome go-echarts</title>
<script src="https://go-echarts.github.io/go-echarts-assets/assets/echarts.min.js"></script>
</head>

<body>
<div class="container">
<div class="item" id="QctvNRkYxhXp" style="width:900px;height:500px;"></div>
</div>

<script type="text/javascript">
"use strict";
let goecharts_QctvNRkYxhXp = echarts.init(document.getElementById('QctvNRkYxhXp'), "white");
let option_QctvNRkYxhXp = {"animation":true,"color":["#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#3ba272","#fc8452","#9a60b4","#ea7ccc"],"legend":{"show":true,"type":""},"series":[{"name":"Category A","type":"bar","smooth":false,"connectNulls":false,"showSymbol":false,"waveAnimation":false,"renderLabelForZeroData":false,"selectedMode":false,"animation":false,"data":[{"value":206},{"value":166},{"value":191},{"value":249},{"value":237},{"value":173},{"value":94}]},{"name":"Category B","type":"bar","smooth":false,"connectNulls":false,"showSymbol":false,"waveAnimation":false,"renderLabelForZeroData":false,"selectedMode":false,"animation":false,"data":[{"value":219},{"value":289},{"value":277},{"value":279},{"value":190},{"value":41},{"value":272}]}],"title":{"text":"My first bar chart generated by go-echarts","subtext":"It's extremely easy to use, right?"},"tooltip":{"show":false},"xAxis":[{"data":["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]}],"yAxis":[{}]}
;

let action_QctvNRkYxhXp = {"areas":{},"type":""}
;

goecharts_QctvNRkYxhXp.setOption(option_QctvNRkYxhXp);
goecharts_QctvNRkYxhXp.dispatchAction(action_QctvNRkYxhXp);
</script>

<style>
.container {margin-top:30px; display: flex;justify-content: center;align-items: center;}
.item {margin: auto;}
</style>
</body>
</html>
Loading

0 comments on commit 2a22af2

Please sign in to comment.