GEX
Public feedInitializing terminal
A community-maintained Go client for GEX Engine. Provides idiomatic Go interfaces with context support, structured error types, and WebSocket streaming via goroutines.
go get github.com/gexengine/gex-go
package main
import (
"context"
"fmt"
"log"
"os"
gex "github.com/gexengine/gex-go"
)
func main() {
client := gex.NewClient(gex.WithAPIKey(os.Getenv("GEX_API_KEY")))
ctx := context.Background()
// Fetch gamma exposure
result, err := client.GEX(ctx, "SPX")
if err != nil {
log.Fatal(err)
}
fmt.Printf("Total GEX: %d\n", result.Data.TotalGEX)
fmt.Printf("Regime: %s\n", result.Data.Regime)
fmt.Printf("Spot: %.2f\n", result.Meta.Spot)
}result, err := client.GEX(ctx, "SPX")
if err != nil {
log.Fatal(err)
}
fmt.Printf("Total GEX: %d\n", result.Data.TotalGEX)
fmt.Printf("Net GEX: %d\n", result.Data.NetGEX)
fmt.Printf("Call GEX: %d\n", result.Data.CallGEX)
fmt.Printf("Put GEX: %d\n", result.Data.PutGEX)levels, err := client.Levels(ctx, "SPX")
if err != nil {
log.Fatal(err)
}
fmt.Printf("Gamma Flip: %.2f\n", levels.Data.GammaFlip)
fmt.Printf("Put Wall: %.0f\n", levels.Data.PutWall)
fmt.Printf("Call Wall: %.0f\n", levels.Data.CallWall)ch, err := client.Stream(ctx, "SPX", gex.Channels("gex", "regime"))
if err != nil {
log.Fatal(err)
}
for update := range ch {
switch update.Channel {
case "gex":
fmt.Printf("GEX update: %d\n", update.Data["total_gex"])
case "regime":
fmt.Printf("Regime: %s (strength: %.2f)\n",
update.Data["regime"], update.Data["strength"])
}
}result, err := client.GEX(ctx, "SPX")
if err != nil {
var apiErr *gex.APIError
if errors.As(err, &apiErr) {
fmt.Printf("API error %d: %s\n", apiErr.StatusCode, apiErr.Detail)
if apiErr.StatusCode == 429 {
fmt.Printf("Retry after %ds\n", apiErr.RetryAfter)
}
}
return
}package main
import (
"context"
"fmt"
"log"
"os"
"time"
gex "github.com/gexengine/gex-go"
)
func main() {
client := gex.NewClient(gex.WithAPIKey(os.Getenv("GEX_API_KEY")))
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
// Fetch key data points
gexData, _ := client.GEX(ctx, "SPX")
regime, _ := client.Regime(ctx, "SPX")
levels, _ := client.Levels(ctx, "SPX")
dsi, _ := client.DSI(ctx, "SPX")
fmt.Println("=== SPX Dashboard ===")
fmt.Printf("Spot: %10.2f\n", gexData.Meta.Spot)
fmt.Printf("Total GEX: %10d\n", gexData.Data.TotalGEX)
fmt.Printf("Regime: %10s\n", regime.Data.Regime)
fmt.Printf("Strength: %10.2f\n", regime.Data.Strength)
fmt.Printf("DSI: %+10.1f\n", dsi.Data.DSI)
fmt.Printf("Gamma Flip: %10.2f\n", levels.Data.GammaFlip)
// Stream real-time updates
ch, err := client.Stream(context.Background(), "SPX",
gex.Channels("gex", "regime"))
if err != nil {
log.Fatal(err)
}
for update := range ch {
fmt.Printf("[%s] %v\n", update.Channel, update.Data)
}
}