Files
marketdata/MarketDataLib/MarketDataModel/Stochastic.cs
2024-02-22 14:52:53 -05:00

139 lines
3.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using MarketData.Utils;
// Filename: Stochastic.cs
// Author:Sean Kessler
// Date:08/2013
namespace MarketData.MarketDataModel
{
public class StochasticElementsByDate : Dictionary<DateTime, StochasticElement>
{
public StochasticElementsByDate()
{
}
}
public class Stochastics : List<StochasticElement>
{
public static String GetHeader()
{
StringBuilder sb = new StringBuilder();
sb.Append("Date,Symbol,Open,High,Low,Close,LN,HN,HX,LX,%K,%D");
return sb.ToString();
}
public StochasticElementsByDate GetBollingerBandElementsByDate()
{
StochasticElementsByDate stochasticElementsByDate = new StochasticElementsByDate();
for (int index = 0; index < Count; index++)
{
StochasticElement stochasticElement = this[index];
if (!stochasticElementsByDate.ContainsKey(stochasticElement.Date)) stochasticElementsByDate.Add(stochasticElement.Date, stochasticElement);
}
return stochasticElementsByDate;
}
}
public class StochasticElement
{
private DateTime date;
private String symbol;
private double open;
private double high;
private double low;
private double close;
private double ln;
private double hn;
private double hx;
private double lx;
private double pd; // %D
private double pk; // %K
public StochasticElement()
{
}
public DateTime Date
{
get { return date; }
set { date = value; }
}
public String Symbol
{
get { return symbol; }
set { symbol = value; }
}
public double Open
{
get { return open; }
set { open = value; }
}
public double High
{
get { return high; }
set { high = value; }
}
public double Low
{
get { return low; }
set { low = value; }
}
public double Close
{
get { return close; }
set { close = value; }
}
public double LN
{
get { return ln; }
set { ln = value; }
}
public double HN
{
get { return hn; }
set { hn = value; }
}
public double HX
{
get { return hx; }
set { hx = value; }
}
public double LX
{
get { return lx; }
set { lx = value; }
}
public double PD
{
get { return pd; }
set { pd = value; }
}
public double PK
{
get { return pk; }
set { pk = value; }
}
public bool PKInRange(double lowRange, double highRange)
{
if (PK >= lowRange && PK <= highRange) return true;
return false;
}
public override String ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append(Utility.DateTimeToStringMMSDDSYYYY(Date)).Append(",");
sb.Append(Symbol).Append(",");
sb.Append(Open).Append(",");
sb.Append(High).Append(",");
sb.Append(Low).Append(",");
sb.Append(Close).Append(",");
sb.Append(LN).Append(",");
sb.Append(HN).Append(",");
sb.Append(HX).Append(",");
sb.Append(LX).Append(",");
sb.Append(PK).Append(",");
sb.Append(PD);
return sb.ToString();
}
}
}