diff --git a/.gitignore b/.gitignore
index dd16f34..40632ea 100755
--- a/.gitignore
+++ b/.gitignore
@@ -3,7 +3,6 @@
*.exe
*.db
bin/
-data/
spot/
diff --git a/cmd/main.go b/cmd/main.go
index 270192e..2fc90c7 100755
--- a/cmd/main.go
+++ b/cmd/main.go
@@ -1,7 +1,6 @@
package main
import (
-<<<<<<< HEAD
// "v1/pkg/analytics/metrics"
@@ -9,32 +8,19 @@ import (
// "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 {
@@ -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()
// 終了メッセージを表示
@@ -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("メイン関数終了")
}
@@ -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
diff --git a/go.mod b/go.mod
index 626d3ef..c57157c 100755
--- a/go.mod
+++ b/go.mod
@@ -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
@@ -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
@@ -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
diff --git a/go.sum b/go.sum
index fe08624..b5c360e 100755
--- a/go.sum
+++ b/go.sum
@@ -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=
@@ -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=
diff --git a/pkg/chart/chart.go b/pkg/chart/chart.go
new file mode 100644
index 0000000..eddd1db
--- /dev/null
+++ b/pkg/chart/chart.go
@@ -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)
+}
diff --git a/pkg/chart/html/bar.html b/pkg/chart/html/bar.html
new file mode 100644
index 0000000..b8703d4
--- /dev/null
+++ b/pkg/chart/html/bar.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+ Awesome go-echarts
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pkg/data/data.go b/pkg/data/data.go
new file mode 100755
index 0000000..6a26bfc
--- /dev/null
+++ b/pkg/data/data.go
@@ -0,0 +1,86 @@
+package data
+
+import (
+ "encoding/csv"
+ "fmt"
+ "io"
+ "os"
+ "path/filepath"
+)
+
+// type Candle struct {
+// AssetName string
+// Duration time.Duration
+// Time time.Time
+// //CSVのデータ用
+// Date string
+// Open float64
+// Close float64
+// High float64
+// Low float64
+// Volume float64
+// }
+
+func main() {
+
+ //銘柄の一覧リスト
+ // assets := []string{"BTCUSDT", "ETHUSDT", "SOLUSDT", "AVAXUSDT", "MATICUSDT", "ATOMUSDT", "UNIUSDT", "ARBUSDT", "OPUSDT", "PEPEUSDT", "SEIUSDT", "SUIUSDT", "TIAUSDT", "WLDUSDT", "XRPUSDT", "NEARUSDT", "DOTUSDT"}
+ // ディレクトリ内のすべてのCSVファイルを見つける
+ files, err := filepath.Glob("./monthly/klines/SOLUSDT/15m/*.csv")
+ if err != nil {
+ fmt.Println("ファイル検索エラー:", err)
+ return
+ }
+
+ // 出力ファイルを作成する
+ outFile, err := os.Create("SOLUSDT_15m.csv")
+ if err != nil {
+ fmt.Println("出力ファイル作成エラー:", err)
+ return
+ }
+ defer outFile.Close()
+
+ writer := csv.NewWriter(outFile)
+ //関数が終了するときに、全てのデータを書き込む
+ defer writer.Flush()
+
+ // ファイルをループして読み込む
+ for _, file := range files {
+ fmt.Println("処理中のファイル:", file)
+
+ // 入力ファイルを開く
+ inFile, err := os.Open(file)
+ if err != nil {
+ fmt.Println("ファイルオープンエラー:", err)
+ continue
+ }
+
+ reader := csv.NewReader(inFile)
+
+ // ヘッダーをスキップ
+ if _, err := reader.Read(); err != nil {
+ fmt.Println("ヘッダー読み込みエラー:", err)
+ inFile.Close()
+ continue
+ }
+
+ // CSVデータを読み込み、出力ファイルに書き込む
+ for {
+ record, err := reader.Read()
+ if err == io.EOF {
+ break
+ }
+ if err != nil {
+ fmt.Println("レコード読み込みエラー:", err)
+ break
+ }
+
+ if err := writer.Write(record); err != nil {
+ fmt.Println("レコード書き込みエラー:", err)
+ break
+ }
+ }
+
+ inFile.Close()
+ }
+}
diff --git a/pkg/data/get_klinedata.go b/pkg/data/get_klinedata.go
new file mode 100644
index 0000000..7278bfa
--- /dev/null
+++ b/pkg/data/get_klinedata.go
@@ -0,0 +1,159 @@
+package data
+
+import (
+ "database/sql"
+ "fmt"
+ "log"
+
+ _ "github.com/mattn/go-sqlite3"
+)
+
+type Kline struct {
+ Date string
+ Open float64
+ High float64
+ Low float64
+ Close float64
+ Volume float64
+}
+
+type HLC struct {
+ High float64
+ Low float64
+ Close float64
+}
+
+type OHLC struct {
+ Open float64
+ High float64
+ Low float64
+ Close float64
+}
+
+type CLOSE struct {
+ Close float64
+}
+
+// 課題 GetDataを引数でAssetnameとDurationを受け取って、他のインディケーターでも使えるようにする
+
+func GetHLCData(assetName string, duration string) []HLC {
+ db, err := sql.Open("sqlite3", "db/kline.db")
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer db.Close()
+
+ query := fmt.Sprintf("SELECT High, Low, Close FROM %s_%s", assetName, duration)
+ rows, err := db.Query(query)
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer rows.Close()
+
+ var hlc []HLC
+ for rows.Next() {
+ var k HLC
+ err := rows.Scan(&k.High, &k.Low, &k.Close)
+ if err != nil {
+ log.Fatal(err)
+ }
+ hlc = append(hlc, k)
+ // fmt.Println(hlc)
+ }
+ if err := rows.Err(); err != nil {
+ log.Fatal(err)
+ }
+ return hlc
+}
+
+func GetOHLCData(assetName string, duration string) []OHLC {
+ db, err := sql.Open("sqlite3", "db/kline.db")
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer db.Close()
+
+ query := fmt.Sprintf("SELECT Open,High, Low, Close FROM %s_%s", assetName, duration)
+ rows, err := db.Query(query)
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer rows.Close()
+
+ var ohlc []OHLC
+ for rows.Next() {
+ var k OHLC
+ err := rows.Scan(&k.Open, &k.High, &k.Low, &k.Close)
+ if err != nil {
+ log.Fatal(err)
+ }
+ ohlc = append(ohlc, k)
+ // fmt.Println(hlc)
+ }
+ if err := rows.Err(); err != nil {
+ log.Fatal(err)
+ }
+
+ return ohlc
+}
+
+func GetKlineCData(assetName string, duration string) []Kline {
+ db, err := sql.Open("sqlite3", "db/kline.db")
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer db.Close()
+
+ query := fmt.Sprintf("SELECT * Close FROM %s_%s", assetName, duration)
+ rows, err := db.Query(query)
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer rows.Close()
+
+ var kline []Kline
+ for rows.Next() {
+ var k Kline
+ err := rows.Scan(&k.Date, &k.Open, &k.High, &k.Low, &k.Close, &k.Volume)
+ if err != nil {
+ log.Fatal(err)
+ }
+ kline = append(kline, k)
+ // fmt.Println(hlc)
+ }
+ if err := rows.Err(); err != nil {
+ log.Fatal(err)
+ }
+ return kline
+}
+
+func GetCloseData(assetName string, duration string) []CLOSE {
+ db, err := sql.Open("sqlite3", "db/kline.db")
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer db.Close()
+
+ query := fmt.Sprintf("SELECT Close FROM %s_%s", assetName, duration)
+ rows, err := db.Query(query)
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer rows.Close()
+
+ var close []CLOSE
+ for rows.Next() {
+ var k CLOSE
+ err := rows.Scan(&k.Close)
+ if err != nil {
+ log.Fatal(err)
+ }
+ close = append(close, k)
+ // fmt.Println(hlc)
+ }
+ if err := rows.Err(); err != nil {
+ log.Fatal(err)
+ }
+ fmt.Println(close)
+ return close
+}
diff --git a/pkg/data/utils/csv_to_db.go b/pkg/data/utils/csv_to_db.go
new file mode 100755
index 0000000..e1777d3
--- /dev/null
+++ b/pkg/data/utils/csv_to_db.go
@@ -0,0 +1,283 @@
+package data
+
+import (
+ "encoding/csv"
+ "fmt"
+ "os"
+ "path/filepath"
+ "strconv"
+ "strings"
+ "time"
+)
+
+type Candle struct {
+ Assetname string //引数で与えられたpathの、最後から二番目の値を挿入する
+ Duration string //引数で与えられたpathの一番最後の値を挿入する
+ Date string //CSVファイルの一行目のタイムスタンプ
+ Open float64 //CSVファイル二行目の始値
+ High float64 //CSVファイル三行目の高値
+ Low float64 //CSVファイル四行目の安値
+ Close float64 //CSVファイル五行目行目の終値
+ Volume float64 //CSVファイル六行目のボリューム
+}
+
+type OHLCV struct {
+ Date string //CSVファイルの一行目のタイムスタンプをRFC3339に変換したもの
+ Open float64
+ High float64
+ Low float64
+ Close float64
+ Volume float64
+}
+
+type OHLCVSlice []OHLCV
+
+type AssetDurationData struct {
+ AssetName string
+ Duration string
+ Data OHLCVSlice
+}
+
+type OHLCVDB struct {
+ AssetName string
+ Duration string
+ Date string
+ Open float64
+ High float64
+ Low float64
+ Close float64
+ Volume float64
+}
+
+type AssetData map[string]map[string]OHLCVSlice
+
+type AssetDatas []AssetDurationData
+
+// CSVファイルがあるディレクトリのパスを全て取得する関数
+func GetRelativePaths() []string {
+ var root string = "./pkg/data/spot/monthly/klines"
+ var durations = []string{"1m", "30m", "4h", "15m"}
+
+ var paths []string
+ err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
+ if err != nil {
+ return err
+ }
+
+ // 時間間隔が含まれる場合のみ追加
+ if info.IsDir() {
+ for _, duration := range durations {
+ if strings.Contains(path, duration) {
+ paths = append(paths, path)
+ break
+ }
+ }
+ }
+
+ return nil
+
+ })
+ if err != nil {
+ panic(err)
+ }
+
+ // フィルタリング
+ var filteredPaths []string
+ for _, path := range paths {
+ for _, duration := range durations {
+ if strings.Contains(path, duration) {
+ filteredPaths = append(filteredPaths, path)
+ break
+ }
+ }
+ }
+
+ // fmt.Println(filteredPaths)
+ return filteredPaths
+}
+
+var paths []string = GetRelativePaths()
+
+// 大量のpathを銘柄名でグループ化する関数
+func GroupAssetNamePaths(paths []string) map[string][]string {
+ groupedPaths := make(map[string][]string)
+ for _, path := range paths {
+ splitPath := strings.Split(path, "/")
+ if len(splitPath) < 2 {
+ continue
+ }
+ key := splitPath[len(splitPath)-2]
+ groupedPaths[key] = append(groupedPaths[key], path)
+ }
+ return groupedPaths
+}
+
+// 呼び出し方
+// groupedPaths := groupPaths(paths)
+// for key, paths := range groupedPaths {
+// fmt.Printf("{%s: %v}\n", key, paths)
+
+func reverse(s []OHLCV) []OHLCV {
+ reversed := make([]OHLCV, len(s))
+ copy(reversed, s)
+
+ for i, j := 0, len(reversed)-1; i < j; i, j = i+1, j-1 {
+ reversed[i], reversed[j] = reversed[j], reversed[i]
+ }
+
+ return reversed
+}
+
+// 引数で受け取った銘柄名と期間に基づいて、OHLCVを出力する関数。呼び出し元でfo文を使うことで、全てのデータを取得するようにする。
+
+// func LoadOHLCV(data map[string][]string, assetNames []string, durations []string) (AssetDatas, error) {
+
+// var result AssetDatas
+// db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
+// if err != nil {
+// return nil, err
+// }
+
+// db.AutoMigrate(&OHLCVDB{})
+
+// for _, paths := range data {
+// for _, path := range paths {
+// asset := filepath.Base(filepath.Dir(path))
+// dur := filepath.Base(path)
+// if contains(assetNames, asset) && contains(durations, dur) {
+// err := filepath.Walk(path, func(path string, info os.FileInfo, err error) error {
+// if err != nil {
+// return err
+// }
+// if !info.IsDir() {
+// file, err := os.Open(path)
+// if err != nil {
+// return err
+// }
+// defer file.Close()
+// reader := csv.NewReader(file)
+// lines, err := reader.ReadAll()
+// if err != nil {
+// return err
+// }
+// var ohlcvData OHLCVSlice
+// for _, line := range lines {
+// timestampMillis, _ := strconv.ParseInt(line[0], 10, 64)
+// timestamp := time.Unix(timestampMillis/1000, 0)
+// date := timestamp.Format(time.RFC3339)
+// open, _ := strconv.ParseFloat(line[1], 64)
+// high, _ := strconv.ParseFloat(line[2], 64)
+// low, _ := strconv.ParseFloat(line[3], 64)
+// close, _ := strconv.ParseFloat(line[4], 64)
+// volume, _ := strconv.ParseFloat(line[5], 64)
+// ohlcv := OHLCV{
+// Date: date,
+// Open: open,
+// High: high,
+// Low: low,
+// Close: close,
+// Volume: volume,
+// }
+// ohlcvData = append(ohlcvData, ohlcv)
+
+// // Save to DB
+// db.Create(&OHLCVDB{AssetName: asset, Duration: dur, Date: date, Open: open, High: high, Low: low, Close: close, Volume: volume})
+// }
+// ohlcvData = reverse(ohlcvData)
+// result = append(result, AssetDurationData{AssetName: asset, Duration: dur, Data: ohlcvData})
+// }
+// return nil
+// })
+// if err != nil {
+// return nil, err
+// }
+// }
+// }
+// }
+// defer fmt.Println("終了")
+// return result, nil
+
+// }
+
+func LoadOHLCV(data map[string][]string, assetNames []string, durations []string) (AssetDatas, error) {
+
+ var result AssetDatas
+
+ for _, paths := range data {
+ for _, path := range paths {
+ asset := filepath.Base(filepath.Dir(path))
+ dur := filepath.Base(path)
+ if contains(assetNames, asset) && contains(durations, dur) {
+ err := filepath.Walk(path, func(path string, info os.FileInfo, err error) error {
+ if err != nil {
+ return err
+ }
+ if !info.IsDir() {
+ file, err := os.Open(path)
+ if err != nil {
+ return err
+ }
+ defer file.Close()
+ reader := csv.NewReader(file)
+ lines, err := reader.ReadAll()
+ if err != nil {
+ return err
+ }
+ var ohlcvData OHLCVSlice
+ for _, line := range lines {
+ timestampMillis, _ := strconv.ParseInt(line[0], 10, 64)
+ timestamp := time.Unix(timestampMillis/1000, 0)
+ date := timestamp.Format(time.RFC3339)
+ open, _ := strconv.ParseFloat(line[1], 64)
+ high, _ := strconv.ParseFloat(line[2], 64)
+ low, _ := strconv.ParseFloat(line[3], 64)
+ close, _ := strconv.ParseFloat(line[4], 64)
+ volume, _ := strconv.ParseFloat(line[5], 64)
+ ohlcv := OHLCV{
+ Date: date,
+ Open: open,
+ High: high,
+ Low: low,
+ Close: close,
+ Volume: volume,
+ }
+ ohlcvData = append(ohlcvData, ohlcv)
+
+ }
+ ohlcvData = reverse(ohlcvData)
+ result = append(result, AssetDurationData{AssetName: asset, Duration: dur, Data: ohlcvData})
+ }
+ return nil
+ })
+ if err != nil {
+ return nil, err
+ }
+ }
+ }
+ }
+ defer fmt.Println("CSVデータの読み込み終了")
+ return result, nil
+
+}
+
+func contains(slice []string, str string) bool {
+ for _, v := range slice {
+ if v == str {
+ return true
+ }
+ }
+ return false
+}
+
+//呼び出し方サンプル
+// asset_data, err := data.LoadOHLCV(groupedPaths, "BTCUSDT", "1m")
+// if err != nil {
+// log.Fatalf("Error loading OHLCV data: %v", err)
+// }
+
+// for asset, ohlcvData := range assetData {
+// for dur, ohlcv := range ohlcvData {
+// fmt.Printf("Asset: %s, Duration: %s, OHLCV: %+v\n", asset, dur, ohlcv)
+// }
+// }
+// }
diff --git a/pkg/data/utils/dbpush.go b/pkg/data/utils/dbpush.go
new file mode 100755
index 0000000..ffa9d2c
--- /dev/null
+++ b/pkg/data/utils/dbpush.go
@@ -0,0 +1,80 @@
+package data
+
+import (
+ "database/sql"
+ "fmt"
+ "log"
+ "sort"
+ "time"
+
+ _ "github.com/mattn/go-sqlite3"
+)
+
+// DBに接続する関数
+func ConnectDB(dbname string) (*sql.DB, error) {
+ // DBファイルが存在しない場合は新規作成される
+ db, err := sql.Open("sqlite3", dbname)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ return db, nil
+}
+
+// DBファイルが存在しない場合は新規作成される
+
+// AssetDatas型のデータをDBに保存する関数
+func SaveAssetDatas(db *sql.DB, assetDatas AssetDatas) error {
+
+ // トランザクションを開始
+ tx, err := db.Begin()
+ if err != nil {
+ return err
+ }
+ // トランザクションの終了を遅延実行
+ defer tx.Commit()
+
+ // AssetDatas型のデータをループで処理
+ for _, assetData := range assetDatas {
+
+ // データを日付でソート
+ sort.Slice(assetData.Data, func(i, j int) bool {
+ iDate, _ := time.Parse(time.RFC3339, assetData.Data[i].Date)
+ jDate, _ := time.Parse(time.RFC3339, assetData.Data[j].Date)
+ return iDate.Before(jDate)
+ })
+
+ // テーブル名をAssetNameとDurationの組み合わせで作成
+ tableName := assetData.AssetName + "_" + assetData.Duration
+ // テーブルが存在しない場合は作成するSQL文を準備
+ createTableSQL := fmt.Sprintf(`CREATE TABLE IF NOT EXISTS %s (
+ Date TEXT PRIMARY KEY,
+ Open REAL,
+ High REAL,
+ Low REAL,
+ Close REAL,
+ Volume REAL
+ )`, tableName)
+ // SQL文を実行
+ _, err := tx.Exec(createTableSQL)
+ if err != nil {
+ return err
+ }
+ // データを挿入するSQL文を準備
+ insertSQL := fmt.Sprintf(`INSERT OR IGNORE INTO %s (
+ Date, Open, High, Low, Close, Volume
+ ) VALUES (?, ?, ?, ?, ?, ?)`, tableName)
+ // OHLCVSlice型のデータをループで処理
+ for _, ohlcv := range assetData.Data {
+ // SQL文にパラメータをバインドして実行
+ _, err := tx.Exec(insertSQL, ohlcv.Date, ohlcv.Open, ohlcv.High, ohlcv.Low, ohlcv.Close, ohlcv.Volume)
+ if err != nil {
+ return err
+ }
+ }
+ }
+ fmt.Println("データベースの更新が完了")
+ // エラーがなければコミットして終了
+ return nil
+
+}
diff --git a/pkg/db/db.go b/pkg/db/db.go
index 3a49c63..94ee8c6 100644
--- a/pkg/db/db.go
+++ b/pkg/db/db.go
@@ -1 +1 @@
-package db
+package databace
diff --git a/pkg/indicator/indicator.go b/pkg/indicator/indicator.go
index 809936b..cd09e88 100755
--- a/pkg/indicator/indicator.go
+++ b/pkg/indicator/indicator.go
@@ -1,8 +1,157 @@
package indicator
-<<<<<<< HEAD
-type indicators interface {
- GetData() []Kline
+import (
+ "database/sql"
+ "fmt"
+ "log"
+
+ _ "github.com/mattn/go-sqlite3"
+)
+
+type Kline struct {
+ Date string
+ Open float64
+ High float64
+ Low float64
+ Close float64
+ Volume float64
+}
+
+type HLC struct {
+ High float64
+ Low float64
+ Close float64
+}
+
+type OHLC struct {
+ Open float64
+ High float64
+ Low float64
+ Close float64
+}
+
+type CLOSE struct {
+ Close float64
+}
+
+// 課題 GetDataを引数でAssetnameとDurationを受け取って、他のインディケーターでも使えるようにする
+
+func GetHLCData(assetName string, duration string) []HLC {
+ db, err := sql.Open("sqlite3", "db/kline.db")
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer db.Close()
+
+ query := fmt.Sprintf("SELECT High, Low, Close FROM %s_%s", assetName, duration)
+ rows, err := db.Query(query)
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer rows.Close()
+
+ var hlc []HLC
+ for rows.Next() {
+ var k HLC
+ err := rows.Scan(&k.High, &k.Low, &k.Close)
+ if err != nil {
+ log.Fatal(err)
+ }
+ hlc = append(hlc, k)
+ // fmt.Println(hlc)
+ }
+ if err := rows.Err(); err != nil {
+ log.Fatal(err)
+ }
+ return hlc
+}
+
+func GetOHLCData(assetName string, duration string) []OHLC {
+ db, err := sql.Open("sqlite3", "db/kline.db")
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer db.Close()
+
+ query := fmt.Sprintf("SELECT Open,High, Low, Close FROM %s_%s", assetName, duration)
+ rows, err := db.Query(query)
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer rows.Close()
+
+ var ohlc []OHLC
+ for rows.Next() {
+ var k OHLC
+ err := rows.Scan(&k.Open, &k.High, &k.Low, &k.Close)
+ if err != nil {
+ log.Fatal(err)
+ }
+ ohlc = append(ohlc, k)
+ // fmt.Println(hlc)
+ }
+ if err := rows.Err(); err != nil {
+ log.Fatal(err)
+ }
+ return ohlc
+}
+
+func GetKlineCData(assetName string, duration string) []Kline {
+ db, err := sql.Open("sqlite3", "db/kline.db")
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer db.Close()
+
+ query := fmt.Sprintf("SELECT * Close FROM %s_%s", assetName, duration)
+ rows, err := db.Query(query)
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer rows.Close()
+
+ var kline []Kline
+ for rows.Next() {
+ var k Kline
+ err := rows.Scan(&k.Date, &k.Open, &k.High, &k.Low, &k.Close, &k.Volume)
+ if err != nil {
+ log.Fatal(err)
+ }
+ kline = append(kline, k)
+ // fmt.Println(hlc)
+ }
+ if err := rows.Err(); err != nil {
+ log.Fatal(err)
+ }
+ return kline
+}
+
+func GetCloseData(assetName string, duration string) []CLOSE {
+ db, err := sql.Open("sqlite3", "db/kline.db")
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer db.Close()
+
+ query := fmt.Sprintf("SELECT Close FROM %s_%s", assetName, duration)
+ rows, err := db.Query(query)
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer rows.Close()
+
+ var close []CLOSE
+ for rows.Next() {
+ var k CLOSE
+ err := rows.Scan(&k.Close)
+ if err != nil {
+ log.Fatal(err)
+ }
+ close = append(close, k)
+ // fmt.Println(hlc)
+ }
+ if err := rows.Err(); err != nil {
+ log.Fatal(err)
+ }
+ return close
}
-=======
->>>>>>> f2368b9e69670deb7cada702d1a07d48385c2c42
diff --git a/pkg/indicator/indicators/donchain.go b/pkg/indicator/indicators/donchain.go
index a3a64c3..031e8eb 100755
--- a/pkg/indicator/indicators/donchain.go
+++ b/pkg/indicator/indicators/donchain.go
@@ -1,13 +1,9 @@
package indicators
-<<<<<<< HEAD
import (
- "database/sql"
- "fmt"
- "log"
-
"github.com/markcheno/go-talib"
- _ "github.com/mattn/go-sqlite3"
+
+ "v1/pkg/indicator"
)
type Kline struct {
@@ -19,34 +15,38 @@ type Kline struct {
}
// 課題 GetDataを引数でAssetnameとDurationを受け取って、他のインディケーターでも使えるようにする
-func GetData() Kline {
- db, err := sql.Open("sqlite3", "db/kline.db")
- if err != nil {
- log.Fatal(err)
- }
- defer db.Close()
+// func GetData() Kline {
+// db, err := sql.Open("sqlite3", "db/kline.db")
+// if err != nil {
+// log.Fatal(err)
+// }
+// defer db.Close()
- rows, err := db.Query("SELECT high, low, close FROM BTCUSDT_4h")
- if err != nil {
- log.Fatal(err)
- }
- defer rows.Close()
-
- var hlc Kline
- for rows.Next() {
- err := rows.Scan(&hlc.High, &hlc.Low, &hlc.Close)
- if err != nil {
- log.Fatal(err)
- }
- fmt.Println(hlc)
- }
- if err := rows.Err(); err != nil {
- log.Fatal(err)
- }
- return hlc
-}
+// rows, err := db.Query("SELECT high, low, close FROM BTCUSDT_4h")
+// if err != nil {
+// log.Fatal(err)
+// }
+// defer rows.Close()
+
+// var hlc Kline
+// for rows.Next() {
+// err := rows.Scan(&hlc.High, &hlc.Low, &hlc.Close)
+// if err != nil {
+// log.Fatal(err)
+// }
+// fmt.Println(hlc)
+// }
+// if err := rows.Err(); err != nil {
+// log.Fatal(err)
+// }
+// return hlc
+// }
+
+var hlc = indicator.Kline{}
+
+var data = indicator.GetHLCData("BTCUSDT", "4h")
-func donchain(value int, GetData() Kline) ([]float64, []float64, []float64) {
+func donchain(value int, data []Kline) ([]float64, []float64, []float64) {
v := value
v2 := value / 2
@@ -70,5 +70,3 @@ func donchain(value int, GetData() Kline) ([]float64, []float64, []float64) {
return high, low, basis
}
-=======
->>>>>>> f2368b9e69670deb7cada702d1a07d48385c2c42
diff --git a/pkg/market/market.go b/pkg/market/market.go
index e89e87d..3c2f8ca 100755
--- a/pkg/market/market.go
+++ b/pkg/market/market.go
@@ -1,14 +1,9 @@
-<<<<<<< HEAD
package market
-=======
-package define_data
->>>>>>> f2368b9e69670deb7cada702d1a07d48385c2c42
import (
"time"
)
-<<<<<<< HEAD
// CSVデータを表す構造体の定義
type Data struct {
Timestamp int64 // タイムスタンプ
@@ -42,17 +37,4 @@ type Candle struct {
type Chart struct {
Candle Candle
-=======
-type Candle struct {
- AssetName string
- Duration time.Duration
- Time time.Time
- //CSVのデータ用
- Date string
- Open float64
- Close float64
- High float64
- Low float64
- Volume float64
->>>>>>> f2368b9e69670deb7cada702d1a07d48385c2c42
}
diff --git a/pkg/utils/get_candle_data.go b/pkg/utils/get_candle_data.go
index 5671a52..19a573d 100755
--- a/pkg/utils/get_candle_data.go
+++ b/pkg/utils/get_candle_data.go
@@ -11,12 +11,8 @@ import (
"v1/pkg/market"
)
-<<<<<<< HEAD
func GetCandleData(dir string) []market.Data {
var data []market.Data
-=======
-func GetCandleData(dir string) []Data {
->>>>>>> f2368b9e69670deb7cada702d1a07d48385c2c42
// ディレクトリ内のファイルのパスを取得する
files, err := os.ReadDir(dir)
if err != nil {
diff --git a/pkg/utils/get_csv_data/get_data.py b/pkg/utils/get_csv_data/get_data.py
index 9c61475..8bea5a8 100755
--- a/pkg/utils/get_csv_data/get_data.py
+++ b/pkg/utils/get_csv_data/get_data.py
@@ -1,15 +1,11 @@
from binance_historical_data import BinanceDataDumper
-ticker = ["BTCUSDT", "ETHUSDT", "SOLUSDT", "AVAXUSDT", "MATICUSDT", "ATOMUSDT", "UNIUSDT","ARBUSDT","OPUSDT","PEPEUSDT","SEIUSDT","SUIUSDT","TIAUSDT","WLDUSDT","XRPUSDT","NEARUSDT","DOTUSDT"]
-<<<<<<< HEAD
+ticker = ["BTCUSDT", "ETHUSDT", "SOLUSDT", "AVAXUSDT", "MATICUSDT", "ATOMUSDT", "UNIUSDT","ARBUSDT","OPUSDT","PEPEUSDT","SEIUSDT","SUIUSDT","TIAUSDT","WLDUSDT","XRPUSDT","NEARUSDT","DOTUSDT","APTUSDT"]
# ticker = ["BTCUSDT","ETHUSDT","BNBUSDT","XRPUSDT","ADAUSDT","SOLUSDT","DOTUSDT","UNIUSDT","LINKUSDT","LTCUSDT","BCHUSDT","XLMUSDT","ETCUSDT","MATICUSDT","THETAUSDT","VETUSDT","FILUSDT","TRXUSDT","EOSUSDT","LUNAUSDT","ATOMUSDT","AVAXUSDT","XTZUSDT","MIOTAUSDT","NEOUSDT","MKRUSDT","CAKEUSDT","KSMUSDT","IOTAUSDT","BTSUSDT","ALGOUSDT","EGLDUSDT","HBARUSDT","RUNEUSDT","ENJUSDT","SUSHIUSDT","SNXUSDT","ZILUSDT","GRTUSDT","RVNUSDT","NANOUSDT","ZECUSDT","QTUMUSDT","COMPUSDT","WAVESUSDT","HOTUSDT","NEOUSDT","STXUSDT","ARUSDT","ONEUSDT","OGNUSDT","ICPUSDT","NKNUSDT","DGBUSDT","CVCUSDT","TUSDUSDT","WRXUSDT","LTOUSDT","PERPUSDT","ANKRUSDT","DYDXUSDT","BITUSDT","MBOXUSDT","C98USDT","MASKUSDT","1INCHUSDT","AKROUSDT","ACMUSDT","PUNDIXUSDT","GHSTUSDT","GLMRUSDT","LOKAUSDT","APEUSDT","API3USDT","WOOUSDT","ENSUSDT","NEXOUSDT","GMTUSDT","NEBLUSDT","KDAUSDT","NEARUSDT","OCEANUSDT","LRCUSDT","CKBUSDT","XECUSDT","ARUSDT","CTKUSDT","TOMOUSDT","MLNUSDT","UNFIUSDT","RAYUSDT","XYMUSDT","FETUSDT","SKLUSDT","CVPUSDT","IMXUSDT","QNTUSDT","FLMUSDT","WAXPUSDT","TRBUSDT","ERNUSDT","SANDUSDT","REBUSDT","MANAUSDT","KNCUSDT","FIROUSDT","MCUSDT","LPTUSDT","SFPUSDT","DENTUSDT","ARPAUSDT","CELRUSDT","GTCUSDT","FXSUSDT","SUNUSDT","ALCXUSDT","CHRUSDT","DUSKUSDT","OMGUSDT","GNOUSDT","UMAUSDT","BNTUSDT","AUDIOUSDT","SUPERUSDT","PONDUSDT","XCNUSDT","BADGERUSDT","PEOPLEUSDT","COTIUSDT","ORNUSDT","DOGEUSDT","RLCUSDT","TRIBEUSDT","FUNUSDT","CRVUSDT","SAFEUSDT","CTSIUSDT","FRONTUSDT","SRMUSDT","LITUSDT","SFPUSDT","KEEPUSDT","ROSEUSDT","IOTXUSDT","BTTCUSDT","AXSUSDT","HNTUSDT","VLXUSDT","PROMUSDT","UFTUSDT","JSTUSDT","CFXUSDT","GLMUSDT","CKBUSDT","SPELLUSDT","BTCSTUSDT","NUUSDT","FORTHUSDT","SCRTUSDT","OGUSDT","RAREUSDT","C98USDT","HIGHUSDT","BALUSDT","SWINGBYUSDT","ATAUSDT","CLVUSDT","USTUSDT","FEIUSDT","POLSUSDT","BTSUSDT"]
-=======
->>>>>>> f2368b9e69670deb7cada702d1a07d48385c2c42
if __name__ == '__main__':
data_dumper = BinanceDataDumper(
-<<<<<<< HEAD
path_dir_where_to_dump="./",
asset_class="spot", # spot, um, cm
data_type="klines", # aggTrades, klines, trades
@@ -17,24 +13,9 @@
)
data_dumper.dump_data(
- tickers="ticker",
-=======
- path_dir_where_to_dump="/go_trading_bot/pkg/data",
- asset_class="spot", # spot, um, cm
- data_type="klines", # aggTrades, klines, trades
- data_frequency="12h",
- )
-
- data_dumper.dump_data(
- tickers=ticker,
->>>>>>> f2368b9e69670deb7cada702d1a07d48385c2c42
+ tickers="ARBUSDT",
date_start=None,
date_end=None,
is_to_update_existing=True,
tickers_to_exclude=["UST"],
)
-<<<<<<< HEAD
-=======
-
-
->>>>>>> f2368b9e69670deb7cada702d1a07d48385c2c42