Changes to display of Buys and Sells.

This commit is contained in:
2025-12-01 19:45:58 -05:00
parent e4aa9c0403
commit 87f36345ff
4 changed files with 112 additions and 5 deletions

View File

@@ -449,8 +449,12 @@ namespace MarketData.Generator.CMMomentum
// *************************************************************************************************************************************************** // ***************************************************************************************************************************************************
// **************************************************************** S E L L P O S I T I O N S ***************************************************** // **************************************************************** S E L L P O S I T I O N S *****************************************************
// *************************************************************************************************************************************************** // ***************************************************************************************************************************************************
// These make the monthly process a bit easier to read /// <summary>
private void DisplaySales(Positions positions,DateTime tradeDate) /// This makes for easier reading of the sales
/// </summary>
/// <param name="positions"></param>
/// <param name="tradeDate"></param>
private static void DisplaySales(Positions positions,DateTime tradeDate)
{ {
MDTrace.WriteLine(LogLevel.DEBUG,"********* S E L L S *********"); MDTrace.WriteLine(LogLevel.DEBUG,"********* S E L L S *********");
foreach (Position position in positions) foreach (Position position in positions)
@@ -459,12 +463,17 @@ namespace MarketData.Generator.CMMomentum
} }
} }
private void DisplayPurchases(Positions positions, DateTime tradeDate) /// <summary>
/// This makes for easier reading of the purchases
/// </summary>
/// <param name="positions"></param>
/// <param name="tradeDate"></param>
private static void DisplayPurchases(Positions positions, DateTime tradeDate)
{ {
MDTrace.WriteLine(LogLevel.DEBUG,"********* B U Y S *********"); MDTrace.WriteLine(LogLevel.DEBUG,"********* B U Y S *********");
foreach (Position position in positions) foreach (Position position in positions)
{ {
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Buy {0} {1} @ {2} on {3}",position.Symbol,Utility.FormatNumber(position.Shares,3),Utility.FormatCurrency(position.PurchasePrice,2),TradeDate.ToShortDateString())); MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Buy {0} {1} @ {2} on {3}",position.Symbol,Utility.FormatNumber(position.Shares,3),Utility.FormatCurrency(position.PurchasePrice,2),tradeDate.ToShortDateString()));
} }
} }

View File

@@ -652,6 +652,7 @@ namespace MarketData.Generator.CMTrend
return result; return result;
} }
ActivePositions.Add(positions); ActivePositions.Add(positions);
DisplayPurchases(positions, TradeDate);
CashBalance-=positions.GetExposure(); CashBalance-=positions.GetExposure();
} }
DisplayRealtimeBlotter(TradeDate); DisplayRealtimeBlotter(TradeDate);
@@ -753,6 +754,7 @@ namespace MarketData.Generator.CMTrend
return result; return result;
} }
ActivePositions.Add(positions); ActivePositions.Add(positions);
DisplayPurchases(positions, TradeDate);
CashBalance-=positions.GetExposure(); CashBalance-=positions.GetExposure();
} }
MDTrace.WriteLine(LogLevel.DEBUG,"\n"); MDTrace.WriteLine(LogLevel.DEBUG,"\n");
@@ -884,7 +886,8 @@ namespace MarketData.Generator.CMTrend
private void ManageOpenPositions(DateTime tradeDate) private void ManageOpenPositions(DateTime tradeDate)
{ {
if(0==ActivePositions.Count) return; if(0==ActivePositions.Count) return;
List<Position> closedPositions=new List<Position>(); Positions closedPositions = new Positions();
// List<Position> closedPositions=new List<Position>();
foreach(Position position in ActivePositions) foreach(Position position in ActivePositions)
{ {
Price price=GBPriceCache.GetInstance().GetPrice(position.Symbol,tradeDate); Price price=GBPriceCache.GetInstance().GetPrice(position.Symbol,tradeDate);
@@ -948,6 +951,7 @@ namespace MarketData.Generator.CMTrend
} }
if(0!=closedPositions.Count) if(0!=closedPositions.Count)
{ {
DisplaySales(closedPositions, TradeDate);
MDTrace.WriteLine(LogLevel.DEBUG,"********************* S E L L *********************"); MDTrace.WriteLine(LogLevel.DEBUG,"********************* S E L L *********************");
foreach(Position closedPosition in closedPositions) foreach(Position closedPosition in closedPositions)
{ {
@@ -1788,5 +1792,33 @@ namespace MarketData.Generator.CMTrend
sessionParams.NonTradeableCash=NonTradeableCash; sessionParams.NonTradeableCash=NonTradeableCash;
return CMTSessionManager.SaveSession(sessionParams,backupFileName); return CMTSessionManager.SaveSession(sessionParams,backupFileName);
} }
/// <summary>
/// This makes for easier reading of the sales
/// </summary>
/// <param name="positions"></param>
/// <param name="tradeDate"></param>
private static void DisplaySales(Positions positions,DateTime tradeDate)
{
MDTrace.WriteLine(LogLevel.DEBUG,"********* S E L L S *********");
foreach (Position position in positions)
{
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Sell {0} {1} @ {2} on {3}",position.Symbol,Utility.FormatNumber(position.Shares,3),Utility.FormatCurrency(position.CurrentPrice,2),tradeDate.ToShortDateString()));
}
}
/// <summary>
/// This makes for easier reading of the purchases
/// </summary>
/// <param name="positions"></param>
/// <param name="tradeDate"></param>
private static void DisplayPurchases(Positions positions, DateTime tradeDate)
{
MDTrace.WriteLine(LogLevel.DEBUG,"********* B U Y S *********");
foreach (Position position in positions)
{
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Buy {0} {1} @ {2} on {3}",position.Symbol,Utility.FormatNumber(position.Shares,3),Utility.FormatCurrency(position.PurchasePrice,2),tradeDate.ToShortDateString()));
}
}
} }
} }

View File

@@ -497,6 +497,7 @@ namespace MarketData.Generator.MGSHMomentum
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("********** Insufficient funds to make additional purchases.**************")); MDTrace.WriteLine(LogLevel.DEBUG,String.Format("********** Insufficient funds to make additional purchases.**************"));
return; return;
} }
DisplayPurchases(positions,TradeDate);
ActivePositions.Add(slotIndex,positions); ActivePositions.Add(slotIndex,positions);
CashBalance-=positions.Exposure; CashBalance-=positions.Exposure;
SetInitialStopLimitsForNewPositions(TradeDate, positions); SetInitialStopLimitsForNewPositions(TradeDate, positions);
@@ -511,6 +512,7 @@ namespace MarketData.Generator.MGSHMomentum
if(!Configuration.KeepSlotPositions) // if we are not configured to KeepSlotPositions then don't sell anything just buy to the max positions allowed for the slot if(!Configuration.KeepSlotPositions) // if we are not configured to KeepSlotPositions then don't sell anything just buy to the max positions allowed for the slot
{ {
SellPositions(slotPositions,TradeDate); SellPositions(slotPositions,TradeDate);
DisplaySales(slotPositions, TradeDate);
MDTrace.WriteLine(LogLevel.DEBUG,"********************* S E L L *********************"); MDTrace.WriteLine(LogLevel.DEBUG,"********************* S E L L *********************");
slotPositions.Display(); slotPositions.Display();
AllPositions.Add(slotPositions); AllPositions.Add(slotPositions);
@@ -532,6 +534,7 @@ namespace MarketData.Generator.MGSHMomentum
MDTrace.WriteLine(LogLevel.DEBUG,"********************** B U Y ********************"); MDTrace.WriteLine(LogLevel.DEBUG,"********************** B U Y ********************");
if(!ActivePositions.ContainsKey(slotIndex))ActivePositions.Add(slotIndex, positions); if(!ActivePositions.ContainsKey(slotIndex))ActivePositions.Add(slotIndex, positions);
else ActivePositions[slotIndex].AddRange(positions); else ActivePositions[slotIndex].AddRange(positions);
DisplayPurchases(positions, TradeDate);
CashBalance-=positions.Exposure; CashBalance-=positions.Exposure;
SetInitialStopLimitsForNewPositions(TradeDate, positions); SetInitialStopLimitsForNewPositions(TradeDate, positions);
ActivePositions[slotIndex].Display(); ActivePositions[slotIndex].Display();
@@ -1398,5 +1401,35 @@ namespace MarketData.Generator.MGSHMomentum
sessionParams.HedgeCashBalance=HedgeCashBalance; sessionParams.HedgeCashBalance=HedgeCashBalance;
return MGSHSessionManager.SaveSession(sessionParams,backupFileName); return MGSHSessionManager.SaveSession(sessionParams,backupFileName);
} }
/// <summary>
/// This makes for easier reading of the sales
/// </summary>
/// <param name="positions"></param>
/// <param name="tradeDate"></param>
private static void DisplaySales(MGSHPositions positions,DateTime tradeDate)
{
if(null == positions || 0==positions.Count)return;
MDTrace.WriteLine(LogLevel.DEBUG,"********* S E L L S *********");
foreach (MGSHPosition position in positions)
{
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Sell {0} {1} @ {2} on {3}",position.Symbol,Utility.FormatNumber(position.Shares,3),Utility.FormatCurrency(position.CurrentPrice,2),tradeDate.ToShortDateString()));
}
}
/// <summary>
/// This makes for easier reading of the purchases
/// </summary>
/// <param name="positions"></param>
/// <param name="tradeDate"></param>
private static void DisplayPurchases(MGSHPositions positions, DateTime tradeDate)
{
if(null == positions || 0==positions.Count)return;
MDTrace.WriteLine(LogLevel.DEBUG,"********* B U Y S *********");
foreach (MGSHPosition position in positions)
{
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Buy {0} {1} @ {2} on {3}",position.Symbol,Utility.FormatNumber(position.Shares,3),Utility.FormatCurrency(position.PurchasePrice,2),tradeDate.ToShortDateString()));
}
}
} }
} }

View File

@@ -228,6 +228,7 @@ namespace MarketData.Generator.Momentum
MDTrace.WriteLine(LogLevel.DEBUG, "********************* S E L L *********************"); MDTrace.WriteLine(LogLevel.DEBUG, "********************* S E L L *********************");
slotPositions.Display(); slotPositions.Display();
AllPositions.Add(slotPositions); AllPositions.Add(slotPositions);
DisplaySales(slotPositions, TradeDate);
CashBalance += slotPositions.MarketValue; CashBalance += slotPositions.MarketValue;
ActivePositions[slotIndex].Clear(); ActivePositions[slotIndex].Clear();
} }
@@ -372,6 +373,7 @@ namespace MarketData.Generator.Momentum
} }
positions.Display(); positions.Display();
ActivePositions.Add(slotIndex,positions); ActivePositions.Add(slotIndex,positions);
DisplayPurchases(positions,TradeDate);
CashBalance-=positions.Exposure; CashBalance-=positions.Exposure;
DisplayBalance(); DisplayBalance();
} }
@@ -382,6 +384,7 @@ namespace MarketData.Generator.Momentum
MDTrace.WriteLine(LogLevel.DEBUG,"********************* S E L L *********************"); MDTrace.WriteLine(LogLevel.DEBUG,"********************* S E L L *********************");
slotPositions.Display(); slotPositions.Display();
AllPositions.Add(slotPositions); AllPositions.Add(slotPositions);
DisplaySales(slotPositions, TradeDate);
CashBalance+=slotPositions.MarketValue; CashBalance+=slotPositions.MarketValue;
ActivePositions[slotIndex].Clear(); ActivePositions[slotIndex].Clear();
DisplayBalance(); DisplayBalance();
@@ -398,6 +401,7 @@ namespace MarketData.Generator.Momentum
break; break;
} }
ActivePositions[slotIndex]=positions; ActivePositions[slotIndex]=positions;
DisplayPurchases(positions, TradeDate);
CashBalance-=positions.Exposure; CashBalance-=positions.Exposure;
DisplayBalance(); DisplayBalance();
} }
@@ -415,6 +419,7 @@ namespace MarketData.Generator.Momentum
MDTrace.WriteLine(LogLevel.DEBUG,"********************* S E L L ********************"); MDTrace.WriteLine(LogLevel.DEBUG,"********************* S E L L ********************");
slotPositions.Display(); slotPositions.Display();
AllPositions.Add(slotPositions); AllPositions.Add(slotPositions);
DisplaySales(slotPositions, TradeDate);
CashBalance+=slotPositions.MarketValue; CashBalance+=slotPositions.MarketValue;
ActivePositions[slotIndex].Clear(); ActivePositions[slotIndex].Clear();
} }
@@ -720,5 +725,33 @@ namespace MarketData.Generator.Momentum
sessionParams.NonTradeableCash = NonTradeableCash; sessionParams.NonTradeableCash = NonTradeableCash;
return MGSessionManager.SaveSession(sessionParams,backupFileName); return MGSessionManager.SaveSession(sessionParams,backupFileName);
} }
/// <summary>
/// This makes for easier reading of the sales
/// </summary>
/// <param name="positions"></param>
/// <param name="tradeDate"></param>
private static void DisplaySales(Positions positions,DateTime tradeDate)
{
MDTrace.WriteLine(LogLevel.DEBUG,"********* S E L L S *********");
foreach (Position position in positions)
{
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Sell {0} {1} @ {2} on {3}",position.Symbol,Utility.FormatNumber(position.Shares,3),Utility.FormatCurrency(position.CurrentPrice,2),tradeDate.ToShortDateString()));
}
}
/// <summary>
/// This makes for easier reading of the purchases
/// </summary>
/// <param name="positions"></param>
/// <param name="tradeDate"></param>
private static void DisplayPurchases(Positions positions, DateTime tradeDate)
{
MDTrace.WriteLine(LogLevel.DEBUG,"********* B U Y S *********");
foreach (Position position in positions)
{
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Buy {0} {1} @ {2} on {3}",position.Symbol,Utility.FormatNumber(position.Shares,3),Utility.FormatCurrency(position.PurchasePrice,2),tradeDate.ToShortDateString()));
}
}
} }
} }