I included GridGain into my backtesting system. If a choice is made,
the updaetIndicatorsExectue() method starts GridGain and invokes
updaetIndicatorsExectueGridified() method, which is specified with
@Gridify to use
(taskClass=PriceBarUpdate_UpdateIndicatorsExecuteTask.class) . In
PriceBarUpdate_UpdateIndicatorsExecuteTask which extends
                GridTaskSplitAdapter<GridifyArgument,
ArrayList<OptimizationResult>>, the overriden split() will do the job.

BTW, I have integrated RapidMiner into my system, if you have plan to
include it as well, I'd like to contribute part of my code.


    public static ArrayList<OptimizationResult>
updaetIndicatorsExectue(OptimizerRunner optimizerRunner,
                LinkedList<Strategy> stratCandidates, QuoteHistoryBars
quoteHistoryOfBars,
                MidPointHistory midQuoteHistory) throws JBookTraderException
    {
        boolean toGridGain =
optimizerRunner.optimizerDialog.getGridOrNot();
        if(toGridGain){
                ArrayList<OptimizationResult> results;
                try{
                        GridFactory.start();
                        results = updaetIndicatorsExectueGridified(
                                        optimizerRunner,
                                        stratCandidates,        
//.get(stratCandidates.size()/2)
                                        quoteHistoryOfBars,
                                        midQuoteHistory
                                        );
                        GridFactory.stop(true);
                        return results;

//                      com.primoi.gridgain.HelloWorld.main(new String[]{""});
//                      return new ArrayList<Result>();
                }catch(Exception e){
                        e.printStackTrace();
                        return null;
                }
        }
        else {
                return
updaetIndicatorsExectueGridifiedNot(optimizerRunner,stratCandidates,quoteHistoryOfBars,midQuoteHistory);
        }
    }


 
@Gridify(taskClass=PriceBarUpdate_UpdateIndicatorsExecuteTask.class)
    protected static ArrayList<OptimizationResult>
updaetIndicatorsExectueGridified(
                OptimizerRunner optimizerRunner,
                LinkedList<Strategy> stratCandidates,
                QuoteHistoryBars quoteHistoryOfBars,
                MidPointHistory midQuoteHistory
                ) throws JBookTraderException
    {
//              System.out.println("<<<<<<<<<<<<<80:"
//                              +optimizerRunner+" "
//                              +stratCandidates.size()+" "
//                              +quoteHistoryOfBars.size()+" "
//                              +midQuoteHistory.size()+" "
//                              );
//              return new ArrayList<Result>();

        return updaetIndicatorsExectueGridifiedNot(optimizerRunner,
stratCandidates,quoteHistoryOfBars,midQuoteHistory);
    }



public class PriceBarUpdate_UpdateIndicatorsExecuteTask extends
                GridTaskSplitAdapter<GridifyArgument, 
ArrayList<OptimizationResult>>
{

        @Override
        protected Collection<? extends GridJob> split(int gridSize,final
GridifyArgument arg
                        ) throws GridException {
                List<GridJobAdapter<ArrayList<Strategy>> > jobs =
                        new ArrayList<GridJobAdapter<ArrayList<Strategy>> >();

                try{
                        // Split number of iterations.
                        Object[] params = arg.getMethodParameters();
                        final OptimizerRunner optimizerRunner = 
(OptimizerRunner)params[0];
                        final LinkedList<Strategy> stratCands =
(LinkedList<Strategy>)params[1];
                        final QuoteHistoryBars quoteHistoryOfBars =
(QuoteHistoryBars)params[2];
                        final MidPointHistory midQuoteHistory =
(MidPointHistory)params[3];



//                      for(int i=0;i<3;i++){}
//                      gridSize = 2;
//                      debug.Tracker.track("30:" + gridSize);
//                      System.err.println();

                        int sizeInGrid = stratCands.size()/gridSize;

                        //? extends Strategy
                        final ArrayList<Strategy> list = new 
ArrayList<Strategy>();
                        int stratCount = 0;
                        for (final Strategy strat : stratCands) {
                                stratCount++;
                                list.add(strat);

                                if (stratCount % sizeInGrid == 0) {

                                        System.out.println("60"+" 
"+list.size());
                                        System.out.println("75:"+" 
"+list.get(0)+"
"+list.get(list.size()-1));

                                        ArrayList<Strategy> listArg = new
ArrayList<Strategy>(list.size());
                                        for(Strategy stratTmp: list){
                                                listArg.add(stratTmp);
                                        }


                                        jobs.add(new
GridJobAdapter<ArrayList<Strategy>>((ArrayList<Strategy>)listArg) {     //
ArrayList<Strategy>

                                                @Override
                                                public Serializable execute() 
throws GridException {

                                                        try {
                                                                
ArrayList<Strategy> argInner = getArgument();
//                                                              
System.out.println("80:"+optimizerRunner+" "+argInner.size()
+" "+quoteHistoryOfBars.size()+" "+midQuoteHistory.size()+" "+arg);
                                                                return 
OptimizerRunner.updaetIndicatorsExectueGridified(
        
optimizerRunner,stratCands,quoteHistoryOfBars,midQuoteHistory); ////it
is necessary to return it
                                                        } catch (Exception e) {
                                                                
e.printStackTrace();
                                                                return null;
                                                        }
                                                }

                                        });

                                        list.clear();

                                }

                        }

                }catch(Exception e){
                        e.printStackTrace();
                        throw new GridException(e.getMessage());
                }


                return jobs;
        }

        @Override
        public ArrayList<OptimizationResult> reduce(List<GridJobResult>
gridJobResults)
                        throws GridException {
                ArrayList<OptimizationResult> resultsAll = new
ArrayList<OptimizationResult>();
                for (GridJobResult gridResult : gridJobResults) {
                        if(gridResult==null)continue;

                        ArrayList<OptimizationResult> results = 
gridResult.getData();

                        for (OptimizationResult optResult : results) {
                                resultsAll.add(optResult);
                        }
                }
                return resultsAll;
        }

}



On Sep 6, 3:56 pm, nonlinear5 <[EMAIL PROTECTED]> wrote:
> Florent brought my attention to GridGain (http://www.gridgain.com/
> index.html), which is an open source software for parallel processing
> specifically for Java applications. I looked at some of their
> documentations, and I liked their concepts. I am going to see what it
> would take to integrate JBT with it. If anyone has already tried it,
> let me know what you found. If I can distribute optimization job to
> two computers (one running at work, the other one at home), this would
> be valuable.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"JBookTrader" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/jbooktrader?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to