diff --git a/AuraTrader/AuraTrader.dproj b/AuraTrader/AuraTrader.dproj
index e0cbb98..78cf432 100644
--- a/AuraTrader/AuraTrader.dproj
+++ b/AuraTrader/AuraTrader.dproj
@@ -4,7 +4,7 @@
20.3
FMX
True
- Debug
+ Release
Win64
AuraTrader
3
diff --git a/AuraTrader/MainForm.fmx b/AuraTrader/MainForm.fmx
index 0c1bc72..bc310da 100644
--- a/AuraTrader/MainForm.fmx
+++ b/AuraTrader/MainForm.fmx
@@ -89,7 +89,7 @@ object Form1: TForm1
Size.Height = 311.00000000000000000
Size.PlatformDefault = False
TabOrder = 1
- Viewport.Width = 796.00000000000000000
- Viewport.Height = 311.00000000000000000
+ Viewport.Width = 792.00000000000000000
+ Viewport.Height = 307.00000000000000000
end
end
diff --git a/AuraTrader/MainForm.pas b/AuraTrader/MainForm.pas
index 28d22b8..ae399be 100644
--- a/AuraTrader/MainForm.pas
+++ b/AuraTrader/MainForm.pas
@@ -217,37 +217,41 @@ begin
var currPathData := TMutable>.CreateWriteable.Protect;
var currLog := TMutable.CreateWriteable.Protect;
- const width = 1000;
- const incsize = 100;
+ const width = 3000;
- var done := TaskManager.RunTask(
- nil,
- function: TState
- begin
- var arr := TDataSeries.CreateWriteable(width);
- Result :=
- FServer.ProcessData(
- Symbol,
- FTerminate.Signal,
- procedure(const Values: TArray>; const Terminated: TState)
- begin
- arr.Add(Values);
- currLog.Value := arr.TotalCount.ToString;
-
- var PathData := TPathData.Create;
- var Prices := arr;
- if Prices.Count > 0 then
+ var done :=
+ TaskManager.RunTask(
+ nil,
+ function: TState
+ begin
+ var Prices := TDataSeries.CreateWriteable(width);
+ Result :=
+ FServer.ProcessData(
+ Symbol,
+ FTerminate.Signal,
+ procedure(const Values: TArray>; const Terminated: TState)
begin
- PathData.MoveTo(PointF(Prices.Count - 1, Prices[0].Data.Ask));
- for var i := 1 to Prices.Count - 1 do
- PathData.LineTo(PointF(Prices.Count - i - 1, Prices[i].Data.Ask));
- end;
+ Prices.Add(Values);
+ currLog.Value := Prices.TotalCount.ToString;
- currPathData.Value := TObjectRef.Create(PathData);
- end
- );
- end
- );
+ var PathData := TPathData.Create;
+ if Prices.Count > 0 then
+ begin
+ var n := Prices.Count;
+ PathData.MoveTo(PointF(n - 1, Prices[0].Data.Ask));
+ for var i := 1 to n - 1 do
+ PathData.LineTo(PointF(n - i - 1, Prices[i].Data.Ask));
+
+ for var i := n - 1 downto 0 do
+ PathData.LineTo(PointF(n - i - 1, Prices[i].Data.Bid));
+ end;
+ PathData.ClosePath;
+
+ currPathData.Value := TObjectRef.Create(PathData);
+ end
+ );
+ end
+ );
FLoadDone := TState.All([FLoadDone, done]);
diff --git a/Src/Myc.TaskManager.pas b/Src/Myc.TaskManager.pas
index 01dea84..5bef920 100644
--- a/Src/Myc.TaskManager.pas
+++ b/Src/Myc.TaskManager.pas
@@ -150,6 +150,7 @@ begin
begin
try
cProc.Signal.Subscribe(Done);
+ cProc := nil;
except
Done.Notify;
raise;