Chart object catalog

The given examples can be used with the following template strategy:

@Override
public void onStart(IContext context) throws JFException {
    IHistory history = context.getHistory();
    IConsole console = context.getConsole();
    Instrument instrument = Instrument.EURUSD;
    IChart chart = context.getChart(instrument);

    if(chart == null){
        console.getErr().println("No chart opened for " + instrument);
        context.stop(); //stop the strategy
    }
    Period period = chart.getSelectedPeriod();
    OfferSide offerSide = chart.getSelectedOfferSide();

    IChartObjectFactory factory = chart.getChartObjectFactory();     
    IBar bar10 = history.getBar(instrument, period, offerSide, 10);
    IBar bar30 = history.getBar(instrument, period, offerSide, 30);

    //TODO: place here the code of the respective chart object
}

ChartObjectTemplate.java

Lines

Vertical line

A vertical line from the top to the bottom of the chart window.

Code example:

IVerticalLineChartObject vLine = factory.createVerticalLine("vLine", bar10.getTime());
chart.add(vLine);

VLine2

Horizontal line

A horizontal line from the left to the right the chart window.

Code example:

IHorizontalLineChartObject hLine = factory.createHorizontalLine("hLine", bar10.getClose() );
chart.add(hLine);  

HLine2

Short line

A short line.

Code example:

IShortLineChartObject shortLine = factory.createShortLine("shortLine", 
        bar10.getTime(), bar10.getHigh(), 
        bar30.getTime(),bar30.getLow());
chart.add(shortLine);  

ShortLine2

Long line

A line which traverses the whole chart window. Code example:

ILongLineChartObject longLine = factory.createLongLine("longLine", 
        bar10.getTime(), bar10.getHigh(), 
        bar30.getTime(),bar30.getLow());
chart.add(longLine);

LongLine2

Consider another example: LongTrendLine.java

Poly line

Code example:

IPolyLineChartObject polyLine = chart.getChartObjectFactory().createPolyLine("polyLine");
polyLine.addNewPoint(bar30.getTime(), bar30.getLow());
polyLine.addNewPoint(bar30.getTime() + period.getInterval() * 5, bar30.getLow() + instrument.getPipValue() * 10);
polyLine.addNewPoint(bar30.getTime() + period.getInterval() * 10, bar30.getLow() - instrument.getPipValue() * 10);
polyLine.addNewPoint(bar30.getTime() + period.getInterval() * 15, bar30.getLow() + instrument.getPipValue() * 10);
polyLine.addNewPoint(bar10.getTime(), bar10.getLow());
chart.add(polyLine);

PolyLine2

Ray line

Code example:

IRayLineChartObject rayLine = chart.getChartObjectFactory().createRayLine("rayLine",
        bar10.getTime(), bar10.getHigh(), 
        bar30.getTime(), bar30.getLow());
chart.add(rayLine);

RayLine2

Price marker

Code example:

IPriceMarkerChartObject priceMarker = factory.createPriceMarker("priceMarker", bar10.getHigh());
chart.add(priceMarker);

Order line

Code example: IOrderLineChartObject orderLine = factory.createOrderLine("orderLine", bar10.getHigh()); chart.add(orderLine);

OrderLine2

Graphical and compound objects

Channel

Two parallel lines which indicate a trend.

Code example:

IChannelChartObject channel = chart.getChartObjectFactory().createChannel("channelLine", 
        bar30.getTime(), bar30.getClose(),
        bar10.getTime(), bar10.getClose() + instrument.getPipValue() * 10,   
        bar10.getTime(), bar10.getClose() + instrument.getPipValue() * 20);
chart.add(channel);

Channel2

Rectangle

Code example:

IRectangleChartObject rectangle = factory.createRectangle("rectangle", 
        bar10.getTime(), bar10.getHigh(), 
        bar30.getTime(), bar30.getLow());
chart.add(rectangle);

Rectangle2

Triangle

Code example:

ITriangleChartObject triangle = factory.createTriangle("triangle", 
        bar10.getTime(), bar10.getHigh(), 
        bar30.getTime(), bar30.getLow(), 
        bar30.getTime(), bar30.getHigh() + instrument.getPipValue() * 20
);
chart.add(triangle);

Triangle2

Ellipse

Code example:

IEllipseChartObject ellipse = factory.createEllipse("ellipse", 
        bar10.getTime(), bar10.getHigh(), 
        bar30.getTime(), bar30.getLow());
chart.add(ellipse);

Ellipse2

Text

ITextChartObject text = factory.createText("textKey", bar10.getTime(), bar10.getLow());
text.setText("Hello world");
text.setColor(Color.BLUE);
chart.add(text);

Text2

Symbol

Consider drawing a text by character codes:

ITextChartObject text = chart.getChartObjectFactory().createText("symbolKey", tick.getTime(), tick.getAsk());        
//pick character number from http://www.alanwood.net/demos/wingdings.html
text.setText(String.valueOf(new char[] {10102, 10103, 10104}), new Font(Font.DIALOG, Font.PLAIN, 30));
text.setColor(Color.BLUE);
chart.add(text);

Symbol

Label

In comparison with ITextChartObject, which gets plotted in time-price coordinate system, the IScreenLabelChartObject gets plotted in particular distance from a particular corner of the chart.

IScreenLabelChartObject label = chart.getChartObjectFactory().createScreenLabel("screenLabel");
label.setCorner(Corner.BOTTOM_RIGHT);
label.setxDistance(50);
label.setyDistance(50);
label.setText("Screen label", new Font(Font.SANS_SERIF, Font.BOLD, 20));
label.setColor(Color.RED);
chart.add(label); 

ScreenLabel2

Signal Up

ISignalUpChartObject signalUp = factory.createSignalUp("signalUpKey",
    bar10.getTime(), bar10.getLow()
);
chart.add(signalUp);

SignalUp2

Signal Down

ISignalDownChartObject signalDown = factory.createSignalDown("signalDownKey",
    bar10.getTime(), bar10.getHigh()
);
chart.add(signalDown);

SignalDown2

Fibo arc

Code example:

IFiboArcChartObject fiboArc = factory.createFiboArc("fiboArc",
        bar30.getTime(), bar30.getLow(),
        bar10.getTime(), bar10.getLow());
chart.add(fiboArc);

FiboArc2

Gann

One can change the Gann object appearance by application of the setPipsPerBar method.

Gann angles

Code example:

IGannAnglesChartObject gannAngles = factory.createGannAnglesChartObject("gannAngles", 
        bar10.getTime(), bar10.getClose());
chart.add(gannAngles);
Consider changing the angle every 2 seconds:
for(double pipsPerBar = 0.5; pipsPerBar<5; pipsPerBar+=0.5){
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
         e.printStackTrace();
    }
    gannAngles.setPipsPerBar(pipsPerBar);
}

GannAngles2

Gann grid

Code example:

IGannGridChartObject gannGrid = factory.createGannGridChartObject("gannGrid", 
        bar10.getTime(), bar10.getClose());
chart.add(gannGrid);
Consider changing the grid segment height every 2 seconds:
for(double pipsPerBar = 0.5; pipsPerBar<5; pipsPerBar+=0.5){
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
         e.printStackTrace();
    }
    gannGrid.setPipsPerBar(pipsPerBar);
}

GannGrid2

Leveled objects

Leveled objects are represented by the ILeveledChartObject interface. For leveled objects one can:

  • retrieve all level values,
  • add a level,
  • modify a level (change value, color, or add a label),
  • remove a level.

Consider a method which prints all level values:

private void printLevels( ILeveledChartObject leveledObject, String comment){
    String str = "";
    for(int i = 0; i <leveledObject.getLevelsCount(); i++){
        str +=  i + "=" + leveledObject.getLevelValue(i) + ", ";
    }
    console.getOut().println(comment + leveledObject.getClass().getSimpleName() + " levels: " +str);
}

Consider a method which removes, modifies, and adds a new level. It also shows how one can add a label to a level.

private void customizeLevels( ILeveledChartObject leveledObject){
    printLevels(leveledObject, "before modification: ");

    console.getOut().println("remove level: "+leveledObject.getLevelValue(2));
    leveledObject.removeLevel(2);

    leveledObject.addLevel("new level", 0.90, Color.RED); 

    leveledObject.setLevelValue(3, 1.40);
    leveledObject.setLevelColor(3, Color.BLUE);
    leveledObject.setLevelLabel(3, "modified level");

    printLevels(leveledObject, "after modification: ");
}

Consider a strategy which sequentially adds each type of level objects to chart, customizes its levels and after 5 seconds, removes the object:

LeveledObjects.java

Fibo retracements

Code example for the fibo retracements in the picture:

IFiboRetracementChartObject fiboRetracement = factory.createFiboRetracement("fiboRetracement",
        bar30.getTime(), bar30.getLow(),
        bar10.getTime(), bar30.getLow()+ instrument.getPipValue() * 10);
chart.add(fiboRetracement);

FiboRetracement2

Fibo times

Code example:

IFiboTimeZonesChartObject fiboTimezones = factory.createFiboTimeZones("fiboTimeZones",
        bar30.getTime(), bar30.getLow(),
        bar30.getTime() + period.getInterval() * 2, bar30.getLow());
chart.add(fiboTimezones);

FiboTimeZones2

Fibo fan

Code example:

IFiboFanChartObject fiboFan = factory.createFiboFan("fiboFan",
        bar30.getTime(), bar30.getLow(),
        bar10.getTime(), bar30.getLow()+ instrument.getPipValue() * 20);
chart.add(fiboFan);

FiboFan2

Fibo expansion

Code example:

IFiboExpansionChartObject fiboExpansion =  factory.createFiboExpansion("fiboExpansion", 
        bar30.getTime(), bar30.getClose(),
        bar10.getTime(), bar10.getClose() + instrument.getPipValue() * 10,   
        bar10.getTime(), bar10.getClose());
chart.add(fiboExpansion);

FiboExpansion3

Andrews pitchfork

Code example:

IAndrewsPitchforkChartObject andrewsPitchfork = factory.createAndrewsPitchfork("andrewsPitchfork", 
        bar30.getTime(), bar30.getClose(),
        bar10.getTime(), bar10.getClose() + instrument.getPipValue() * 10,   
        bar10.getTime(), bar10.getClose());
chart.add(andrewsPitchfork);

AndrewsPitchfork3

Percent

Code example:

IPercentChartObject percent = factory.createPercent("percent",
        bar30.getTime(), bar30.getLow(), 
        bar30.getTime(), bar30.getLow() + instrument.getPipValue() * 30);
chart.add(percent);

Percent2

The information on this web site is provided only as general information, which may be incomplete or outdated. Click here for full disclaimer.