func main() { // The following assumes game_start.exe has already been called, and thus that // there exists a file in the /gm/ directory which contains info about the level. info := gofighter.GetUserSelection("known_levels.json") // The Ticker goroutine called below is the direct interface to the server WebSocket. // It simply sends executions down a channel at us. ex_chan := make(chan gofighter.Execution) go gofighter.Tracker(info, ex_chan) for n := 0; ; n++ { msg := <-ex_chan fmt.Printf("%s %s %d @ %d\n", msg.Account, msg.Order.Direction, msg.Filled, msg.Price) } return }
func main() { // The following assumes game_start.exe has already been called, and thus that // there exists a file in the /gm/ directory which contains info about the level. info := gofighter.GetUserSelection("known_levels.json") // The info var above now contains account, venue, and symbol. So we just need // the following pieces of information; the ShortOrder type is designed for this. order := gofighter.ShortOrder{ Direction: "buy", OrderType: "limit", Qty: 100, Price: 10000, } result, _ := gofighter.Execute(info, order, nil) gofighter.PrintJSON(result) }
func main() { // The following assumes game_start.exe has already been called, and thus that // there exists a file in the /gm/ directory which contains info about the level. info := gofighter.GetUserSelection("known_levels.json") // The Ticker goroutine called below is the direct interface to the server WebSocket. // It simply sends quotes down a channel at us. ticker_results := make(chan gofighter.Quote, 64) go gofighter.Ticker(info, ticker_results) for n := 0; ; n++ { msg := <-ticker_results fmt.Printf("%d ", n) s, _ := json.MarshalIndent(msg, "", " ") fmt.Println(string(s)) } return }
func main() { // The following assumes game_start.exe has already been called, and thus that // there exists a file in the /gm/ directory which contains info about the level. info := gofighter.GetUserSelection("known_levels.json") position_queries := make(chan chan gofighter.Position) go gofighter.PositionWatch(info, position_queries) // How this works: the goroutine PositionWatch uses a WebSocket to keep track of // the position, and when we send a channel to it via its input channel, it sends // a copy of the position back to us along the channel we provided. for { position := gofighter.GetPosition(position_queries) // Behind the scenes, this sends a // one-time channel to the goroutine fmt.Printf(time.Now().Format("2006-01-02 15:04:05 ... ")) fmt.Printf("Shares: %d, Dollars: $%d\n", position.Shares, position.Cents/100) time.Sleep(2 * time.Second) } }
func main() { // The following assumes game_start.exe has already been called, and thus that // there exists a file in the /gm/ directory which contains info about the level. info := gofighter.GetUserSelection("known_levels.json") market_queries := make(chan chan gofighter.Market) go gofighter.MarketWatch(info, market_queries) // How this works: the goroutine MarketWatch uses a WebSocket to keep track of // the market, and when we send a channel to it via its input channel, it sends // a copy of the market back to us along the channel we provided. for { market := gofighter.GetMarket(market_queries) // Behind the scenes, this sends a // one-time channel to the goroutine fmt.Printf(time.Now().Format("2006-01-02 15:04:05 ... ")) market.Print() time.Sleep(2 * time.Second) } }
func load(args []string) { info = gofighter.GetUserSelection("known_levels.json") gofighter.PrintJSON(info) }