Skip to content

Commit 2fbbc3f

Browse files
author
EarnForex
authored
1.12
Fixed a crash when attaching the robot to a symbol with zero decimal places.
1 parent 72eadfc commit 2fbbc3f

File tree

4 files changed

+33
-14
lines changed

4 files changed

+33
-14
lines changed

PositionSizer/PositionSizer/PositionSizer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public partial class PositionSizer : Robot,
2626
public event EventHandler TimerEvent;
2727
public event EventHandler StopEvent;
2828
public IModel Model { get; set; }
29-
public const string Version = "v1.11";
29+
public const string Version = "v1.12";
3030
public CustomStyle CustomStyle { get; private set; }
3131
public BreakEven BreakEven { get; private set; }
3232
public TrailingStop TrailingStop { get; private set; }

PositionSizer/PositionSizer/View/ChartLinesView/ChartLinesView.cs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -279,8 +279,11 @@ private void DrawStopText(IModel model)
279279
{
280280
if (!InputShowLineLabels)
281281
return;
282+
283+
int precision = BotTools.CountDecimals(Symbol.TickSize / Symbol.PipSize);
284+
string formatSpecified = $"F{precision}";
282285

283-
StopLossText = Chart.DrawText(StopLossTextTag, $"{GetStopDistancePips(model):F1}", IndexFromXCoordinate, model.StopLoss.Price, InputStopLossLabelColor);
286+
StopLossText = Chart.DrawText(StopLossTextTag, $"{GetStopDistancePips(model).ToString(formatSpecified)}", IndexFromXCoordinate, model.StopLoss.Price, InputStopLossLabelColor);
284287
StopLossText.IsHidden = model.HideLines;
285288
StopLossText.FontSize = InputLabelsFontSize;
286289
StopLossText.VerticalAlignment = VerticalAlignment.Bottom;
@@ -352,7 +355,10 @@ public void DrawEntryText(IModel model)
352355
{
353356
if (model.OrderType != OrderType.Instant)
354357
{
355-
EntryText = Chart.DrawText(EntryTextTag, $"{GetEntryDistancePips(model):F1}", IndexFromXCoordinate, model.EntryPrice, InputEntryLabelColor);
358+
int precision = BotTools.CountDecimals(Symbol.TickSize / Symbol.PipSize);
359+
string formatSpecified = $"F{precision}";
360+
361+
EntryText = Chart.DrawText(EntryTextTag, $"{GetEntryDistancePips(model).ToString(formatSpecified)}", IndexFromXCoordinate, model.EntryPrice, InputEntryLabelColor);
356362
EntryText.FontSize = InputLabelsFontSize;
357363
EntryText.VerticalAlignment = VerticalAlignment.Bottom;
358364
EntryText.HorizontalAlignment = HorizontalAlignment.Left;
@@ -556,7 +562,10 @@ public void UpdateLines(IModel model)
556562

557563
if (targetLine.TargetTextObj != null)
558564
{
559-
targetLine.TargetTextObj = Chart.DrawText(TargetLine.TargetTextTag + index, $"{GetTargetDistancePips(model, index):F1}", IndexFromXCoordinate, takeProfit.Price, InputTpLabelColor);
565+
int precision = BotTools.CountDecimals(Symbol.TickSize / Symbol.PipSize);
566+
string formatSpecified = $"F{precision}";
567+
568+
targetLine.TargetTextObj = Chart.DrawText(TargetLine.TargetTextTag + index, $"{GetTargetDistancePips(model, index).ToString(formatSpecified)}", IndexFromXCoordinate, takeProfit.Price, InputTpLabelColor);
560569
targetLine.TargetTextObj.FontSize = InputLabelsFontSize;
561570
targetLine.TargetTextObj.IsHidden = model.HideLines;
562571
targetLine.TargetTextObj.VerticalAlignment = VerticalAlignment.Bottom;
@@ -621,7 +630,11 @@ public void UpdateLines(IModel model)
621630
if (StopLossText != null)
622631
{
623632
StopLossText.Y = model.StopLoss.Price;
624-
StopLossText.Text = $"{GetStopDistancePips(model):F1}";
633+
634+
int precision = BotTools.CountDecimals(Symbol.TickSize / Symbol.PipSize);
635+
string formatSpecified = $"F{precision}";
636+
637+
StopLossText.Text = $"{GetStopDistancePips(model).ToString(formatSpecified)}";
625638
}
626639

627640
if (InputShowAdditionalStopLossLabel)

PositionSizer/PositionSizer/View/Pages/MainView/MainView.cs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1173,12 +1173,16 @@ private void UpdateTakeProfitPrecision(IModel model)
11731173
{
11741174
if (model.TakeProfits.Mode == TargetMode.Pips)
11751175
{
1176-
_takeProfitTb.Digits = 1;
1177-
_takeProfitTb.ChangeByFactor = 0.1;
1176+
var changeByFactor = Symbol.TickSize / Symbol.PipSize;
1177+
var digits = CountDecimals(changeByFactor);
1178+
1179+
_takeProfitTb.Digits = digits;
1180+
_takeProfitTb.ChangeByFactor = changeByFactor;
1181+
11781182
_tpViews.ForEach(view =>
11791183
{
1180-
view.TakeProfitTextBox.Digits = 1;
1181-
view.TakeProfitTextBox.ChangeByFactor = 0.1;
1184+
view.TakeProfitTextBox.Digits = digits;
1185+
view.TakeProfitTextBox.ChangeByFactor = changeByFactor;
11821186
});
11831187
}
11841188
else
@@ -1197,8 +1201,10 @@ private void UpdateStopLossPrecision(IModel model)
11971201
{
11981202
if (model.StopLoss.Mode == TargetMode.Pips)
11991203
{
1200-
_stopLossTb.Digits = 1;
1201-
_stopLossTb.ChangeByFactor = 0.1;
1204+
var changeByFactor = Symbol.TickSize / Symbol.PipSize;
1205+
1206+
_stopLossTb.Digits = CountDecimals(changeByFactor);
1207+
_stopLossTb.ChangeByFactor = changeByFactor;
12021208
}
12031209
else
12041210
{

PositionSizer/PositionSizer/XTextBoxControl/ByTypes/XTextBoxDoubleNumeric.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ public XTextBoxDoubleNumeric(double defaultValue, int digits, double changeByFac
2828
{
2929
Digits = digits;
3030

31-
if (digits <= 0)
32-
// ReSharper disable once LocalizableElement
33-
throw new ArgumentOutOfRangeException(nameof(digits), "Digits must be greater than zero");
31+
// if (digits <= 0)
32+
// // ReSharper disable once LocalizableElement
33+
// throw new ArgumentOutOfRangeException(nameof(digits), "Digits must be greater than zero");
3434

3535
UpdateTextOfControls(Value);
3636

0 commit comments

Comments
 (0)