Write ticks in MySQL

Make sure that you are using proper libraries:

commons-pool-1.4.jar;

commons-dbcp-1.2.2.jar;

mysql-connector-java-5.1.7-bin.jar;

package jforex;

import com.dukascopy.api.*;
import java.util.*;
import java.sql.*;
import javax.sql.*;
import org.apache.commons.dbcp.*;

/**
 * commons-pool can be downloaded here - http://commons.apache.org/pool/
 * commons-dbcp can be downloaded here - http://commons.apache.org/dbcp/
 * mysql java connection can be downloaded here - http://dev.mysql.com/downloads/connector/j/5.1.html
 */
@RequiresFullAccess
@Library("c:/fullpathtolib/commons-pool-1.4.jar;c:/fullpathtolib/commons-dbcp-1.2.2.jar;c:/fullpathtolib/mysql-connector-java-5.1.7-bin.jar")
public class TestMySQLAccess implements IStrategy {
   private IContext context;
   private IConsole console;
   private DataSource dataSource;
   private Calendar gmtCalendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));

   public void onStart(IContext context) throws JFException {
      this.context = context;
      console = context.getConsole();
      try {
           Properties properties = new Properties();
           properties.put("driverClassName", "com.mysql.jdbc.Driver");
           properties.put("url", "jdbc:mysql://localhost/test");
           properties.put("username", "test");
           properties.put("password", "test");
           properties.put("poolPreparedStatements", "true");

           dataSource = BasicDataSourceFactory.createDataSource(properties);
        } catch (Exception e) {
           console.getErr().println(e);
        }
   }

   public void onAccount(IAccount account) throws JFException {
   }

   public void onMessage(IMessage message) throws JFException {
   }

   public void onStop() throws JFException {
      try {
         ((BasicDataSource) dataSource).close();
      } catch (SQLException e) {
         console.getErr().println(e);
      }
   }

   public void onTick(Instrument instrument, ITick tick) throws JFException {
      try {
         Connection connection = dataSource.getConnection();
         try {
            PreparedStatement statement = connection.prepareStatement("insert into ticks(instrument, tick_time, ask, bid, askVol, bidVol) values (?, ?, ?, ?, ?, ?)");
            try {
               statement.setString(1, instrument.toString());
               statement.setTimestamp(2, new Timestamp(tick.getTime()), gmtCalendar);
               statement.setDouble(3, tick.getAsk());
               statement.setDouble(4, tick.getBid());
               statement.setDouble(5, tick.getAskVolume());
               statement.setDouble(6, tick.getBidVolume());
               statement.execute();
            } finally {
               statement.close();
            }
         } finally {
            connection.close();
         }
      } catch (SQLException e) {
         console.getErr().println(e);
      }
   }

    public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException {
    }
}

TestMySQLAccess.java

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