Hi Klaus,

I still run JBT (mostly in Forward Test mode). The only indicator I use is 
Force (Tension). Is your improvement meant to create a better (more 
efficient) framework to optimize parameters Period, Scale, Entry, and Exit?

Best,

Ali

On Sunday, July 31, 2016 at 1:16:40 PM UTC-7, Klaus wrote:
>
> Hi, 
>
> I am not sure, whether there is still anyone using JBooktrader. 
> However, I would like to report on some smaller improvements, I recently 
> made. 
>
> a) Sometimes it does not make sense to analyze all possible combinations 
> of parameters in optimization. 
> (e.g., if the parameters are symmetrical this would lead to a double 
> analysis)
> For this I added a method to strategy.java
>
>     // KS: added 160727 - to exclude incorrect parameter value 
> combinations
>
>     public boolean eligible() {
>
>     return true;
>
>     }
>
> This can now be overloaded in your strategy as you like.
> In the call-method of the OptimizerWorker I added a corresponding 
> if-statement:
>
>                     
>
>                     if (strategy.eligible()) {
>
>                     strategy.setMarketBook(marketBook);
>
>                     strategy.setIndicatorManager(indicatorManager);
>
>                     strategy.setIndicators();
>
>                     strategies.add(strategy);
>
>                     }
>
>                     else {
>
>                     // System.out.println("Strategy excluded");
>
>                     }
>
>
> The inner part of the if is the original code.
>
> b) It is sometimes also possible to work with a reduced dataset (I 
> typically gather all the data (24/7) and then just extract the relevant 
> data. - However, often it is also sufficient to use more coarse-grained 
> data for optimization. (this leads to very significant speed-ups) - Of 
> course this depends on your specific indicators whether that is meaningful, 
> and in many cases at least the parameter values need to be adapted in order 
> to make use of such an approach. 
>
> I use a simple R-script in order to make this extraction. The following 
> script extracts only the entries with second "00" and also restrict the 
> time of day. - You can adapt it easily to your need. 
> A downside of the primitive script is: at the end the first 10 lines need 
> to reinserted (and the line from the dataframe removed)
> #!/usr/bin/env Rscript
> args = commandArgs(trailingOnly=TRUE)
> # print("Reached 1")
> if (length(args)!=1) {stop("the filename needs to be given", call.=FALSE)}
> # print("reached 2")
> df <- read.table(args[1], skip=10, sep=",", 
> col.names=c("Date","Time","Balance","Price","Volume"),colClasses=c("character","character","numeric","numeric","numeric"))
> # print("reached 3")
> dfr=df[df$Time>"080000" & df$Time<"170000" & endsWith( df$Time,"00"),]
> write.table(dfr, file = paste(args[1],"B",sep=""),sep=",", quote = FALSE, 
> row.names = FALSE)
>
> In order for such an approach to work, it is also necessary to adapt the 
> MIN_SAMPLE_SIZE definition in the IndicatorManager-class. (originally 
> 60*60, here set to 10)
>
>     private static final long MIN_SAMPLE_SIZE = 10;// 60*60; 1 hour worth 
> of samples
> Actually, a much better approach would be to proclaim the need for data in 
> units of time by the various indicators, the framework would gather this 
> and take it into account. But this would have required deeper changes.
>
> Again, whether such a scaling is useful appropriate depends very much on 
> your specific strategy and indicators. 
>
> I hope someone finds this useful. 
>
> Klaus
>
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"JBookTrader" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/jbooktrader.
For more options, visit https://groups.google.com/d/optout.

Reply via email to