CCXT
Go Examples

SetMarketsFromExchange

SetMarketsFromExchange — CCXT Go code example.

package examples

import (
	"ccxt/go/ccxt"
	"fmt"
	"runtime"
	"runtime/debug"
)

func getMemoryUsage() float64 {
	// Force garbage collection to get accurate memory stats
	runtime.GC()
	debug.FreeOSMemory()

	var m runtime.MemStats
	runtime.ReadMemStats(&m)

	// Convert bytes to MB
	return float64(m.Alloc) / 1024 / 1024
}

func main() {
	fmt.Printf("Initial memory usage: %.2f MB\n", getMemoryUsage())

	// Create first binance exchange
	binance := ccxt.NewBinance(nil)
	fmt.Printf("Memory usage after creating binance: %.2f MB\n", getMemoryUsage())

	// Load markets for first exchange
	markets, err := binance.LoadMarkets()
	if err != nil {
		fmt.Printf("Failed to load markets for first exchange: %v\n", err)
		return
	}
	if markets == nil {
		fmt.Println("Failed to load markets for first exchange")
		return
	}
	fmt.Printf("Memory usage after loading markets: %.2f MB\n", getMemoryUsage())

	// Create second binance exchange
	binance2 := ccxt.NewBinance(nil)
	fmt.Printf("Memory usage after creating binance2: %.2f MB\n", getMemoryUsage())

	binance2.SetMarketsFromExchange(&binance.Exchange)
	fmt.Printf("Memory usage after setting markets from exchange: %.2f MB\n", getMemoryUsage())
	fmt.Printf("binance2.symbols loaded: %d\n", len(binance2.GetSymbols()))

	// Note: Go doesn't have explicit close methods like Python's async close
	// The garbage collector will handle cleanup
	fmt.Printf("Final memory usage: %.2f MB\n", getMemoryUsage())
}