I have put together a small JForex strategy to manage my stop losses. In the event that a trade has been profitable throughout the past 30 minute bar, the stop loss is meant to be moved to break even. So far, this seems to work. However, if I move the stop loss beyond break even to protect profit, the strategy seems to be having issues as it moves the stop back to break even. This defies the logic and I cannot understand why this is happening. If anyone is able to help me find out how to correct this, it would be greatly appreciated.
package jforex;
import java.util.*;
import com.dukascopy.api.*;
public class SetBreakEven implements IStrategy {
private IEngine engine;
private IConsole console;
private IHistory history;
private IContext context;
private IIndicators indicators;
private IUserInterface userInterface;
public void onStart(IContext context) throws JFException {
this.engine = context.getEngine();
this.console = context.getConsole();
this.history = context.getHistory();
this.context = context;
this.indicators = context.getIndicators();
this.userInterface = context.getUserInterface();
}
public void onAccount(IAccount account) throws JFException {
}
public void onMessage(IMessage message) throws JFException {
}
public void onStop() throws JFException {
}
public void onTick(Instrument instrument, ITick tick) throws JFException {
}
public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException {
if (!period.equals(Period.THIRTY_MINS)) {
return;
}
for (IOrder order : engine.getOrders(instrument)) {
if (order.getState() == IOrder.State.FILLED) {
if (order.isLong()) {
if (askBar.getLow() > order.getOpenPrice() && order.getStopLossPrice() < order.getOpenPrice()) {
order.setStopLossPrice(order.getOpenPrice());
}
} else {
if (bidBar.getHigh() < order.getOpenPrice() && order.getStopLossPrice() > order.getOpenPrice()) {
order.setStopLossPrice(order.getOpenPrice());
}
}
}
}
}
}