All Downloads are FREE. Search and download functionalities are using the official Maven repository.

in.kncsolutions.dhelm.candlepattern.oneline.TakuriLine Maven / Gradle / Ivy

Go to download

This library provides the necessary implementations to screen the following patterns: Bullish Belt Hold Bearish Belt Hold Hammer Hanging Man Southern Doji Northern Doji Gapping Up Doji Gapping Down Doji Takuri Line One Candle Shooting Star Bullish Strong Line Bearish Strong Line Bullish Harami Bearish Harami Bullish Engulfing Bearish Engulfing Bullish Kicking Bearish Kicking Matching Low Matching High Bullish Harami Cross Bearish Harami Cross Bullish Doji Star Bearish Doji Star Dark Cloud Cover Piercing Line Descending Hawk Homing Pigeon Bullish Abandoned Baby Bearish Abandoned Baby Three Inside Up Three Inside Down Three Outside Up Three Outside Down Three White Soldiers Three Black Crows Morning Doji Star Evening Doji Star Morning Star Evening Star Upside Tasuki Gap Downside Tasuki Gap Bullish Side by Side White Lines Bearish Side by Side White Lines Rising Three Method

The newest version!
/**
 *Copyright 2018 Knc Solutions Private Limited

  *Licensed under the Apache License, Version 2.0 (the "License");
  *you may not use this file except in compliance with the License.
  *You may obtain a copy of the License at

  * http://www.apache.org/licenses/LICENSE-2.0

  *Unless required by applicable law or agreed to in writing, software
  *distributed under the License is distributed on an "AS IS" BASIS,
  *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  *See the License for the specific language governing permissions and
  *limitations under the License.
 */
 package in.kncsolutions.dhelm.candlepattern.oneline;
 import java.util.*; 
 import in.kncsolutions.dhelm.candlebasic.*;
 import in.kncsolutions.dhelm.exceptions.DataException;
 import in.kncsolutions.dhelm.mathcal.Mathfns;
 /**
 *According to literature the Takuri Line pattern is a single line pattern composed of
 *a  white or black candle with small body. There should be no or very small upper shadow. The lower shadow should be significantly
 * much longer than the body. The candle appears as a long candle. The prior trend should be down trend.
 */
 public class TakuriLine{
   private List Open=new ArrayList();
   private List High=new ArrayList();
   private List Low=new ArrayList();
   private List Close=new ArrayList();
   private int RefLength;
   private int RefTrend;;
   private double Percentage;
   private double []trendPrior={0,0};
   private boolean isTakuriLine;
   /**
  *@param open : List of opening prices where first element is the latest data.
  *@param high : List of high prices where first element is the latest data.
  *@param low : List of low prices where first element is the latest data.
  *@param close : List of closing prices where first element is the latest data.
  *@param numLen : Number of previous periods w.r.t which it is to be found that if the latest candle is long or short.
  *@param numTrend : Number of previous periods w.r.t which the previous trend have to be approximated.
  *@param percentage : The percentage by which if the latest candle is longer than the previous candles, it will be treated as a long candle, otherwise short. 
  *@throws DataException if sufficient data not available.
  */
   public TakuriLine(List open,List high,List low,List close,int numLen,int numTrend,double percentage)throws DataException{
     Open.addAll(open);
	 High.addAll(high);
	 Low.addAll(low);
	 Close.addAll(close);
	 RefLength=numLen;
	 RefTrend=numTrend;
	 Percentage=percentage;
	 isTakuriLine=false;
	 if(Open.size()<((RefTrend+1>RefLength) ? RefTrend+1 : RefLength)
        || (Open.size()!=Close.size() || Open.size()!=High.size() || Open.size()!=Low.size() )){
	   throw new DataException();
	 }
	 else{
	   TakuriLine();
	 }
   }
   /*
   *
   */
   private void TakuriLine()throws DataException{
     if((new WhiteSpinningTop(Open,High,Low,Close,RefLength,Percentage)).isLongWhiteSpinningTop()
	     || (new BlackSpinningTop(Open,High,Low,Close,RefLength,Percentage)).isLongBlackSpinningTop()
		  || (new HighWave(Open,High,Low,Close,RefLength,Percentage)).isHighWave()){
		if(High.get(0)-Math.max(Open.get(0),Close.get(0))<=Math.abs(Open.get(0)-Close.get(0))
		      && Math.min(Open.get(0),Close.get(0))-Low.get(0)>3*Math.abs(Open.get(0)-Close.get(0))){
			  trendPrior=Mathfns.ComputeTrendLine(Close.subList(1,RefTrend+1),Close.subList(1,RefTrend+1).size());
			  if(trendPrior[0]>0)
			    isTakuriLine=true;
		}
	 }
   }
   /**
   *@return Returns true if the TakuriLine pattern is generated. 
   */
   public boolean isTakuriLine(){
     return isTakuriLine;
   }
 }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy