|
Attention! Read the forum rules carefully before posting a topic.
Try to find an answer in Wiki before asking a question. Submit programming questions in this forum only. Off topics are strictly forbidden.
Any topics which do not satisfy these rules will be deleted.
JFOREX SDK how to save open position in array |
zix
|
Post subject: JFOREX SDK how to save open position in array |
Post rating: 0
|
Posted: Tue 11 Mar, 2014, 10:26
|
|
User rating: 6
Joined: Tue 11 Feb, 2014, 11:38 Posts: 60 Location: PolandPoland
|
Hello all, I have a question how to save open position in array package master;
import com.dukascopy.api.system.ISystemListener; import com.dukascopy.api.system.IClient; import com.dukascopy.api.system.ClientFactory; import com.dukascopy.api.*;
import java.awt.Color; import java.awt.List; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.InputStreamReader; import java.io.Reader; import java.io.Writer; import java.lang.reflect.Array; import java.nio.file.Files; import java.text.DateFormat; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.LinkedList; import java.util.Scanner; import java.util.Set;
import javax.swing.JFrame;
import org.slf4j.LoggerFactory; import org.slf4j.Logger;
public class MainStopFromConsole { private static final Logger LOGGER = LoggerFactory.getLogger(MainStopFromConsole.class); private static String jnlpUrl = "https://www.dukascopy.com/client/demo/jclient/jforex.jnlp"; private static String userName = "DEMO2PRFwj"; private static String password = "PRFwj";
//static String[] columns = {"Open Time", "Id", "Label", "Comment", "Instrument", "Side", "Amount", "Orginal Amount", "Open Price", "Stop Loss", "Take Profit", "Profit (Pips)", "Profit Currency", "Profit in USD", "Commission", "Commission USD"}; static String[] columns = {"Id", "Instrument", "Side", "Amount", "Open Price", "Stop Loss", "Take Profit"}; //static String[][] data = {{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"}, static String[][] data; //static String[][] data = null; //static JFrame jf = new JFrame(); public static void main(String[] args) throws Exception { //get the instance of the IClient interface final IClient client = ClientFactory.getDefaultInstance(); //set the listener that will receive system events client.setSystemListener(new ISystemListener() { private int lightReconnects = 3;
public void onStart(long procid) { //IConsole console = context.getConsole(); LOGGER.info("Strategy started: "); }
public void onStop(long processId) { LOGGER.info("Strategy stopped: " + processId); if (client.getStartedStrategies().size() == 0) { System.exit(0); } }
@Override public void onConnect() { LOGGER.info("Connected"); lightReconnects = 3; }
@Override public void onDisconnect() { LOGGER.warn("Disconnected"); if (lightReconnects > 0) { LOGGER.error("TRY TO RECONNECT, reconnects left: " + lightReconnects); client.reconnect(); --lightReconnects; } else { try { //sleep for 10 seconds before attempting to reconnect Thread.sleep(10000); } catch (InterruptedException e) { //ignore } try { client.connect(jnlpUrl, userName, password); } catch (Exception e) { LOGGER.error(e.getMessage(), e); } } } });
LOGGER.info("Connecting..."); //connect to the server using jnlp, user name and password client.connect(jnlpUrl, userName, password);
//wait for it to connect int i = 10; //wait max ten seconds while (i > 0 && !client.isConnected()) { Thread.sleep(1000); i--; } if (!client.isConnected()) { LOGGER.error("Failed to connect Dukascopy servers"); System.exit(1); } //subscribe to the instruments Set<Instrument> instruments = new HashSet<Instrument>(); instruments.add(Instrument.EURUSD); LOGGER.info("Subscribing instruments..."); client.setSubscribedInstruments(instruments); //start the strategy LOGGER.info("Starting strategy"); final long strategyId = client.startStrategy(new IStrategy(){ public Instrument instrument = Instrument.EURUSD; private IConsole console; private IEngine engine;
public void onStart(IContext context) throws JFException { console = context.getConsole(); engine = context.getEngine();
} public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException { if ( instrument == this.instrument){ //console.getOut().println(" bar: " + period + " " + askBar); } }
public void onTick(Instrument instrument, ITick tick) throws JFException { try { // Create file //Writer fstream = new FileWriter("/home/gin/Pulpit/out.txt"); //BufferedWriter out = new BufferedWriter(fstream); //String newLine = System.getProperty("line.separator"); int xx = 1; data[0][1] = "1"; for(IOrder o : engine.getOrders()){ if(o.getProfitLossInUSD() != 987654231){ console.getOut().println("Order: " + o.getInstrument() + " " + o.getProfitLossInPips() + " " + o.getOrderCommand()); // Copy orders to array String userHash = "1"; String positionOpenTime = "" + o.getFillTime(); String positionId = "" + o.getId(); String positionInstrument = "" + o.getInstrument(); String positionIsbuy = "" + o.getOrderCommand().isLong(); String positionVolume = "" + o.getAmount(); String positionOpen = "" + o.getOpenPrice(); String positionSl = "" + o.getStopLossPrice(); String positionTp = "" + o.getTakeProfitPrice(); String positionComment = "" + o.getComment();
data[xx][0] = userHash; data[xx][1] = positionOpenTime; data[xx][2] = positionId; data[xx][3] = positionInstrument; data[xx][4] = positionIsbuy; data[xx][5] = positionVolume; data[xx][6] = positionOpen; data[xx][7] = positionSl; data[xx][8] = positionTp; data[xx][9] = positionComment; xx++; } xx=0;
} console.getOut().println("=====================================================================================" ); System.out.println(Arrays.deepToString(data)); } catch (Exception e) { console.getErr().println(e.getMessage()); e.printStackTrace(console.getErr()); // context.stop(); } console.getOut().println("=====================================================================================" ); } public void onMessage(IMessage message) throws JFException { } public void onAccount(IAccount account) throws JFException { } public void onStop() throws JFException { } }); //now it's running //every second check if "stop" had been typed in the console - if so - then stop the strategy Thread thread = new Thread(new Runnable() { @Override public void run() { Scanner s = new Scanner(System.in); while(true){ while(s.hasNext()){ String str = s.next(); if(str.equalsIgnoreCase("stop")){ System.out.println("Strategy stop by console command."); client.stopStrategy(strategyId); } } try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }); thread.start(); } }
but in console ===================================================================================== null java.lang.NullPointerException at master.MainStopFromConsole$2.onTick(MainStopFromConsole.java:152) at com.dukascopy.api.impl.execution.TaskTick.postData(TaskTick.java:67) at com.dukascopy.api.impl.execution.AbstractPostDataTask.call(AbstractPostDataTask.java:43) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at com.dukascopy.api.impl.execution.ScienceThreadPoolExecutor$Worker.runTask(ScienceThreadPoolExecutor.java:904) at com.dukascopy.api.impl.execution.ScienceThreadPoolExecutor$Worker.run(ScienceThreadPoolExecutor.java:926) at java.lang.Thread.run(Thread.java:744) =====================================================================================
 what I'm doing wrong Have a nice dayzix
|
|
|
|
 |
API Support
|
Post subject: Re: JFOREX SDK how to save open position in array |
Post rating: 0
|
Posted: Tue 11 Mar, 2014, 11:23
|
|
User rating: ∞
Joined: Fri 31 Aug, 2007, 09:17 Posts: 6139
|
|
|
|
 |
zix
|
Post subject: Re: JFOREX SDK how to save open position in array |
Post rating: 0
|
Posted: Tue 11 Mar, 2014, 12:38
|
|
User rating: 6
Joined: Tue 11 Feb, 2014, 11:38 Posts: 60 Location: PolandPoland
|
Thank you works perfectly zix
|
|
|
|
 |
zix
|
Post subject: Re: JFOREX SDK how to save open position in array |
Post rating: 0
|
Posted: Tue 11 Mar, 2014, 12:50
|
|
User rating: 6
Joined: Tue 11 Feb, 2014, 11:38 Posts: 60 Location: PolandPoland
|
display open position in console and write to array package master;
import com.dukascopy.api.system.ISystemListener; import com.dukascopy.api.system.IClient; import com.dukascopy.api.system.ClientFactory; import com.dukascopy.api.*;
import java.awt.Color; import java.awt.List; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.InputStreamReader; import java.io.Reader; import java.io.Writer; import java.lang.reflect.Array; import java.nio.file.Files; import java.text.DateFormat; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.LinkedList; import java.util.Scanner; import java.util.Set;
import javax.swing.JFrame;
import org.slf4j.LoggerFactory; import org.slf4j.Logger;
public class MainStopFromConsole { private static final Logger LOGGER = LoggerFactory.getLogger(MainStopFromConsole.class); private static String jnlpUrl = "https://www.dukascopy.com/client/demo/jclient/jforex.jnlp"; private static String userName = "DEMO2PRFwj"; private static String password = "PRFwj";
//static String[] columns = {"Open Time", "Id", "Label", "Comment", "Instrument", "Side", "Amount", "Orginal Amount", "Open Price", "Stop Loss", "Take Profit", "Profit (Pips)", "Profit Currency", "Profit in USD", "Commission", "Commission USD"}; static String[] columns = {"Id", "Instrument", "Side", "Amount", "Open Price", "Stop Loss", "Take Profit"}; //static String[][] data = {{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"}, static String[][] data = new String[50][11]; //static String[][] data = null; //static JFrame jf = new JFrame(); public static void main(String[] args) throws Exception { //get the instance of the IClient interface final IClient client = ClientFactory.getDefaultInstance(); //set the listener that will receive system events client.setSystemListener(new ISystemListener() { private int lightReconnects = 3;
public void onStart(long procid) { //IConsole console = context.getConsole(); LOGGER.info("Strategy started: "); }
public void onStop(long processId) { LOGGER.info("Strategy stopped: " + processId); if (client.getStartedStrategies().size() == 0) { System.exit(0); } }
@Override public void onConnect() { LOGGER.info("Connected"); lightReconnects = 3; }
@Override public void onDisconnect() { LOGGER.warn("Disconnected"); if (lightReconnects > 0) { LOGGER.error("TRY TO RECONNECT, reconnects left: " + lightReconnects); client.reconnect(); --lightReconnects; } else { try { //sleep for 10 seconds before attempting to reconnect Thread.sleep(10000); } catch (InterruptedException e) { //ignore } try { client.connect(jnlpUrl, userName, password); } catch (Exception e) { LOGGER.error(e.getMessage(), e); } } } });
LOGGER.info("Connecting..."); //connect to the server using jnlp, user name and password client.connect(jnlpUrl, userName, password);
//wait for it to connect int i = 10; //wait max ten seconds while (i > 0 && !client.isConnected()) { Thread.sleep(1000); i--; } if (!client.isConnected()) { LOGGER.error("Failed to connect Dukascopy servers"); System.exit(1); } //subscribe to the instruments Set<Instrument> instruments = new HashSet<Instrument>(); instruments.add(Instrument.EURUSD); LOGGER.info("Subscribing instruments..."); client.setSubscribedInstruments(instruments); //start the strategy LOGGER.info("Starting strategy"); final long strategyId = client.startStrategy(new IStrategy(){ public Instrument instrument = Instrument.EURUSD; private IConsole console; private IEngine engine;
public void onStart(IContext context) throws JFException { console = context.getConsole(); engine = context.getEngine();
} public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException { if ( instrument == this.instrument){ //console.getOut().println(" bar: " + period + " " + askBar); } }
public void onTick(Instrument instrument, ITick tick) throws JFException { try { // Create file //Writer fstream = new FileWriter("/home/gin/Pulpit/out.txt"); //BufferedWriter out = new BufferedWriter(fstream); //String newLine = System.getProperty("line.separator"); int xx = 0; //data[0][1] = "1"; for(IOrder o : engine.getOrders()){ if(o.getProfitLossInUSD() != 987654231){ console.getOut().println("Order: " + o.getInstrument() + " " + o.getProfitLossInPips() + " " + o.getOrderCommand()); // Copy orders to array String userHash = "1"; String positionOpenTime = "" + o.getFillTime(); String positionId = "" + o.getId(); String positionInstrument = "" + o.getInstrument(); String positionIsbuy = "" + o.getOrderCommand().isLong(); String positionVolume = "" + o.getAmount(); String positionOpen = "" + o.getOpenPrice(); String positionSl = "" + o.getStopLossPrice(); String positionTp = "" + o.getTakeProfitPrice(); String positionComment = "" + o.getComment();
data[xx][0] = userHash; data[xx][1] = positionOpenTime; data[xx][2] = positionId; data[xx][3] = positionInstrument; data[xx][4] = positionIsbuy; data[xx][5] = positionVolume; data[xx][6] = positionOpen; data[xx][7] = positionSl; data[xx][8] = positionTp; data[xx][9] = positionComment; xx++; }
} xx=0; console.getOut().println("=====================================================================================" ); System.out.println(Arrays.deepToString(data)); } catch (Exception e) { console.getErr().println(e.getMessage()); e.printStackTrace(console.getErr()); // context.stop(); } console.getOut().println("=====================================================================================" ); } public void onMessage(IMessage message) throws JFException { } public void onAccount(IAccount account) throws JFException { } public void onStop() throws JFException { } }); //now it's running //every second check if "stop" had been typed in the console - if so - then stop the strategy Thread thread = new Thread(new Runnable() { @Override public void run() { Scanner s = new Scanner(System.in); while(true){ while(s.hasNext()){ String str = s.next(); if(str.equalsIgnoreCase("stop")){ System.out.println("Strategy stop by console command."); client.stopStrategy(strategyId); } } try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }); thread.start(); } }
|
|
|
|
 |
|
Pages: [
1
]
|
|
|
|
|