Fix Stop Limits in all models.
This commit is contained in:
@@ -268,7 +268,7 @@ namespace TradeBlotter.Model
|
|||||||
{
|
{
|
||||||
if(!IsActivePosition) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Blue);
|
if(!IsActivePosition) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Blue);
|
||||||
if(!Utility.IsEpoch(position.LastStopAdjustment)) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Black); // if we have a trailing stop then we are no longer using the initial stop
|
if(!Utility.IsEpoch(position.LastStopAdjustment)) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Black); // if we have a trailing stop then we are no longer using the initial stop
|
||||||
StopLimit stopLimit=StopLimitDA.GetStopLimit(position.Symbol);
|
StopLimit stopLimit=StopLimitDA.GetStopLimit(position.Symbol,position.Shares);
|
||||||
if(null==stopLimit||!stopLimit.StopPrice.Equals(Math.Round(position.InitialStopLimit,2))) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Purple);
|
if(null==stopLimit||!stopLimit.StopPrice.Equals(Math.Round(position.InitialStopLimit,2))) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Purple);
|
||||||
if(currentPriceLow<=position.InitialStopLimit) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Red);
|
if(currentPriceLow<=position.InitialStopLimit) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Red);
|
||||||
return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Black);
|
return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Black);
|
||||||
@@ -293,7 +293,7 @@ namespace TradeBlotter.Model
|
|||||||
{
|
{
|
||||||
return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Red);
|
return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Red);
|
||||||
}
|
}
|
||||||
StopLimit stopLimit=StopLimitDA.GetStopLimit(position.Symbol);
|
StopLimit stopLimit=StopLimitDA.GetStopLimit(position.Symbol,position.Shares);
|
||||||
if(null==stopLimit || !stopLimit.StopPrice.Equals(Math.Round(position.TrailingStopLimit,2)))
|
if(null==stopLimit || !stopLimit.StopPrice.Equals(Math.Round(position.TrailingStopLimit,2)))
|
||||||
{
|
{
|
||||||
return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Purple);
|
return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Purple);
|
||||||
|
|||||||
@@ -550,7 +550,7 @@ namespace TradeBlotter.Model
|
|||||||
{
|
{
|
||||||
if(!IsActivePosition) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Blue);
|
if(!IsActivePosition) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Blue);
|
||||||
if(!Utility.IsEpoch(position.LastStopAdjustment)) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Black); // if we have a trailing stop then we are no longer using the initial stop
|
if(!Utility.IsEpoch(position.LastStopAdjustment)) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Black); // if we have a trailing stop then we are no longer using the initial stop
|
||||||
StopLimit stopLimit=StopLimitDA.GetStopLimit(position.Symbol);
|
StopLimit stopLimit=StopLimitDA.GetStopLimit(position.Symbol,position.Shares);
|
||||||
if(null==stopLimit||!stopLimit.StopPrice.Equals(Math.Round(position.InitialStopLimit,2))) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Purple);
|
if(null==stopLimit||!stopLimit.StopPrice.Equals(Math.Round(position.InitialStopLimit,2))) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Purple);
|
||||||
if(currentPriceLow<=position.InitialStopLimit) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Red);
|
if(currentPriceLow<=position.InitialStopLimit) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Red);
|
||||||
return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Black);
|
return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Black);
|
||||||
@@ -577,7 +577,7 @@ namespace TradeBlotter.Model
|
|||||||
{
|
{
|
||||||
return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Red);
|
return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Red);
|
||||||
}
|
}
|
||||||
StopLimit stopLimit=StopLimitDA.GetStopLimit(position.Symbol);
|
StopLimit stopLimit=StopLimitDA.GetStopLimit(position.Symbol,position.Shares);
|
||||||
if(null==stopLimit || !stopLimit.StopPrice.Equals(Math.Round(position.TrailingStopLimit,2))) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Purple);
|
if(null==stopLimit || !stopLimit.StopPrice.Equals(Math.Round(position.TrailingStopLimit,2))) return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Purple);
|
||||||
return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Black);
|
return BrushCollection.GetContextBrush(BrushCollection.BrushColor.Black);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1069,7 +1069,7 @@ namespace TradeBlotter.ViewModels
|
|||||||
{
|
{
|
||||||
bool deleteStop=false;
|
bool deleteStop=false;
|
||||||
Position clonedPosition=Position.Clone(selectedPosition.Position);
|
Position clonedPosition=Position.Clone(selectedPosition.Position);
|
||||||
bool hasStopLimit=StopLimitDA.HasStopLimit(clonedPosition.Symbol);
|
bool hasStopLimit=StopLimitDA.HasStopLimit(clonedPosition.Symbol,clonedPosition.Shares);
|
||||||
IPosition changedPosition=ClosePositionDialog.Prompt("Close Position",clonedPosition,hasStopLimit,ref deleteStop);
|
IPosition changedPosition=ClosePositionDialog.Prompt("Close Position",clonedPosition,hasStopLimit,ref deleteStop);
|
||||||
if(null==changedPosition) return;
|
if(null==changedPosition) return;
|
||||||
CMTTrendModel mmTrendModel=new CMTTrendModel();
|
CMTTrendModel mmTrendModel=new CMTTrendModel();
|
||||||
@@ -1078,7 +1078,7 @@ namespace TradeBlotter.ViewModels
|
|||||||
MessageBox.Show("Failed to close the position, check log for details.","Close Position");
|
MessageBox.Show("Failed to close the position, check log for details.","Close Position");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(deleteStop) StopLimitDA.DeleteStopLimit(changedPosition.Symbol);
|
if(deleteStop) StopLimitDA.DeleteStopLimit(changedPosition.Symbol,changedPosition.Shares);
|
||||||
String strMessage=String.Format("Closed position for {0}, Purchase Date:{1}, Sell Date{2}, Current Price:{3}, Delete Stop:{4} to {5}. A backup was created.",
|
String strMessage=String.Format("Closed position for {0}, Purchase Date:{1}, Sell Date{2}, Current Price:{3}, Delete Stop:{4} to {5}. A backup was created.",
|
||||||
changedPosition.Symbol,changedPosition.PurchaseDate.ToShortDateString(),changedPosition.SellDate.ToShortDateString(),Utility.FormatCurrency(changedPosition.CurrentPrice),deleteStop,pathFileName);
|
changedPosition.Symbol,changedPosition.PurchaseDate.ToShortDateString(),changedPosition.SellDate.ToShortDateString(),Utility.FormatCurrency(changedPosition.CurrentPrice),deleteStop,pathFileName);
|
||||||
MessageBox.Show(strMessage,"Close Position");
|
MessageBox.Show(strMessage,"Close Position");
|
||||||
@@ -1100,7 +1100,7 @@ namespace TradeBlotter.ViewModels
|
|||||||
{
|
{
|
||||||
selectedPosition.TrailingStopLimit=changedPosition.TrailingStopLimit;
|
selectedPosition.TrailingStopLimit=changedPosition.TrailingStopLimit;
|
||||||
selectedPosition.LastStopAdjustment=DateTime.Now.Date;
|
selectedPosition.LastStopAdjustment=DateTime.Now.Date;
|
||||||
StopLimit stopLimit=StopLimitDA.GetStopLimit(changedPosition.Symbol);
|
StopLimit stopLimit=StopLimitDA.GetStopLimit(changedPosition.Symbol,changedPosition.Shares);
|
||||||
if(null==stopLimit)
|
if(null==stopLimit)
|
||||||
{
|
{
|
||||||
stopLimit=new StopLimit();
|
stopLimit=new StopLimit();
|
||||||
|
|||||||
@@ -1057,7 +1057,7 @@ namespace TradeBlotter.ViewModels
|
|||||||
{
|
{
|
||||||
bool deleteStop=false;
|
bool deleteStop=false;
|
||||||
MGSHPosition clonedPosition=MGSHPosition.Clone(selectedPosition.Position);
|
MGSHPosition clonedPosition=MGSHPosition.Clone(selectedPosition.Position);
|
||||||
bool hasStopLimit=StopLimitDA.HasStopLimit(clonedPosition.Symbol);
|
bool hasStopLimit=StopLimitDA.HasStopLimit(clonedPosition.Symbol,clonedPosition.Shares);
|
||||||
IPosition changedPosition=ClosePositionDialog.Prompt("Close Position",clonedPosition,hasStopLimit,ref deleteStop);
|
IPosition changedPosition=ClosePositionDialog.Prompt("Close Position",clonedPosition,hasStopLimit,ref deleteStop);
|
||||||
if(null==changedPosition) return;
|
if(null==changedPosition) return;
|
||||||
MGSHMomentumBacktest mgshMomentumBacktest = new MGSHMomentumBacktest();
|
MGSHMomentumBacktest mgshMomentumBacktest = new MGSHMomentumBacktest();
|
||||||
@@ -1066,7 +1066,7 @@ namespace TradeBlotter.ViewModels
|
|||||||
MessageBox.Show("Failed to close the position, check log for details.","Close Position");
|
MessageBox.Show("Failed to close the position, check log for details.","Close Position");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(deleteStop) StopLimitDA.DeleteStopLimit(changedPosition.Symbol);
|
if(deleteStop) StopLimitDA.DeleteStopLimit(changedPosition.Symbol,changedPosition.Shares);
|
||||||
String strMessage=String.Format("Closed position for {0}, Purchase Date:{1}, Sell Date{2}, Current Price:{3}, Delete Stop:{4} to {5}. A backup was created.",
|
String strMessage=String.Format("Closed position for {0}, Purchase Date:{1}, Sell Date{2}, Current Price:{3}, Delete Stop:{4} to {5}. A backup was created.",
|
||||||
changedPosition.Symbol,changedPosition.PurchaseDate.ToShortDateString(),changedPosition.SellDate.ToShortDateString(),Utility.FormatCurrency(changedPosition.CurrentPrice),deleteStop,pathFileName);
|
changedPosition.Symbol,changedPosition.PurchaseDate.ToShortDateString(),changedPosition.SellDate.ToShortDateString(),Utility.FormatCurrency(changedPosition.CurrentPrice),deleteStop,pathFileName);
|
||||||
MessageBox.Show(strMessage,"Close Position");
|
MessageBox.Show(strMessage,"Close Position");
|
||||||
@@ -1088,7 +1088,7 @@ namespace TradeBlotter.ViewModels
|
|||||||
{
|
{
|
||||||
selectedPosition.TrailingStopLimit = changedPosition.TrailingStopLimit;
|
selectedPosition.TrailingStopLimit = changedPosition.TrailingStopLimit;
|
||||||
selectedPosition.LastStopAdjustment = DateTime.Now.Date;
|
selectedPosition.LastStopAdjustment = DateTime.Now.Date;
|
||||||
StopLimit stopLimit = StopLimitDA.GetStopLimit(changedPosition.Symbol);
|
StopLimit stopLimit = StopLimitDA.GetStopLimit(changedPosition.Symbol,changedPosition.Shares);
|
||||||
if (null == stopLimit)
|
if (null == stopLimit)
|
||||||
{
|
{
|
||||||
stopLimit = new StopLimit();
|
stopLimit = new StopLimit();
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ namespace TradeBlotter.ViewModels
|
|||||||
base.DisplayName="TradeEntry";
|
base.DisplayName="TradeEntry";
|
||||||
this.trade=trade;
|
this.trade=trade;
|
||||||
this.tradeRepository=tradeRepository;
|
this.tradeRepository=tradeRepository;
|
||||||
if(StopLimitDA.HasStopLimit(trade.Symbol)) stopLimit=StopLimitDA.GetStopLimit(trade.Symbol);
|
if(StopLimitDA.HasStopLimit(trade.Symbol,trade.Shares)) stopLimit=StopLimitDA.GetStopLimit(trade.Symbol,trade.Shares);
|
||||||
PropertyChanged+=OnTradeEntryViewModelPropertyChanged;
|
PropertyChanged+=OnTradeEntryViewModelPropertyChanged;
|
||||||
UpdateProperties();
|
UpdateProperties();
|
||||||
}
|
}
|
||||||
@@ -370,7 +370,7 @@ namespace TradeBlotter.ViewModels
|
|||||||
{
|
{
|
||||||
if(null!=stopLimit && stopLimit.Shares.Equals(trade.Shares))
|
if(null!=stopLimit && stopLimit.Shares.Equals(trade.Shares))
|
||||||
{
|
{
|
||||||
StopLimitDA.DeleteStopLimit(trade.Symbol);
|
StopLimitDA.DeleteStopLimit(trade.Symbol,trade.Shares);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user