Files
marketdata/MarketDataLib/Generator/CMTrend/CMTMACDIndicator.cs
2024-02-22 14:52:53 -05:00

32 lines
1.3 KiB
C#

using MarketData.Cache;
using MarketData.MarketDataModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MarketData.Generator.CMTrend
{
public class CMTMACDIndicator
{
private CMTMACDIndicator()
{
}
public static bool IsMACDDowntrend(DateTime tradeDate,String symbol,CMTParams parameters)
{
Prices prices=GBPriceCache.GetInstance().GetPrices(symbol,tradeDate,parameters.MACDSignalDays*3);
if(null==prices||!prices[0].Date.Date.Equals(tradeDate.Date)) return true;
MACDSetup macdSetup=new MACDSetup(parameters.MACDSetup);
MACDSignals macdSignals=MACDGenerator.GenerateMACD(prices,macdSetup);
Signals signalsMACD=SignalGenerator.GenerateSignals(macdSignals);
signalsMACD=new Signals(signalsMACD.Take(parameters.MACDSignalDays).ToList());
int weakSellSignalCount=(from Signal signal in signalsMACD where signal.IsWeakSell() select signal).Count();
int strongSellSignalCount=(from Signal signal in signalsMACD where signal.IsStrongSell() select signal).Count();
if(parameters.MACDRejectWeakSells&&weakSellSignalCount>0) return true;
if(parameters.MACDRejectStrongSells&&strongSellSignalCount>0) return true;
return false;
}
}
}