Ejemplo n.º 1
0
    // Doji
    /// <include file='./info.xml' path='indicator/*' />
    ///
    public static IEnumerable <CandleResult> GetDoji <TQuote>(
        this IEnumerable <TQuote> quotes,
        double maxPriceChangePercent = 0.001)
        where TQuote : IQuote
    {
        // check parameter arguments
        ValidateDoji(maxPriceChangePercent);

        // initialize
        List <CandleResult> results = quotes.ConvertToCandleResults();
        int length = results.Count;

        // roll through candles
        for (int i = 0; i < length; i++)
        {
            CandleResult r = results[i];

            // check for current signal
            if (r.Candle.Open != 0)
            {
                if (Math.Abs((double)(r.Candle.Close / r.Candle.Open) - 1d) <= maxPriceChangePercent)
                {
                    r.Price  = r.Candle.Close;
                    r.Signal = Signal.Neutral;
                }
            }
        }

        return(results);
    }
Ejemplo n.º 2
0
    // MARUBOZU
    /// <include file='./info.xml' path='indicator/*' />
    ///
    public static IEnumerable <CandleResult> GetMarubozu <TQuote>(
        this IEnumerable <TQuote> quotes,
        double minBodyPercent = 0.95)
        where TQuote : IQuote
    {
        // check parameter arguments
        ValidateMarubozu(minBodyPercent);

        // initialize
        List <CandleResult> results = quotes.ConvertToCandleResults();
        int length = results.Count;

        // roll through candles
        for (int i = 0; i < length; i++)
        {
            CandleResult r = results[i];

            // check for current signal
            if (r.Candle.BodyPct >= minBodyPercent)
            {
                r.Price  = r.Candle.Close;
                r.Signal = r.Candle.IsBullish ? Signal.BullSignal : Signal.BearSignal;
            }
        }

        return(results);
    }
Ejemplo n.º 3
0
    public void CandleValues()
    {
        // sort
        List <CandleResult> candles = quotes.ConvertToCandleResults();

        // assertions

        // should always be the same number of results as there is quotes
        Assert.AreEqual(502, candles.Count);

        // sample values
        CandleResult r0 = candles[0];

        Assert.AreEqual(212.8m, r0.Candle.Close);
        Assert.AreEqual(1.83m, r0.Candle.Size);
        Assert.AreEqual(0.19m, r0.Candle.Body);
        Assert.AreEqual(0.55m, r0.Candle.UpperWick);
        Assert.AreEqual(1.09m, r0.Candle.LowerWick);
        Assert.AreEqual(0.10383, Math.Round(r0.Candle.BodyPct, 5));
        Assert.AreEqual(0.30055, Math.Round(r0.Candle.UpperWickPct, 5));
        Assert.AreEqual(0.59563, Math.Round(r0.Candle.LowerWickPct, 5));
        Assert.IsTrue(r0.Candle.IsBullish);
        Assert.IsFalse(r0.Candle.IsBearish);

        CandleResult r351 = candles[351];

        Assert.AreEqual(1.24m, r351.Candle.Size);
        Assert.AreEqual(0m, r351.Candle.Body);
        Assert.AreEqual(0.69m, r351.Candle.UpperWick);
        Assert.AreEqual(0.55m, r351.Candle.LowerWick);
        Assert.AreEqual(0, Math.Round(r351.Candle.BodyPct, 5));
        Assert.AreEqual(0.55645, Math.Round(r351.Candle.UpperWickPct, 5));
        Assert.AreEqual(0.44355, Math.Round(r351.Candle.LowerWickPct, 5));
        Assert.IsFalse(r351.Candle.IsBullish);
        Assert.IsFalse(r351.Candle.IsBearish);

        CandleResult r501 = candles[501];

        Assert.AreEqual(2.67m, r501.Candle.Size);
        Assert.AreEqual(0.36m, r501.Candle.Body);
        Assert.AreEqual(0.26m, r501.Candle.UpperWick);
        Assert.AreEqual(2.05m, r501.Candle.LowerWick);
        Assert.AreEqual(0.13483, Math.Round(r501.Candle.BodyPct, 5));
        Assert.AreEqual(0.09738, Math.Round(r501.Candle.UpperWickPct, 5));
        Assert.AreEqual(0.76779, Math.Round(r501.Candle.LowerWickPct, 5));
        Assert.IsTrue(r501.Candle.IsBullish);
        Assert.IsFalse(r501.Candle.IsBearish);
    }
Ejemplo n.º 4
0
    public void Standard()
    {
        List <CandleResult> results = quotes.GetMarubozu(0.95).ToList();

        // assertions

        // should always be the same number of results as there is quotes
        Assert.AreEqual(502, results.Count);
        Assert.AreEqual(6, results.Where(x => x.Signal != Signal.None).Count());

        // sample values
        CandleResult r31 = results[31];

        Assert.AreEqual(null, r31.Price);
        Assert.AreEqual(0, (int)r31.Signal);

        CandleResult r32 = results[32];

        Assert.AreEqual(222.10m, r32.Price);
        Assert.AreEqual(Signal.BullSignal, r32.Signal);

        CandleResult r33 = results[33];

        Assert.AreEqual(null, r33.Price);
        Assert.AreEqual(Signal.None, r33.Signal);

        CandleResult r34 = results[34];

        Assert.AreEqual(null, r34.Price);
        Assert.AreEqual(Signal.None, r34.Signal);

        CandleResult r274 = results[274];

        Assert.AreEqual(null, r274.Price);
        Assert.AreEqual(Signal.None, r274.Signal);

        CandleResult r277 = results[277];

        Assert.AreEqual(248.13m, r277.Price);
        Assert.AreEqual(Signal.BearSignal, r277.Signal);
    }
Ejemplo n.º 5
0
    public void Standard()
    {
        List <CandleResult> results = quotes.GetDoji(0.001).ToList();

        // assertions

        // should always be the same number of results as there is quotes
        Assert.AreEqual(502, results.Count);
        Assert.AreEqual(112, results.Where(x => x.Signal != Signal.None).Count());

        // sample values
        CandleResult r1 = results[1];

        Assert.AreEqual(null, r1.Price);
        Assert.AreEqual(0, (int)r1.Signal);

        CandleResult r23 = results[23];

        Assert.AreEqual(216.28m, r23.Price);
        Assert.AreEqual(Signal.Neutral, r23.Signal);

        CandleResult r46 = results[46];

        Assert.AreEqual(null, r46.Price);
        Assert.AreEqual(Signal.None, r46.Signal);

        CandleResult r392 = results[392];

        Assert.AreEqual(null, r392.Price);
        Assert.AreEqual(Signal.None, r392.Signal);

        CandleResult r451 = results[451];

        Assert.AreEqual(273.64m, r451.Price);
        Assert.AreEqual(1, (int)r451.Signal);

        CandleResult r477 = results[477];

        Assert.AreEqual(256.86m, r477.Price);
        Assert.AreEqual(Signal.Neutral, r477.Signal);
    }