Jforex Utilities Sample And Jfquantisan Jar
Greetings to everybody.
Recently when I visited blog of Paul Lam, I've noticed JFUtil 2.0 alpha demonstration of usage of his library JForex-Utilities.
It is nice example, but very unformatted. It looks like this:
So I've made formatting corrections, and put his sample on my page with formatting:
package jforex.yz; import java.util. * ; import com.dukascopy.api. * ; import com.quantisan.JFUtil. * ; @ RequiresFullAccess@Library("d:\\Users\\Administrator\\JForex\\files\\JFQuantisan.jar") public class JfutilDemo implements IStrategy { private int counter = new Random().nextInt(100); // notice the lack of fields to manage JForex objects @Override public void onStart(IContext context) throws JFException { // ** Essential steps ** // must initialize objects once and for all JForexContext.setContext(context); JForexAccount.setAccount(context.getAccount()); Set < Instrument > set = new HashSet < Instrument > (context.getSubscribedInstruments()); set = context.getSubscribedInstruments(); // get list of subscribed instruments // subscribe to transitional instruments for currency conversion calculations Pairer.subscribeTransitionalInstruments(set); // \ * \ * End of essential steps\ * \ * Printer.println("-- Quantisan.com JFUtil v2 .0 alpha: Usage demo--"); Printer.println(" "); } @Override public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException { if (period != Period.TEN_SECS) { return; // only run every 10 sec. } // *** 1. access IContext and IAccount from anywhere Printer.println("Account equity = " + JForexAccount.getEquity()); // get an EMA indicator value double ema = JForexContext.getIndicators().ema(instrument, Period.TEN_SECS, OfferSide.BID, IIndicators.AppliedPrice.MEDIAN_PRICE, 14, 1); Printer.println(instrument.toString() + " EMA = " + ema); // printing the EMA value // *** 2. Profit/loss calculation to account currency before placing your order // Demonstrating currency conversion double risk = 100 * Pairer.convertPipToAccountCurrency(instrument); String symbol = JForexAccount.getAccountCurrency().getSymbol(); Printer.println(symbol + risk + " risked in for 1,000 units and 100 pips move in " + instrument.toString()); // ** 3. Simplify order parameters with order ticket builder // Demonstrating trade ordering String label = instrument.toString().substring(0, 2) + counter; OrderTicket mktBuyTicket = new OrderTicket.Builder(label, //setting required ticket info instrument, instrument, IEngine.OrderCommand.BUY, 0.1).build(); // build ticket Orderer.placeOrder(mktBuyTicket); // placing order // market buy order with a 100 pips stop and 100 pips target double stopPrice = JForexContext.getPrice(instrument) - (100 * instrument.getPipValue()); double targetPrice = JForexContext.getPrice(instrument) + (100 * instrument.getPipValue()); label = instrument.toString().substring(0, 2) + counter; OrderTicket buySpTicket = new OrderTicket.Builder(label, instrument, IEngine.OrderCommand.BUY, 0.1). setStopLossPrice(stopPrice). // set stop price to setTakeProfitPrice(targetPrice) // set target .build(); // ** 4. Single method to placing orders for all order types and parameters\ * \ * \ * Orderer.placeOrder(buySpTicket); } @Override public void onAccount(IAccount account) throws JFException { JForexAccount.setAccount(account); // update IAccount to latest } @Override public void onStop() throws JFException { for (IOrder order: Orderer.getOrders()) { // close all orders Orderer.close(order); } } public void onMessage(IMessage message) throws JFException {} public void onTick(Instrument instrument, ITick tick) throws JFException {} }
As I say in such situations, feel the difference.
If you're inspired by the power of customization and streamlined development showcased in this article, why not take the next step with Acumatica? Whether you're looking to enhance your ERP system with tailored solutions or need specific customizations to meet your unique business needs, we’re here to help. Leave a customization request today and let’s transform your Acumatica experience into something truly extraordinary. Your vision, our expertise—let’s build the future together!