mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-08-25 22:08:05 +00:00
Refactor charts
This commit is contained in:
+20
-43
@@ -3,31 +3,12 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
|||||||
# Visual Studio Version 17
|
# Visual Studio Version 17
|
||||||
VisualStudioVersion = 17.2.32210.308
|
VisualStudioVersion = 17.2.32210.308
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests", "Tests\Tests.csproj", "{283EACC9-3AF6-4DAE-9C1C-0F7F8C8CD70D}"
|
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
|
||||||
{5096AEA1-81BC-46E7-9F2B-B408AFAA850C} = {5096AEA1-81BC-46E7-9F2B-B408AFAA850C}
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QuanTAlib", "Source\QuanTAlib.csproj", "{AAE21F8A-9BC2-4647-A9EB-4DC86C569080}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QuanTAlib", "Source\QuanTAlib.csproj", "{AAE21F8A-9BC2-4647-A9EB-4DC86C569080}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Docs", "Docs", "{3AA87FFE-4EEE-4C1B-82E0-2A5E40E2254D}"
|
|
||||||
ProjectSection(SolutionItems) = preProject
|
|
||||||
Docs\bars_and_HMA.dib = Docs\bars_and_HMA.dib
|
|
||||||
Docs\Comparing_w_TALIB.ipynb = Docs\Comparing_w_TALIB.ipynb
|
|
||||||
Docs\getting_started.ipynb = Docs\getting_started.ipynb
|
|
||||||
Docs\Indicators.md = Docs\Indicators.md
|
|
||||||
Docs\LICENSE = Docs\LICENSE
|
|
||||||
Docs\ma-comparison.dib = Docs\ma-comparison.dib
|
|
||||||
Docs\macd_example.ipynb = Docs\macd_example.ipynb
|
|
||||||
Docs\QuanTAlib_Indicators.dib = Docs\QuanTAlib_Indicators.dib
|
|
||||||
Docs\QuanTAlib_test.ipynb = Docs\QuanTAlib_test.ipynb
|
|
||||||
Docs\README.md = Docs\README.md
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Source", "Source", "{8D8CD223-7A8C-46C4-A326-58E0B735FBA4}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Quantower", "Quantower\Quantower.csproj", "{5096AEA1-81BC-46E7-9F2B-B408AFAA850C}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Quantower", "Quantower\Quantower.csproj", "{5096AEA1-81BC-46E7-9F2B-B408AFAA850C}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests", "Tests\Tests.csproj", "{283EACC9-3AF6-4DAE-9C1C-0F7F8C8CD70D}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
@@ -36,38 +17,34 @@ Global
|
|||||||
Release|x64 = Release|x64
|
Release|x64 = Release|x64
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{283EACC9-3AF6-4DAE-9C1C-0F7F8C8CD70D}.Debug|Any CPU.ActiveCfg = Debug|x64
|
{AAE21F8A-9BC2-4647-A9EB-4DC86C569080}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{283EACC9-3AF6-4DAE-9C1C-0F7F8C8CD70D}.Debug|Any CPU.Build.0 = Debug|x64
|
{AAE21F8A-9BC2-4647-A9EB-4DC86C569080}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{AAE21F8A-9BC2-4647-A9EB-4DC86C569080}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{AAE21F8A-9BC2-4647-A9EB-4DC86C569080}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{AAE21F8A-9BC2-4647-A9EB-4DC86C569080}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{AAE21F8A-9BC2-4647-A9EB-4DC86C569080}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{AAE21F8A-9BC2-4647-A9EB-4DC86C569080}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{AAE21F8A-9BC2-4647-A9EB-4DC86C569080}.Release|x64.Build.0 = Release|x64
|
||||||
|
{5096AEA1-81BC-46E7-9F2B-B408AFAA850C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{5096AEA1-81BC-46E7-9F2B-B408AFAA850C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{5096AEA1-81BC-46E7-9F2B-B408AFAA850C}.Debug|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{5096AEA1-81BC-46E7-9F2B-B408AFAA850C}.Debug|x64.Build.0 = Release|Any CPU
|
||||||
|
{5096AEA1-81BC-46E7-9F2B-B408AFAA850C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{5096AEA1-81BC-46E7-9F2B-B408AFAA850C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{5096AEA1-81BC-46E7-9F2B-B408AFAA850C}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{5096AEA1-81BC-46E7-9F2B-B408AFAA850C}.Release|x64.Build.0 = Release|x64
|
||||||
|
{283EACC9-3AF6-4DAE-9C1C-0F7F8C8CD70D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{283EACC9-3AF6-4DAE-9C1C-0F7F8C8CD70D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{283EACC9-3AF6-4DAE-9C1C-0F7F8C8CD70D}.Debug|x64.ActiveCfg = Debug|x64
|
{283EACC9-3AF6-4DAE-9C1C-0F7F8C8CD70D}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{283EACC9-3AF6-4DAE-9C1C-0F7F8C8CD70D}.Debug|x64.Build.0 = Debug|x64
|
{283EACC9-3AF6-4DAE-9C1C-0F7F8C8CD70D}.Debug|x64.Build.0 = Debug|x64
|
||||||
{283EACC9-3AF6-4DAE-9C1C-0F7F8C8CD70D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{283EACC9-3AF6-4DAE-9C1C-0F7F8C8CD70D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{283EACC9-3AF6-4DAE-9C1C-0F7F8C8CD70D}.Release|Any CPU.Build.0 = Release|Any CPU
|
{283EACC9-3AF6-4DAE-9C1C-0F7F8C8CD70D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{283EACC9-3AF6-4DAE-9C1C-0F7F8C8CD70D}.Release|x64.ActiveCfg = Release|x64
|
{283EACC9-3AF6-4DAE-9C1C-0F7F8C8CD70D}.Release|x64.ActiveCfg = Release|x64
|
||||||
{283EACC9-3AF6-4DAE-9C1C-0F7F8C8CD70D}.Release|x64.Build.0 = Release|x64
|
{283EACC9-3AF6-4DAE-9C1C-0F7F8C8CD70D}.Release|x64.Build.0 = Release|x64
|
||||||
{AAE21F8A-9BC2-4647-A9EB-4DC86C569080}.Debug|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{AAE21F8A-9BC2-4647-A9EB-4DC86C569080}.Debug|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{AAE21F8A-9BC2-4647-A9EB-4DC86C569080}.Debug|x64.ActiveCfg = Debug|Any CPU
|
|
||||||
{AAE21F8A-9BC2-4647-A9EB-4DC86C569080}.Debug|x64.Build.0 = Debug|Any CPU
|
|
||||||
{AAE21F8A-9BC2-4647-A9EB-4DC86C569080}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{AAE21F8A-9BC2-4647-A9EB-4DC86C569080}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{AAE21F8A-9BC2-4647-A9EB-4DC86C569080}.Release|x64.ActiveCfg = Release|Any CPU
|
|
||||||
{AAE21F8A-9BC2-4647-A9EB-4DC86C569080}.Release|x64.Build.0 = Release|Any CPU
|
|
||||||
{5096AEA1-81BC-46E7-9F2B-B408AFAA850C}.Debug|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{5096AEA1-81BC-46E7-9F2B-B408AFAA850C}.Debug|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{5096AEA1-81BC-46E7-9F2B-B408AFAA850C}.Debug|x64.ActiveCfg = Release|Any CPU
|
|
||||||
{5096AEA1-81BC-46E7-9F2B-B408AFAA850C}.Debug|x64.Build.0 = Release|Any CPU
|
|
||||||
{5096AEA1-81BC-46E7-9F2B-B408AFAA850C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{5096AEA1-81BC-46E7-9F2B-B408AFAA850C}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{5096AEA1-81BC-46E7-9F2B-B408AFAA850C}.Release|x64.ActiveCfg = Release|Any CPU
|
|
||||||
{5096AEA1-81BC-46E7-9F2B-B408AFAA850C}.Release|x64.Build.0 = Release|Any CPU
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(NestedProjects) = preSolution
|
|
||||||
{283EACC9-3AF6-4DAE-9C1C-0F7F8C8CD70D} = {8D8CD223-7A8C-46C4-A326-58E0B735FBA4}
|
|
||||||
{AAE21F8A-9BC2-4647-A9EB-4DC86C569080} = {8D8CD223-7A8C-46C4-A326-58E0B735FBA4}
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {E5592DC2-0542-45B2-A0CF-C6B1EDC72B87}
|
SolutionGuid = {E5592DC2-0542-45B2-A0CF-C6B1EDC72B87}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
using System.Drawing;
|
||||||
|
using TradingPlatform.BusinessLayer;
|
||||||
|
namespace QuanTAlib;
|
||||||
|
|
||||||
|
public class ATR_chart : Indicator
|
||||||
|
{
|
||||||
|
#region Parameters
|
||||||
|
|
||||||
|
[InputParameter("Smoothing period", 0, 1, 999, 1, 1)]
|
||||||
|
private readonly int Period = 10;
|
||||||
|
|
||||||
|
#endregion Parameters
|
||||||
|
|
||||||
|
private readonly TBars bars = new();
|
||||||
|
|
||||||
|
///////
|
||||||
|
private ATR_Series indicator;
|
||||||
|
///////
|
||||||
|
|
||||||
|
public ATR_chart()
|
||||||
|
{
|
||||||
|
this.SeparateWindow = true;
|
||||||
|
this.Name = "ATR - Average True Range";
|
||||||
|
this.Description = "Average True Range description";
|
||||||
|
this.AddLineSeries("ATR", Color.RoyalBlue, 3, LineStyle.Solid);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnInit()
|
||||||
|
{
|
||||||
|
this.ShortName =
|
||||||
|
"ATR (" + this.Period + ")";
|
||||||
|
this.indicator = new(source: bars, period: this.Period, useNaN: false);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
|
{
|
||||||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
|
args.Reason == UpdateReason.HistoricalBar);
|
||||||
|
this.bars.Add(this.Time(), this.GetPrice(PriceType.Open),
|
||||||
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
|
this.GetPrice(PriceType.Close),
|
||||||
|
this.GetPrice(PriceType.Volume), update);
|
||||||
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
|
this.SetValue(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -38,8 +38,6 @@ public class BIAS_chart : Indicator
|
|||||||
new(source: bars.Select(this.DataSource), period: this.Period);
|
new(source: bars.Select(this.DataSource), period: this.Period);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
@@ -48,7 +46,6 @@ public class BIAS_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
this.SetValue(result, 0);
|
this.SetValue(result, 0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,8 +38,6 @@ public class DEMA_chart : Indicator
|
|||||||
period: this.Period, useNaN: false);
|
period: this.Period, useNaN: false);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
@@ -48,8 +46,6 @@ public class DEMA_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
this.SetValue(result);
|
this.SetValue(result);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,8 +38,6 @@ public class EMA_chart : Indicator
|
|||||||
period: this.Period, useNaN: false);
|
period: this.Period, useNaN: false);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
@@ -48,8 +46,6 @@ public class EMA_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
this.SetValue(result);
|
this.SetValue(result);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,8 +38,6 @@ public class ENTP_chart : Indicator
|
|||||||
period: this.Period, useNaN: true);
|
period: this.Period, useNaN: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
@@ -48,8 +46,6 @@ public class ENTP_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
|
|
||||||
this.SetValue(result, 0);
|
this.SetValue(result, 0);
|
||||||
|
|||||||
@@ -38,8 +38,6 @@ public class HEMA_chart : Indicator
|
|||||||
period: this.Period, useNaN: false);
|
period: this.Period, useNaN: false);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
@@ -48,8 +46,6 @@ public class HEMA_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
this.SetValue(result);
|
this.SetValue(result);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
using System.Diagnostics;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using TradingPlatform.BusinessLayer;
|
using TradingPlatform.BusinessLayer;
|
||||||
namespace QuanTAlib;
|
namespace QuanTAlib;
|
||||||
@@ -36,20 +37,19 @@ public class HMA_chart : Indicator
|
|||||||
"HMA (" + TBars.SelectStr(this.DataSource) + ", " + this.Period + ")";
|
"HMA (" + TBars.SelectStr(this.DataSource) + ", " + this.Period + ")";
|
||||||
this.indicator = new(source: bars.Select(this.DataSource),
|
this.indicator = new(source: bars.Select(this.DataSource),
|
||||||
period: this.Period, useNaN: false);
|
period: this.Period, useNaN: false);
|
||||||
}
|
Debug.WriteLine("Send to debug output.");
|
||||||
|
}
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
Debug.WriteLine("Send to debug output.");
|
||||||
|
|
||||||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
args.Reason == UpdateReason.HistoricalBar);
|
args.Reason == UpdateReason.HistoricalBar);
|
||||||
this.bars.Add(this.Time(), this.GetPrice(PriceType.Open),
|
this.bars.Add(this.Time(), this.GetPrice(PriceType.Open),
|
||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
this.SetValue(result);
|
this.SetValue(result);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,9 +37,6 @@ public class JMA_chart : Indicator
|
|||||||
this.indicator = new(source: bars.Select(this.DataSource),
|
this.indicator = new(source: bars.Select(this.DataSource),
|
||||||
period: this.Period, useNaN: false);
|
period: this.Period, useNaN: false);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
@@ -48,8 +45,6 @@ public class JMA_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
this.SetValue(result);
|
this.SetValue(result);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,8 +38,6 @@ public class KURT_chart : Indicator
|
|||||||
period: this.Period, useNaN: true);
|
period: this.Period, useNaN: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
@@ -48,7 +46,6 @@ public class KURT_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
this.SetValue(result, 0);
|
this.SetValue(result, 0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,8 +38,6 @@ public class MAD_chart : Indicator
|
|||||||
period: this.Period, useNaN: true);
|
period: this.Period, useNaN: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
@@ -48,7 +46,6 @@ public class MAD_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
|
|
||||||
|
|||||||
@@ -38,8 +38,6 @@ public class MAPE_chart : Indicator
|
|||||||
period: this.Period, useNaN: true);
|
period: this.Period, useNaN: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
@@ -48,7 +46,6 @@ public class MAPE_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
|
|
||||||
|
|||||||
@@ -38,8 +38,6 @@ public class MAX_chart : Indicator
|
|||||||
new(source: bars.Select(this.DataSource), period: this.Period);
|
new(source: bars.Select(this.DataSource), period: this.Period);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
@@ -48,8 +46,6 @@ public class MAX_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
|
|
||||||
this.SetValue(result, 0);
|
this.SetValue(result, 0);
|
||||||
|
|||||||
@@ -37,8 +37,6 @@ public class MED_chart : Indicator
|
|||||||
this.indicator =
|
this.indicator =
|
||||||
new(source: bars.Select(this.DataSource), period: this.Period);
|
new(source: bars.Select(this.DataSource), period: this.Period);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
@@ -47,7 +45,6 @@ public class MED_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
this.SetValue(result, 0);
|
this.SetValue(result, 0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,8 +38,6 @@ public class MIN_chart : Indicator
|
|||||||
new(source: bars.Select(this.DataSource), period: this.Period);
|
new(source: bars.Select(this.DataSource), period: this.Period);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
@@ -48,8 +46,6 @@ public class MIN_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
|
|
||||||
this.SetValue(result, 0);
|
this.SetValue(result, 0);
|
||||||
|
|||||||
@@ -38,8 +38,6 @@ public class MSE_chart : Indicator
|
|||||||
period: this.Period, useNaN: true);
|
period: this.Period, useNaN: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
@@ -48,7 +46,6 @@ public class MSE_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
|
|
||||||
|
|||||||
@@ -37,9 +37,6 @@ public class PSDEV_chart : Indicator
|
|||||||
this.indicator = new(source: bars.Select(this.DataSource),
|
this.indicator = new(source: bars.Select(this.DataSource),
|
||||||
period: this.Period, useNaN: true);
|
period: this.Period, useNaN: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
@@ -48,8 +45,6 @@ public class PSDEV_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
|
|
||||||
this.SetValue(result, 0);
|
this.SetValue(result, 0);
|
||||||
|
|||||||
@@ -38,8 +38,6 @@ public class PVAR_chart : Indicator
|
|||||||
period: this.Period, useNaN: true);
|
period: this.Period, useNaN: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
@@ -48,8 +46,6 @@ public class PVAR_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
|
|
||||||
this.SetValue(result, 0);
|
this.SetValue(result, 0);
|
||||||
|
|||||||
@@ -38,8 +38,6 @@ public class RMA_chart : Indicator
|
|||||||
period: this.Period, useNaN: false);
|
period: this.Period, useNaN: false);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
@@ -48,8 +46,6 @@ public class RMA_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
this.SetValue(result);
|
this.SetValue(result);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,9 +37,6 @@ public class SDEV_chart : Indicator
|
|||||||
this.indicator = new(source: bars.Select(this.DataSource),
|
this.indicator = new(source: bars.Select(this.DataSource),
|
||||||
period: this.Period, useNaN: true);
|
period: this.Period, useNaN: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
@@ -48,8 +45,6 @@ public class SDEV_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
|
|
||||||
this.SetValue(result, 0);
|
this.SetValue(result, 0);
|
||||||
|
|||||||
@@ -38,8 +38,6 @@ public class SMAPE_chart : Indicator
|
|||||||
period: this.Period, useNaN: true);
|
period: this.Period, useNaN: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
@@ -48,8 +46,6 @@ public class SMAPE_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
|
|
||||||
this.SetValue(result, 0);
|
this.SetValue(result, 0);
|
||||||
|
|||||||
@@ -7,12 +7,12 @@ public class SMA_chart : Indicator
|
|||||||
#region Parameters
|
#region Parameters
|
||||||
|
|
||||||
[InputParameter("Smoothing period", 0, 1, 999, 1, 1)]
|
[InputParameter("Smoothing period", 0, 1, 999, 1, 1)]
|
||||||
private int Period = 10;
|
private readonly int Period = 10;
|
||||||
|
|
||||||
[InputParameter("Data source", 1, variants: new object[]
|
[InputParameter("Data source", 1, variants: new object[]
|
||||||
{ "Open", 0, "High", 1, "Low", 2, "Close", 3, "HL2", 4, "OC2", 5,
|
{ "Open", 0, "High", 1, "Low", 2, "Close", 3, "HL2", 4, "OC2", 5,
|
||||||
"OHL3", 6, "HLC3", 7, "OHLC4", 8, "Weighted (HLCC4)", 9 })]
|
"OHL3", 6, "HLC3", 7, "OHLC4", 8, "Weighted (HLCC4)", 9 })]
|
||||||
private int DataSource = 3;
|
private readonly int DataSource = 3;
|
||||||
|
|
||||||
#endregion Parameters
|
#endregion Parameters
|
||||||
|
|
||||||
@@ -38,9 +38,7 @@ public class SMA_chart : Indicator
|
|||||||
period: this.Period, useNaN: false);
|
period: this.Period, useNaN: false);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
args.Reason == UpdateReason.HistoricalBar);
|
args.Reason == UpdateReason.HistoricalBar);
|
||||||
@@ -48,8 +46,6 @@ public class SMA_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
this.SetValue(result);
|
this.SetValue(result);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,8 +38,6 @@ public class TEMA_chart : Indicator
|
|||||||
period: this.Period, useNaN: false);
|
period: this.Period, useNaN: false);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
@@ -48,8 +46,6 @@ public class TEMA_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
this.SetValue(result);
|
this.SetValue(result);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,8 +38,6 @@ public class VAR_chart : Indicator
|
|||||||
period: this.Period, useNaN: true);
|
period: this.Period, useNaN: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
@@ -48,8 +46,6 @@ public class VAR_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
|
|
||||||
this.SetValue(result, 0);
|
this.SetValue(result, 0);
|
||||||
|
|||||||
@@ -44,15 +44,10 @@ public class WMAPE_chart : Indicator
|
|||||||
this.ShortName = "WMAPE (" + QuanTAlib.TBars.SelectStr(this.DataSource) + ", " + this.Period + ")";
|
this.ShortName = "WMAPE (" + QuanTAlib.TBars.SelectStr(this.DataSource) + ", " + this.Period + ")";
|
||||||
this.indicator = new(source: this.bars.Select(this.DataSource), period: this.Period, useNaN: true);
|
this.indicator = new(source: this.bars.Select(this.DataSource), period: this.Period, useNaN: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) => this.indicator.Add(update);
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar || args.Reason == UpdateReason.HistoricalBar);
|
bool update = !(args.Reason == UpdateReason.NewBar || args.Reason == UpdateReason.HistoricalBar);
|
||||||
this.bars.Add(this.Time(), this.GetPrice(PriceType.Open), this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low), this.GetPrice(PriceType.Close), this.GetPrice(PriceType.Volume), update);
|
this.bars.Add(this.Time(), this.GetPrice(PriceType.Open), this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low), this.GetPrice(PriceType.Close), this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -37,9 +37,6 @@ public class WMA_chart : Indicator
|
|||||||
this.indicator = new(source: bars.Select(this.DataSource),
|
this.indicator = new(source: bars.Select(this.DataSource),
|
||||||
period: this.Period, useNaN: false);
|
period: this.Period, useNaN: false);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
@@ -48,8 +45,6 @@ public class WMA_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
this.SetValue(result);
|
this.SetValue(result);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,10 +37,7 @@ public class ZLEMA_chart : Indicator
|
|||||||
this.indicator = new(source: bars.Select(this.DataSource),
|
this.indicator = new(source: bars.Select(this.DataSource),
|
||||||
period: this.Period, useNaN: false);
|
period: this.Period, useNaN: false);
|
||||||
}
|
}
|
||||||
|
protected override void OnUpdate(UpdateArgs args)
|
||||||
protected void OnNewData(bool update = false) { this.indicator.Add(update); }
|
|
||||||
|
|
||||||
protected override void OnUpdate(UpdateArgs args)
|
|
||||||
{
|
{
|
||||||
bool update = !(args.Reason == UpdateReason.NewBar ||
|
bool update = !(args.Reason == UpdateReason.NewBar ||
|
||||||
args.Reason == UpdateReason.HistoricalBar);
|
args.Reason == UpdateReason.HistoricalBar);
|
||||||
@@ -48,7 +45,6 @@ public class ZLEMA_chart : Indicator
|
|||||||
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
this.GetPrice(PriceType.High), this.GetPrice(PriceType.Low),
|
||||||
this.GetPrice(PriceType.Close),
|
this.GetPrice(PriceType.Close),
|
||||||
this.GetPrice(PriceType.Volume), update);
|
this.GetPrice(PriceType.Volume), update);
|
||||||
this.OnNewData(update);
|
|
||||||
|
|
||||||
double result = this.indicator[this.indicator.Count - 1].v;
|
double result = this.indicator[this.indicator.Count - 1].v;
|
||||||
this.SetValue(result);
|
this.SetValue(result);
|
||||||
|
|||||||
@@ -8,15 +8,33 @@
|
|||||||
<AlgoType>Indicator</AlgoType>
|
<AlgoType>Indicator</AlgoType>
|
||||||
<AssemblyName>Quantower_QTAlib</AssemblyName>
|
<AssemblyName>Quantower_QTAlib</AssemblyName>
|
||||||
<RootNamespace>QuanTAlib</RootNamespace>
|
<RootNamespace>QuanTAlib</RootNamespace>
|
||||||
<Configurations>Release</Configurations>
|
<DebugType>embedded</DebugType>
|
||||||
<BaseOutputPath>bin\</BaseOutputPath>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<Nullable>disable</Nullable>
|
||||||
|
<SignAssembly>False</SignAssembly>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||||
|
<Optimize>True</Optimize>
|
||||||
|
<WarningLevel>3</WarningLevel>
|
||||||
|
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
|
||||||
|
<PlatformTarget>anycpu</PlatformTarget>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
||||||
|
<DebugType>embedded</DebugType>
|
||||||
|
<Optimize>True</Optimize>
|
||||||
|
<WarningLevel>3</WarningLevel>
|
||||||
|
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
|
||||||
|
<PlatformTarget>anycpu</PlatformTarget>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="..\Source\**\*.cs" Exclude="..\Source\obj\**"/>
|
<Compile Include="..\Source\**\*.cs" Exclude="..\Source\obj\**" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<Target Name="CopyCustomContent" AfterTargets="AfterBuild" >
|
<Target Name="CopyCustomContent" AfterTargets="AfterBuild">
|
||||||
<Copy SourceFiles=".\bin\$(Configuration)\net48\Quantower_QTAlib.dll" DestinationFolder="\Quantower\Settings\Scripts\Indicators\QuanTAlib" />
|
<Copy SourceFiles=".\bin\$(Configuration)\net48\Quantower_QTAlib.dll" DestinationFolder="\Quantower\Settings\Scripts\Indicators\QuanTAlib" />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
<PackageReadmeFile>readme.md</PackageReadmeFile>
|
<PackageReadmeFile>readme.md</PackageReadmeFile>
|
||||||
<TargetFrameworks>net7.0;net6.0;net48;netcoreapp3.1;netstandard2.1</TargetFrameworks>
|
<TargetFrameworks>net7.0;net6.0;net48;netcoreapp3.1;netstandard2.1</TargetFrameworks>
|
||||||
<ImplicitUsings>disable</ImplicitUsings>
|
<ImplicitUsings>disable</ImplicitUsings>
|
||||||
<LangVersion>10.0</LangVersion>
|
<LangVersion>preview</LangVersion>
|
||||||
<Nullable>disable</Nullable>
|
<Nullable>disable</Nullable>
|
||||||
<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
|
<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
|
||||||
<NeutralLanguage>en-US</NeutralLanguage>
|
<NeutralLanguage>en-US</NeutralLanguage>
|
||||||
|
|||||||
@@ -10,6 +10,22 @@
|
|||||||
<Platforms>AnyCPU;x64</Platforms>
|
<Platforms>AnyCPU;x64</Platforms>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||||
|
<NoWarn>1701;1702;MSB3270</NoWarn>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
||||||
|
<NoWarn>1701;1702;MSB3270</NoWarn>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<NoWarn>1701;1702;MSB3270</NoWarn>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<NoWarn>1701;1702;MSB3270</NoWarn>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="JetBrains.dotCover.CommandLineTools" Version="2022.1.0-eap10">
|
<PackageReference Include="JetBrains.dotCover.CommandLineTools" Version="2022.1.0-eap10">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
|||||||
Reference in New Issue
Block a user