📡 API Reference — Streaming (GoMT4)
This page documents streaming messages & chunks used in GoMT4. Streaming APIs are long-lived gRPC calls that continuously send updates.
🔔 Quotes Streaming
Mt4QuoteUpdate (QuoteUpdate)
| Field |
Type |
symbol |
string |
bid |
double |
ask |
double |
point |
double |
digits |
int32 |
time |
Timestamp |
Notes: one tick. Compute spread: (ask - bid)/point. |
|
Mt4QuoteStreamRequest (QuoteStreamRequest)
- Fields:
symbols[] (list of symbols to subscribe).
Mt4QuoteStreamChunk (QuoteStreamChunk)
- Fields:
update: QuoteUpdate, is_last: bool.
is_last = true marks stream termination.
📑 Orders History Streaming
Mt4OrdersHistoryPagedRequest (OrdersHistoryPagedRequest)
- Fields:
from, to, optional symbol, page_size.
Mt4OrdersHistoryPagedChunk (OrdersHistoryPagedChunk)
| Field |
Type |
orders[] |
OrderHistory |
next_page_token |
string |
is_last |
bool |
| Notes: chunked history pages. Use token to request next page. |
|
🔄 Trade Updates
Mt4TradeUpdate (TradeUpdate)
| Field |
Type |
ticket |
int64 |
symbol |
string |
type |
OrderType |
volume |
double |
price |
double |
sl |
double |
tp |
double |
time |
Timestamp |
state |
TradeUpdateState |
Mt4TradeUpdateStreamRequest (TradeUpdateStreamRequest)
- Fields:
symbols[] (subscribe per symbol).
Mt4TradeUpdateStreamChunk (TradeUpdateStreamChunk)
- Fields:
update: TradeUpdate, is_last: bool.
🎟️ Opened Orders Tickets
Mt4OpenedOrdersTicketStreamRequest (OpenedOrdersTicketStreamRequest)
- Fields:
symbols[] (subscribe tickets by symbol).
Mt4OpenedOrdersTicketStreamChunk (OpenedOrdersTicketStreamChunk)
| Field |
Type |
tickets[] |
OpenedOrdersTicket |
is_last |
bool |
💰 Opened Orders Profit Stream
Mt4OpenedOrdersProfitOrderInfo (ProfitOrderInfo)
| Field |
Type |
ticket |
int64 |
symbol |
string |
order_profit |
double |
swap |
double |
commission |
double |
Mt4OpenedOrdersProfitSnapshot (ProfitSnapshot)
- Fields:
opened_orders_with_profit_updated[]: ProfitOrderInfo, time: Timestamp.
Mt4OpenedOrdersProfitStreamRequest (ProfitStreamRequest)
- Field:
buffer_size: int32 (controls channel buffer).
Mt4OpenedOrdersProfitStreamChunk (ProfitStreamChunk)
- Fields:
snapshot: ProfitSnapshot, is_last: bool.
Notes: updates real-time PnL per order.
🕒 Quote History Streaming
Mt4QuoteHistoryPoint (QuoteHistoryPoint)
Mt4QuoteHistoryChunk (QuoteHistoryChunk)
- Fields:
point: QuoteHistoryPoint, is_last: bool.
📊 Chart Streaming
Mt4ChartStreamRequest (ChartStreamRequest)
Mt4ChartStreamChunk (ChartStreamChunk)
- Fields:
bar: ChartBar, is_last: bool.
Mt4ChartHistoryStreamRequest (ChartHistoryStreamRequest)
- Fields:
symbol, period, chunks: ChartTimeChunks.
Mt4ChartTimeChunks (ChartTimeChunks)
📈 Internal Chart Streaming
Mt4InternalChartStreamRequest (InternalChartStreamRequest)
Mt4InternalChartStreamChunk (InternalChartStreamChunk)
- Fields:
point: InternalChartPoint, is_last: bool.
Mt4InternalChartHistoryStreamRequest (InternalChartHistoryStreamRequest)
- Fields:
symbol, chunks: InternalChartTimeChunks.
Mt4InternalChartHistoryResponse (InternalChartHistoryResponse)
- Fields:
series[]: InternalChartSeries.
⚠️ Stream Errors
Mt4StreamErrorReason (StreamErrorReason)
| Name |
Value |
Meaning |
NONE |
0 |
No error |
EOF |
1 |
End of stream |
UNAVAILABLE |
2 |
Stream unavailable |
📌 Tip:
- Use
context.WithTimeout or WithCancel to control stream lifetime.
- Always handle
is_last = true and error channels in client code.
- Streaming is ideal for real-time dashboards (quotes, PnL, trades).