package charts.test;

import java.awt.Color;
import java.text.DecimalFormat;

import com.dukascopy.api.Configurable;
import com.dukascopy.api.IAccount;
import com.dukascopy.api.IBar;
import com.dukascopy.api.IChart;
import com.dukascopy.api.IChartObject.ATTR_INT;
import com.dukascopy.api.IContext;
import com.dukascopy.api.IMessage;
import com.dukascopy.api.IStrategy;
import com.dukascopy.api.ITick;
import com.dukascopy.api.Instrument;
import com.dukascopy.api.JFException;
import com.dukascopy.api.Period;
import com.dukascopy.api.drawings.ILabelChartObject;
import com.dukascopy.api.drawings.IShortLineChartObject;

public class ShortLineMidBar implements IStrategy {

	@Configurable("Period")
	public Period period = Period.TEN_SECS;
    @Configurable("Instrument")
    public Instrument instrument = Instrument.EURUSD;
    @Configurable("Line lenght (in bar widths)")
	public double barWidth = 1.5;
    
	private IChart chart;
	private DecimalFormat df = new DecimalFormat("0.00000");
	
	
	@Override
	public void onStart(IContext context) throws JFException {
		this.chart = context.getChart(Instrument.EURUSD);
	}
	@Override
	public void onTick(Instrument instrument, ITick tick) throws JFException {}
	@Override
	public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException {
		if (instrument != this.instrument || period != this.period){
			return;
		}	
		double price = (bidBar.getHigh() + bidBar.getLow()) /2;
		long barMidTime = bidBar.getTime() + period.getInterval()/3;
		long lineLength = (long)(barWidth * period.getInterval());
		long lineStartTime = barMidTime - lineLength/2;
		long lineEndTime = barMidTime + lineLength/2;
		
		IShortLineChartObject line = chart.getChartObjectFactory().createShortLine();
		line.setTime(0, lineStartTime);
		line.setTime(1, lineEndTime);
		line.setPrice(0, price);
		line.setPrice(1, price);
		line.setText(df.format(price));
		line.setAttrInt(ATTR_INT.WIDTH, 3);
		line.setColor(Color.BLUE);
		chart.addToMainChart(line);	
		
		ILabelChartObject label = chart.getChartObjectFactory().createLabel();
		label.setTime(0, lineEndTime);
		label.setPrice(0, price);
		label.setText(df.format(price));
		label.setColor(Color.MAGENTA);
		chart.addToMainChart(label);
		
		
	}
	@Override
	public void onMessage(IMessage message) throws JFException {}
	@Override
	public void onAccount(IAccount account) throws JFException {}
	@Override
	public void onStop() throws JFException {}

}
