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;