
package jforex.utils;
import com.dukascopy.api.*;


import java.awt.Color;
import java.net.*;
import java.net.URL;
import java.text.DecimalFormat;    
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Currency;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
import java.util.HashMap ;
import java.util.ListIterator;
import java.util.Iterator ;
import java.text.DateFormat ;
import java.text.SimpleDateFormat ;
import com.dukascopy.api.Configurable;
import com.dukascopy.api.IAccount;
import com.dukascopy.api.IBar;
import com.dukascopy.api.IContext;
import com.dukascopy.api.IHistory;
import com.dukascopy.api.IMessage;
import com.dukascopy.api.IStrategy;
import com.dukascopy.api.ITick;
import com.dukascopy.api.Instrument;
import com.dukascopy.api.JFException;
import com.dukascopy.api.Period;
import com.dukascopy.api.IIndicators.AppliedPrice;
import com.dukascopy.api.IIndicators.MaType;
import java.util.Calendar;
import com.dukascopy.api.*;
import com.dukascopy.api.IEngine.OrderCommand;
import com.dukascopy.api.feed.IFeedDescriptor;
import com.dukascopy.api.feed.IFeedListener;
import com.dukascopy.api.feed.util.TimePeriodAggregationFeedDescriptor;
import java.util.Arrays;
import java.util.HashSet;
import com.dukascopy.api.drawings.IChartObjectFactory;
import com.dukascopy.api.drawings.ITextChartObject;
import com.dukascopy.api.IIndicators;
import com.dukascopy.api.indicators.OutputParameterInfo.DrawingStyle;
import com.dukascopy.api.drawings.*;
import com.dukascopy.api.feed.IPriceAggregationBar;
import com.dukascopy.api.feed.util.TickBarFeedDescriptor;
import java.awt.*;
import javax.swing.*;
import com.dukascopy.api.Unit ;
import java.util.Collections;
import java.util.ArrayList;
import java.util.*;
import com.dukascopy.api.indicators.IIndicatorCalculator;





public class RemoteTestCPU implements IStrategy , IFeedListener{

    private IEngine engine;
    public IConsole console;
    private IHistory history;
    private IContext context;

      		
	public Set<Instrument> currencies = new HashSet<Instrument>();		
    private IIndicators indicators;	
	public IFeedDescriptor fda;	
 	
  
//#######################################################################################################
 @Override
    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();
        

		
		
    try {  
	
	    currencies.clear();
		       
		currencies.add(Instrument.GBPUSD);
		currencies.add(Instrument.EURJPY);
        currencies.add(Instrument.EURCAD);
        currencies.add(Instrument.EURAUD); 		
        currencies.add(Instrument.EURUSD); 
		currencies.add(Instrument.EURNZD);
		currencies.add(Instrument.GBPJPY); 
		currencies.add(Instrument.USDCAD);
	    currencies.add(Instrument.AUDUSD);
		currencies.add(Instrument.NZDUSD); 
		currencies.add(Instrument.AUDCAD);
	
	 
	  context.setSubscribedInstruments(currencies);
		
     int i = 10;
     while (!context.getSubscribedInstruments().containsAll(currencies) && i>=0) {    
          Thread.sleep(1000);  
      i--;
    }
	

	 
    for(Object object : currencies) {        
		 fda= new TimePeriodAggregationFeedDescriptor((Instrument) object , Period.FIFTEEN_MINS , OfferSide.BID, Filter.WEEKENDS);	   
		 context.subscribeToFeed(fda, this);		 	 
		 console.getOut().println(" subscribeToFeed:  "+fda.getInstrument().toString());	  
	     Thread.sleep(1000);        
    }    
	
   } catch (InterruptedException e) {
          console.getOut().println(e.getMessage());
   }  
   
  }   
//#######################################################################################################

    @Override
    public void onFeedData(IFeedDescriptor feedDescriptor, ITimedData feedData) {
	
	         console.getOut().println(" onFeedData:  "+feedDescriptor.getInstrument().toString());
			   	
   }  

 //#######################################################################################################
    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 {  	
    }    

//#########################################################################################################
    class EmptyListener implements LoadingProgressListener{

        @Override
        public void dataLoaded(long start, long end, long currentPosition, String information) {}

        @Override
        public void loadingFinished(boolean allDataLoaded, long start, long end, long currentPosition) {}

        @Override
        public boolean stopJob() {
            return false;
        }}

		
 //#########################################################################################################   
	
}//jforex class







