Event/Notification Callback
Callback content examples can be found at Websocket Notification Examples; The reference to content objects is available at SDK Reference
Subscribe Order Callback
- Python
- Node.js
- C#
- C++
- Go
# A callback to receive order data
def on_order(code, content):
print("==Order==")
print(code)
print(content)
# print(content.seq_no) # Print the order serial number
sdk.set_on_order(on_order)
For content object detail, please refer to OrderResult Object
//Callback to receive order data
sdk.setOnOrder(function(order, content)
{ console.log("====order===\n",order, content)});
For content object detail, please refer to OrderResult Object
public void OnOrder(string code, OrderResult data)
{
if(data != null)
{
response = data.ToString();
Console.WriteLine("On Order" + response);
}
}
Or use function below:
sdk.OnOrder += (code, ordeResult) =>
{
Console.WriteLine(code + ordeResult.ToString());
}
For content object detail, please refer to OrderResult Object
void on_order(std::optional<std::string> err, const OrderResult& data) override {
if (err.has_value()) {
std::cerr << "Error in on_order: " << err.value() << ", status: " << data.status.value() << std::endl;
return;
}
if (data.order_no.has_value()) { // Or simply: if (data.order_no)
std::cout << "on order: order_no - " << data.order_no.value() << ". status - " << data.status.value() << std::endl;
}
else {
std::cout << "on order: order_no is not available. status - " << data.status.value() << std::endl;
}
};
For content object detail, please refer to OrderResult Object
sdk.OnOrder = func(err *string, data fubon.OrderResult) {
s, _ := json.MarshalIndent(data, "", " ")
fmt.Println("On Order: ", string(s))
if err != nil {
fmt.Printf(" Error: %s\n", *err)
}
}
For content object detail, please refer to OrderResult Object
Subscribe Change Order / Cancel Order Callback
- Python
- Node.js
- C#
- C++
- Go
def on_order_changed(code, content):
print("=Modified==")
print(code)
print(content)
# print(content.seq_no) # Print the order serial number
print("========")
sdk.set_on_order_changed(on_order_changed)
For content object detail, please refer to OrderResult Object
//Callback to receive Modified data
sdk.setOnOrderChanged(function(order, content)
{ console.log("===Modified===\n", order, content)});
For content object detail, please refer to OrderResult Object
public void OnOrderChanged(string code, OrderResult data)
{
if(data != null)
{
response = data.ToString();
Console.WriteLine(code);
Console.WriteLine("Modified" + response);
}
}
Or use function below:
sdk.OnOrderChanged += (code, ordeResult) =>
{
Console.WriteLine(code + ordeResult.ToString());
}
For content object detail, please refer to OrderResult Object
void on_order_changed(std::optional<std::string> err, const OrderResult& data) override {
if (data.error_message.has_value()) {
std::cout << "on_order_changed: " << data.order_no.value() << ", status: " << data.status.value() << ", message: " << data.error_message.value() << std::endl;
}
else {
std::cout << "on_order_changed: " << data.order_no.value() << ", status: " << data.status.value() << std::endl;
}
};
For content object detail, please refer to OrderResult Object
sdk.OnOrderChanged = func(err *string, data fubon.OrderResult) {
s, _ := json.MarshalIndent(data, "", " ")
fmt.Println("On Change ", string(s))
if err != nil {
fmt.Printf(" Error: %s\n", *err)
}
}
For content object detail, please refer to OrderResult Object
Subscribe Filled Callback
- Python
- Node.js
- C#
- C++
- Go
def on_filled(code, content):
print("==Filled==")
print(code)
print(content)
# print(content.filled_no) # Print the filled serial number
print("========")
sdk.set_on_filled(on_filled)
For content object detail, please refer to FilledData Object
sdk.setOnFilled(function(code, content)
{ console.log("===Filled===\n",code, content)})
For content object detail, please refer to FilledData Object
public void OnFilled(string code, FilledData data)
{
if(data != null)
{
response = data.ToString();
Console.WriteLine(code);
Console.WriteLine("Filled" + response);
}
}
Or use function below:
sdk.OnFilled += (code, filledData) =>
{
Console.WriteLine(code + filledData.ToString());
}
For content object detail, please refer to FilledData Object
void on_filled(std::optional<std::string> err, const FilledData& data) override {
if (err.has_value()) {
std::cerr << "Error in on_order: " << err.value() << std::endl;
return;
}
if (data.order_no.has_value()) {
std::cout << "on order: " << data.order_no.value() << std::endl;
}
else {
std::cout << "on order: order_no is not available." << std::endl;
}
};
For content object detail, please refer to FilledData Object
sdk.OnFilled = func(err *string, data fubon.FilledData) {
s, _ := json.MarshalIndent(data, "", " ")
fmt.Println("On Filled ", string(s))
if err != nil {
fmt.Printf(" Error: %s\n", *err)
}
}
For content object detail, please refer to FilledData Object
Subscribe Events Callback
- Python
- Node.js
- C#
- C++
- Go
def on_event(code, content):
print("===event=====")
print(code)
print(content)
print("========")
sdk.set_on_event(on_event)
sdk.setOnEvent(function(code, content)
{ console.log("===Event===\n",code, content)})
public void OnEvent(String code, String data)
{
response = data.ToString();
Console.WriteLine(code);
Console.WriteLine("Event" + response);
}
Or use function below:
sdk.OnEvent += (code, msg) =>
{
Console.WriteLine(code + msg );
};
void on_event(std::string code, std::string data) override {
std::cout<<code<<" "<<data<<std::endl;
}
sdk.OnEvent = func(data string, eventType string) {
fmt.Printf("📡 OnEvent - Type: %s, Data: %s\n", eventType, data)
if eventType == "disconnect" {
fmt.Println("⚠️ Connection lost!")
}
}
Events Include Returns in the Following:
| Code | Meaning |
|---|---|
| 100 | Connect |
| 200 | Log in |
| 201 | Login Warning ( Password change alert) |
| 300 | Disconnect |
| 301 | Pong Missing |
| 302 | Manually Disconnected |
| 304 | API Key Revoked: Forced Logout (since v2.2.7) |
| 500 | Error |
Example
Users can subscribe to different callbacks to receive order and filled notifications
- Python
- Node.js
- C#
- C++
- Go
# A callback to receive order data
def on_order(code, content):
print("==Order==")
print(code)
print(content)
print("========")
sdk.set_on_order(on_order)
# A callback to receive Modified data
def on_order_changed(code, content):
print("=Modified==")
print(code)
print(content)
print("========")
sdk.set_on_order_changed(on_order_changed)
def on_filled(code, content):
print("==Filled==")
print(code)
print(content)
print("========")
sdk.set_on_filled(on_filled)
# A callback to receive Event data
def on_event(code, content):
print("===event=====")
print(code)
print(content)
print("========")
sdk.set_on_event(on_event)
//Callback to receive order data
sdk.setOnOrder(function(code, content)
{ console.log("====order===\n",code, content)});
//Callback to receive Modified data
sdk.setOnOrderChanged(function(code, content)
{ console.log("===Modified===\n", code, content)});
//Callback to receive Filled data
sdk.setOnFilled(function(code, content)
{ console.log("===Filled===\n",code, content)})
//Callback to receive Event data
sdk.setOnEvent(function(code, content)
{ console.log("===Event===\n",code, content)})
public class MyCallback : Callback
{
public string code ="";
public string response = "";
//Callback to receive order data
public void OnOrder(string code, OrderResult data)
{
if(data != null)
{
response = data.ToString();
Console.WriteLine("On Order" + response);
}
}
//Callback to receive Modified data
public void OnOrderChanged(string code, OrderResult data)
{
if(data != null)
{
response = data.ToString();
Console.WriteLine(code);
Console.WriteLine("Modified" + response);
}
}
//Callback to receive Filled data
public void OnFilled(string code, FilledData data)
{
if(data != null)
{
response = data.ToString();
Console.WriteLine(code);
Console.WriteLine("Filled" + response);
}
}
//Callback to receive Event data
public void OnEvent(String code,String data)
{
response = data.ToString();
Console.WriteLine(code);
Console.WriteLine("Event" + response);
}
}
var callback = new MyCallback();
sdk.RegisterCallback(callback);
Or use the function below:
sdk.OnEvent += (code, msg) =>
{
Console.WriteLine(code + msg );
};
sdk.OnOrder += (code, ordeResult) =>
{
Console.WriteLine(code + ordeResult.ToString());
}
sdk.OnOrderChanged += (code, ordeResult) =>
{
Console.WriteLine(code + ordeResult.ToString());
}
sdk.OnFilled += (code, filledData) =>
{
Console.WriteLine(code + filledData.ToString());
}
struct CustomCallback : public fubon::Callback {
void on_event(const std::string& code, const std::string& data) override {
std::cout << code << " " << data << std::endl;
}
void on_order(std::optional<std::string> err, const OrderResult& data) override {
if (err.has_value()) {
std::cerr << "Error in on_order: " << err.value() << ", status: " << data.status.value() << std::endl;
return;
}
if (data.order_no.has_value()) { // Or simply: if (data.order_no)
std::cout << "on order: order_no - " << data.order_no.value() << ". status - " << data.status.value() << std::endl;
}
else {
std::cout << "on order: order_no is not available. status - " << data.status.value() << std::endl;
}
};
void on_order_changed(std::optional<std::string> err, const OrderResult& data) override {
if (data.error_message.has_value()) {
std::cout << "on_order_changed: " << data.order_no.value() << ", status: " << data.status.value() << ", message: " << data.error_message.value() << std::endl;
}
else {
std::cout << "on_order_changed: " << data.order_no.value() << ", status: " << data.status.value() << std::endl;
}
};
void on_filled(std::optional<std::string> err, const FilledData& data) override {
std::cout << data.order_no << " " << std::endl;
};
void on_futopt_order(std::optional<std::string> err, const FutOptOrderResult& data) override {
return;
//if (err.has_value()) {
// std::cerr << "Error in on_order: " << err.value() << std::endl;
// return;
//}
//if (data.order_no.has_value()) { // Or simply: if (data.order_no)
// std::cout << "on order: " << data.order_no.value() << std::endl;
//}
//else {
// std::cout << "on order: order_no is not available." << std::endl;
//}
};
void on_futopt_order_changed(std::optional<std::string> err, const FutOptOrderResult& data) override {
/*std::cout << data.order_no.value() << " " << std::endl;*/
return;
};
void on_futopt_filled(std::optional<std::string> err, const FutOptFilledData& data) override {
//std::cout << data.order_no << " " << std::endl;
return;
};
};
int main()
{
auto callback = std::make_shared<CustomCallback>();
auto sdk = new FubonSDK();
sdk->register_callback(callback);
/// More coding ...
/// ...
return 0;
}
import (
"encoding/json"
"fmt"
"fubon"
"strings"
)
func main(){
sdk.OnOrder = func(err *string, data fubon.OrderResult) {
s, _ := json.MarshalIndent(data, "", " ")
fmt.Println("On Order: ", string(s))
if err != nil {
fmt.Printf(" Error: %s\n", *err)
}
}
sdk.OnOrderChanged = func(err *string, data fubon.OrderResult) {
s, _ := json.MarshalIndent(data, "", " ")
fmt.Println("On Change ", string(s))
if err != nil {
fmt.Printf(" Error: %s\n", *err)
}
}
sdk.OnFilled = func(err *string, data fubon.FilledData) {
s, _ := json.MarshalIndent(data, "", " ")
fmt.Println("On Filled ", string(s))
if err != nil {
fmt.Printf(" Error: %s\n", *err)
}
}
sdk.OnEvent = func(data string, eventType string) {
fmt.Printf("📡 OnEvent - Type: %s, Data: %s\n", eventType, data)
if eventType == "disconnect" {
fmt.Println("⚠️ Connection lost!")
}
}
}