public static bool BullishMorningStar(Candle candle, Candle prevCandle, Candle prevPrevCandle) { bool cond1 = (candle.High > prevCandle.High && candle.Close > prevCandle.High) ? true : false; bool cond2 = (candle.Open > prevCandle.Close) ? true : false; bool cond3 = (prevPrevCandle.High > prevCandle.High && prevPrevCandle.Open > prevCandle.High) ? true : false; bool cond4 = (prevPrevCandle.Close > prevCandle.Close) ? true : false; double midPoint = (prevPrevCandle.Close + prevPrevCandle.Open) / 2; bool cond5 = (candle.Close > midPoint) ? true : false; if (candle.IsBuy() && (prevCandle.IsBuy() || prevCandle.IsSell()) && prevPrevCandle.IsSell() && cond1 && cond2 && cond3 && cond4 && cond5) return true; return false; }
public static bool BullishHarami(Candle candle, Candle prevCandle) { bool cond1 = (candle.High < prevCandle.High) ? true : false; bool cond2 = (candle.Low > prevCandle.Low) ? true : false; bool cond3 = (candle.Open < prevCandle.Close) ? true : false; bool cond4 = (candle.Close > prevCandle.Open) ? true : false; bool cond5 = (candle.Close < prevCandle.Close) ? true : false; bool cond6 = (candle.Open > prevCandle.Open) ? true : false; double midPoint = (prevCandle.Open + prevCandle.Close) * 0.5; bool cond7 = (candle.Close >= midPoint) ? true : false; bool cond8 = (candle.Close <= midPoint) ? true : false; if (candle.IsSell() && prevCandle.IsBuy() && cond1 && cond2 && cond3 && cond4 && cond7) return true; if (candle.IsBuy() && prevCandle.IsBuy() && cond1 && cond2 && cond5 && cond6 && cond8) return true; return false; }
// Bullish reversal patterns public static bool BullishEngulfing(Candle candle, Candle prevCandle) { bool cond1 = (candle.High > prevCandle.High) ? true : false; bool cond2 = (candle.High > prevCandle.Open) ? true : false; bool cond3 = (candle.Close > prevCandle.High) ? true : false; bool cond4 = (candle.Close >= prevCandle.Open) ? true : false; bool cond5 = (candle.Low < prevCandle.Close) ? true : false; bool cond6 = (candle.Low < prevCandle.Low) ? true : false; bool cond7 = (candle.Open <= prevCandle.Close) ? true : false; bool cond8 = (candle.Open < prevCandle.Low) ? true : false; double midPoint = (candle.Close + candle.Open) * 0.5; bool cond9 = (prevCandle.High >= midPoint) ? true : false; bool cond10 = (prevCandle.Low <= midPoint) ? true : false; // Ideally situation if (candle.IsBuy() && prevCandle.IsSell() && cond1 && cond2 && cond3 && cond4 && cond5 && cond6 && cond7 && cond7 && cond9 && cond10) if (!IsDojiCandles(candle, prevCandle)) return true; // Normal situation if (candle.IsBuy() && prevCandle.IsSell() && cond1 && cond4 && cond6 && cond7 && cond9 && cond10) if (!IsDojiCandles(candle, prevCandle)) return true; return false; }
public static bool BullishHammer(Candle candle) { double point = candle.High - (candle.High - candle.Low) * 0.3; if ((candle.IsBuy() || candle.IsSell()) && candle.Close > point && candle.Open > point) return true; return false; }
public static bool BearishEveningStar(Candle candle, Candle prevCandle, Candle prevPrevCandle) { bool cond1 = (candle.Low < prevCandle.Low && candle.Close < prevCandle.Low) ? true : false; bool cond2 = (candle.Open < prevCandle.Close) ? true : false; bool cond3 = (prevPrevCandle.Low < prevCandle.Low && prevPrevCandle.Open < prevCandle.Low) ? true : false; bool cond4 = (prevPrevCandle.Close < prevCandle.Close) ? true : false; double midPoint = (prevPrevCandle.Close + prevPrevCandle.Open) / 2; bool cond5 = (candle.Close < midPoint) ? true : false; if (candle.IsSell() && (prevCandle.IsBuy() || prevCandle.IsSell()) && prevPrevCandle.IsBuy() && cond1 && cond2 && cond3 && cond4 && cond5) return true; return false; }