コード例 #1
0
 public double Evaluate(ParameterSpaceGrid search_grid, ParameterSet parameter_set)
 {
     if (results.ContainsKey(parameter_set))
     {
         return(results[parameter_set]);
     }
     else
     {
         MarketManagerSimulation exchange = new MarketManagerSimulation(initial_cash, price_set);
         MarketResult            result   = exchange.Run(PolicyTemplate.Instance(parameter_set));
         return(result.EndCash);
     }
 }
コード例 #2
0
        public void DoExperiment()
        {
            MarketResult[] results = new MarketResult[policies.Count];
            Parallel.For(0, policies.Count, index =>
            {
                MarketManagerSimulation exchange = new MarketManagerSimulation(10000, price_set);
                results[index] = exchange.Run(policies[index]);
            });

            for (int index = 0; index < policies.Count; index++)
            {
                Console.WriteLine(policies[index].Title);
                Console.WriteLine(results[index].EndCash);
                Console.WriteLine("In: " + results[index].Market.ClosedOrders.Count);
            }
        }
コード例 #3
0
        public static void TestSpeed(double initial_cash, PriceSet price_set, int count)
        {
            List <PolicyJaapBands> policies = new List <PolicyJaapBands>();

            for (int i = 0; i < count; i++)
            {
                policies.Add(new PolicyJaapBands(300, 0.85, 50, 0.015, 150, 130));
            }
            MarketResult[] market_results = new MarketResult[policies.Count];
            Parallel.For(0, policies.Count, index =>
            {
                MarketManagerSimulation exchange = new MarketManagerSimulation(10000, price_set);
                market_results[index]            = exchange.Run(policies[index]);
            });
            Assert.AreEqual(10230.0, market_results[0].EndCash, 0.0000001);
        }
コード例 #4
0
        public void DoExperiment()
        {
            PriceSet price_set = ToolsPrice.GetPriceSet(ToolsPrice.DefaultSymbolGBPUSD);

            List <IPolicy> policies        = new List <IPolicy>();
            double         long_threshold  = 10 * Math.Pow(10, -6);
            double         short_threshold = -10 * Math.Pow(10, -6);

            for (int index = 0; index < 1; index++)
            {
                policies.Add(new PolicyTemplateJaapBands().Instance());
            }

            MarketResult[] market_results = new MarketResult[policies.Count];

            Parallel.For(0, policies.Count, index =>
            {
                MarketManagerSimulation exchange = new MarketManagerSimulation(10000, price_set);
                market_results[index]            = exchange.Run(policies[index]);
            });

            List <Tuple <MarketResult, IPolicy> > accepted_policy = new List <Tuple <MarketResult, IPolicy> >();

            for (int index = 0; index < market_results.Length; index++)
            {
                //    if(market_results[index].Market.ClosedOrders.Count > 9 && market_results[index].EndCash > 10000)
                //    {
                accepted_policy.Add(new Tuple <MarketResult, IPolicy>(market_results[index], policies[index]));
                //    }
            }

            for (int index = 0; index < accepted_policy.Count; index++)
            {
                var xx = accepted_policy[index];
                Console.WriteLine(xx.Item1.EndCash + " in: " + xx.Item1.Market.ClosedOrders.Count);
                ToolsTradingPlotting.PlotMarketResult(ToolsTradingDataSet.GetPath() + "Trades" + index + ".png", xx.Item1);
            }
        }