ATAS
Loading...
Searching...
No Matches
Working with trading events

It is necessary to refer to the TradingInfo property for getting the data about trading entities.

This property includes:

Besides, it is possible to redefine the following methods for receiving updates:

Below is an example of the indicator, which displays the portfolio, position, order and trade data. The indicator also adds entries into logs when receiving new orders and new trades when the portfolio or position changes.

public class SampleTradingInfo : Indicator
{
public SampleTradingInfo()
{
EnableCustomDrawing = true;
SubscribeToDrawingEvents(DrawingLayouts.Final);
}
protected override void OnCalculate(int bar, decimal value)
{
}
protected override void OnNewOrder(Order orders)
{
this.LogWarn(order.ToString());
}
protected override void OnOrderChanged(Order order)
{
this.LogWarn(order.ToString());
}
protected override void OnNewMyTrade(MyTrade myTrade)
{
this.LogWarn(myTrade.ToString());
}
protected override void OnPortfolioChanged(Portfolio portfolio)
{
this.LogWarn(portfolio.ToString());
}
protected override void OnPositionChanged(Position position)
{
this.LogWarn(position.ToString());
}
protected override void OnRender(RenderContext context, DrawingLayouts layout)
{
var label = "";
if (TradingManager.Security != null)
label += $"Security: {TradingManager.Security}{Environment.NewLine}";
if (TradingManager.Portfolio != null)
label += $"Portfolio: {TradingManager.Portfolio}{Environment.NewLine}";
if (TradingManager.Position != null)
label += $"Position: {TradingManager.Position}{Environment.NewLine}";
var orders = TradingManager.Orders.Where(t => t.State == OrderStates.Active);
if (orders.Any())
{
label += $"{Environment.NewLine}---------------------Active orders:------------------------{Environment.NewLine}";
foreach (var order in orders)
{
label += $"{order}{Environment.NewLine}";
}
}
var myTrades = TradingManager.MyTrades;
if (myTrades.Any())
{
label += $"{Environment.NewLine}---------------------MyTrades:------------------------{Environment.NewLine}";
foreach (var myTrade in myTrades)
{
label += $"{myTrade}{Environment.NewLine}";
}
}
var font = new RenderFont("Arial", 10);
var size = context.MeasureString(label, font);
context.FillRectangle(Color.DarkRed, new Rectangle(25, 25, (int)size.Width + 50, (int)size.Height + 50));
context.DrawString(label, font, Color.Azure, 50, 50);
}
}
Represents a trade entity in the system.
Definition MyTrade.cs:14
override string ToString()
Definition MyTrade.cs:223
Represents an order for trading on a financial exchange.
Definition Order.cs:15
override string ToString()
Returns a string that represents the current order.
Definition Order.cs:646
Represents a portfolio entity with various properties related to account balance, Profit and Loss (Pn...
Definition Portfolio.cs:20
override string ToString()
Returns a string representation of the portfolio group, including various account-related information...
Definition Portfolio.cs:560
Represents a trading position.
Definition Position.cs:96
override string ToString()
Definition Position.cs:378
Base class for custom indicators.
Definition Indicator.cs:42
OrderStates
Represents the possible states of an order.
Definition OrderStates.cs:7
Definition FeatureId.cs:2
DrawingLayouts
Enumerates the different drawing layouts available for chart drawings.
Definition DrawingLayouts.cs:14
@ Rectangle
Rectangle graphic object.
Displays the portfolio, position, order and trade data