Can someone from MC.NET help with this?
Code: Select all
using System;
using System.Collections.Generic;
using System.Linq;
using PowerLanguage.TradeManager;
namespace PowerLanguage.Strategy {
[IOGMode(IOGMode.Enabled)]
public class TradeTest : SignalObject {
public TradeTest(object _ctx):base(_ctx){}
private DateTime syncStartTime;
private DateTime lastProcessedTime;
protected override void Create() {
}
protected override void StartCalc() {
// assign inputs
syncStartTime = DateTime.Now;
lastProcessedTime = syncStartTime;
// Start listening to TradeManager events
TradeManager.TradingData.Orders.FinishChanging -= OrdersFinishChanging;
TradeManager.TradingData.Orders.FinishChanging += OrdersFinishChanging;
TradeManager.TradingData.Orders.Added -= Added;
TradeManager.TradingData.Orders.Added += Added;
//TradeManager.TradingData.Orders.IntervalFltr.From = syncStartTime;
}
protected override void Dispose(bool A_0)
{
TradeManager.TradingData.Orders.FinishChanging -= OrdersFinishChanging;
TradeManager.TradingData.Orders.Added -= Added;
base.Dispose(A_0);
}
protected override void StopCalc()
{
TradeManager.TradingData.Orders.FinishChanging -= OrdersFinishChanging;
TradeManager.TradingData.Orders.Added -= Added;
base.StopCalc();
}
protected override void CalcBar(){
if (Bars.LastBarOnChart)
{
ExecControl.RecalcLastBarAfter(TimeSpan.FromSeconds(0.5));
}
}
protected override void OnRecalcLastBarAfterEvent()
{
TradeManager.ProcessEvents();
ExecControl.RecalcLastBarAfter(TimeSpan.FromSeconds(0.5));
}
private void Added(IEnumerable<TradeManager.Order> _items)
{
if (!_items.Any()) return;
lastProcessedTime = DateTime.Now;
//TradeManager.TradingData.Orders.IntervalFltr.From = lastProcessedTime;
foreach (TradeManager.Order order in _items)
{
Output.WriteLine("Added - ID: {0}, State: {1}, OCO GroupId: {2}, LimitPriceStr: {3}, StopPriceStr: {4} --- {5} {6} -- {7}", order.ID, order.StateStr, order.OCOGroupID, order.LimitPriceStr, order.StopPriceStr, order.MCBasedID, order.BrokerBasedID, order.CategoryStr);
}
}
private void OrdersFinishChanging(object sender, EventArgs e)
{
IOrders orders = sender as IOrders;
IEnumerable<TradeManager.Order> _items = orders.Items.Where(order => (order.FinalDT.HasValue ? order.FinalDT : order.GeneratedDT) >= lastProcessedTime);
if (!_items.Any()) return;
lastProcessedTime = DateTime.Now;
//TradeManager.TradingData.Orders.IntervalFltr.From = lastProcessedTime;
foreach (TradeManager.Order order in _items)
{
Output.WriteLine("Changed - ID: {0}, State: {1}, OCO GroupId: {2}, LimitPriceStr: {3}, StopPriceStr: {4} --- {5} {6} -- {7}", order.ID, order.StateStr, order.OCOGroupID, order.LimitPriceStr, order.StopPriceStr, order.MCBasedID, order.BrokerBasedID, order.CategoryStr);
}
}
}
}