Files
2024-02-22 14:52:53 -05:00

194 lines
4.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using MarketData.Utils;
namespace MarketData.MarketDataModel
{
public class MACDFastSlowSignalsComparerDesc : IComparer<MACDFastSlowSignal>
{
public int Compare(MACDFastSlowSignal macd1, MACDFastSlowSignal macd2)
{
if (macd1.Date < macd2.Date) return -1;
else if (macd1.Date > macd2.Date) return 1;
return 0;
}
}
public class MACDFastSlowSignalsComparerAsc : IComparer<MACDFastSlowSignal>
{
public int Compare(MACDFastSlowSignal macd1, MACDFastSlowSignal macd2)
{
if (macd1.Date > macd2.Date) return -1;
else if (macd1.Date < macd2.Date) return 1;
return 0;
}
}
public class MACDFastSlowSignals : List<MACDFastSlowSignal>
{
private String symbol;
private DateTime fromDate;
private DateTime thruDate;
private DateTime date;
public MACDFastSlowSignals()
{
}
public MACDFastSlowSignals(ICollection<MACDFastSlowSignal> collection)
{
IEnumerator<MACDFastSlowSignal> enumerator=collection.GetEnumerator();
while (enumerator.MoveNext()) Add(enumerator.Current);
}
public Signals FastCondensedSignals{get;set;}
public Signals SlowCondensedSignals{get;set;}
public double MinFastMACD
{
get{return (from MACDFastSlowSignal signal in this select signal.MACDFast).Min()-.25;}
}
public double MinSlowMACD
{
get{return (from MACDFastSlowSignal signal in this select signal.MACDSlow).Min()-.25;}
}
public String Symbol
{
get { return symbol; }
set { symbol = value; }
}
public DateTime Date
{
get { return date; }
set { date = value; }
}
public DateTime FromDate
{
get { return fromDate; }
set { fromDate = value; }
}
public DateTime ThruDate
{
get { return thruDate; }
set { thruDate = value; }
}
}
public class MACDFastSlowSignal
{
private DateTime date;
private double signalFast;
private double macdFast;
private double signalSlow;
private double macdSlow;
public MACDFastSlowSignal()
{
}
public DateTime Date
{
get { return date; }
set { date = value; }
}
public double SignalFast
{
get { return signalFast; }
set { signalFast = value; }
}
public double MACDFast
{
get { return macdFast; }
set { macdFast = value; }
}
public double SignalSlow
{
get { return signalSlow; }
set { signalSlow = value; }
}
public double MACDSlow
{
get { return macdSlow; }
set { macdSlow = value; }
}
}
public class MACDSignals : List<MACDSignal>
{
public MACDSignals()
{
}
public float[] GetMACD(int startIndex, int count)
{
if (startIndex + count > Count) return null;
float[] macdArray = new float[count];
for (int index = startIndex, arrayIndex = 0; index < startIndex + count; index++, arrayIndex++)
{
macdArray[arrayIndex] = (float)this[index].MACD;
}
return macdArray;
}
}
public class MACDSignal
{
private String symbol;
private DateTime date;
private double fast; // fast 12
private double slow; // slow 26
private double signal; // signal 9
private double macd;
private double histogram;
public MACDSignal()
{
}
public String Symbol
{
get {return symbol; }
set { symbol = value; }
}
public DateTime Date
{
get { return date; }
set { date = value; }
}
public double Fast
{
get { return fast; }
set { fast = value; }
}
public double Slow
{
get { return slow; }
set { slow = value; }
}
public double Signal
{
get { return signal; }
set { signal = value; }
}
public double MACD
{
get { return macd; }
set { macd = value; }
}
public double Histogram
{
get { return histogram; }
set { histogram = value; }
}
public static String Header
{
get
{
return "Symbol,Date,Fast,Slow,Signal,MACD,Histogram";
}
}
public override String ToString()
{
StringBuilder sb=new StringBuilder();
sb.Append(symbol).Append(",");
sb.Append(Utility.DateTimeToStringMMSDDSYYYY(Date)).Append(",");
sb.Append(String.Format("{0:0.00000}",Fast)).Append(",");
sb.Append(String.Format("{0:0.00000}",Slow)).Append(",");
sb.Append(String.Format("{0:0.00000}",Signal)).Append(",");
sb.Append(String.Format("{0:0.00000}",MACD)).Append(",");
sb.Append(String.Format("{0:0.00000}",Histogram));
return sb.ToString();
}
}
}