protected override void OnWindowCreated(Window window)
{
var enumerator = Account.All.GetEnumerator();
while (enumerator.MoveNext())
{
enumerator.Current.AccountItemUpdate+=OnAccountIte mUpdate;
enumerator.Current.ExecutionUpdate+=OnExecutionUpd ate;
}
}
// Will be called as a new NTWindow is destroyed. It will be called in the thread of that window
protected override void OnWindowDestroyed(Window window)
{
var enumerator = Account.All.GetEnumerator();
while (enumerator.MoveNext())
{
enumerator.Current.AccountItemUpdate-=OnAccountItemUpdate;
enumerator.Current.ExecutionUpdate-=OnExecutionUpdate;
Account account = enumerator.Current;
var enumerator1 = account.Positions.GetEnumerator();
while (enumerator1.MoveNext())
RemoveBarsRequest(account.Name+enumerator1.Current .Instrument.FullName);
}
}
// This method is fired on any change of an account value
private void OnAccountItemUpdate(object sender, AccountItemEventArgs e)
{
if(lastItemUpdateTime==null||DateTime.Now.Subtract (lastItemUpdateTime).TotalSeconds >=60)
{
Account act = e.Account;
System.IO.File.WriteAllText(@"C:/AccountUpdate/"+act.Name+"_"+DateTime.Now.ToString("MMddyyyyhhmm ss")+".csv", act.Name+","+act.GetAccountItem(AccountItem.Buying Power, Currency.UsDollar).Value+","+ act.GetAccountItem(AccountItem.CashValue, Currency.UsDollar).Value+","+act.GetAccountItem(Ac countItem.ExcessIntradayMargin, Currency.UsDollar).Value+","+act.GetAccountItem(Ac countItem.ExcessInitialMargin, Currency.UsDollar).Value+","+act.GetAccountItem(Ac countItem.IntradayMargin, Currency.UsDollar).Value+","+act.GetAccountItem(Ac countItem.InitialMargin, Currency.UsDollar).Value+","+act.GetAccountItem(Ac countItem.NetLiquidation, Currency.UsDollar).Value+","+act.GetAccountItem(Ac countItem.GrossRealizedProfitLoss, Currency.UsDollar).Value+","+act.GetAccountItem(Ac countItem.RealizedProfitLoss, Currency.UsDollar).Value+","+act.GetAccountItem(Ac countItem.UnrealizedProfitLoss, Currency.UsDollar).Value+","+act.GetAccountItem(Ac countItem.TotalCashBalance, Currency.UsDollar).Value);
lastItemUpdateTime=DateTime.Now;
}
}