Beispiel #1
0
        public void DoExperiment()
        {
            PriceSet       price_set = ToolsPrice.GetPriceSet(ToolsPrice.DefaultSymbolUSDEUR);
            List <IPolicy> policies  = new List <IPolicy>();

            for (int index_0 = 2; index_0 < 10; index_0++)
            {
                policies.Add(new PolicyRunLength(index_0, 300));
            }

            ExperimentPolicies experiment = new ExperimentPolicies(price_set, policies);

            experiment.DoExperiment();
        }
        public void DoExperiment()
        {
            IPolicyTemplate    policy_template = new PolicyTemplateJaapBands();
            double             initial_cash    = 10000;
            PriceSet           price_set       = ToolsPrice.GetPriceSet(ToolsPrice.DefaultSymbolGBPUSD);
            IEvaluator         evaluator       = new EvaluatorSingle(policy_template, initial_cash, price_set);
            ParameterSpaceGrid search_grid     = new ParameterSpaceGrid(
                policy_template.DefaultParameters,
                new double[] { },
                new int[] { },
                new int[] { }
                );
            IOptimizer         optimizer = new OptimizerExaustive(search_grid, evaluator);
            OptimizationResult result    = optimizer.Optimize(policy_template.DefaultParameters);

            Console.WriteLine(result.OptimalResult);
        }
Beispiel #3
0
        public void DoExperiment()
        {
            PriceSet           price_set       = ToolsPrice.GetPriceSet(ToolsPrice.DefaultSymbolGBPUSD).SubSet(new DateTimeUTC(2016, 10, 17), new DateTimeUTC(2016, 10, 20));
            IPolicyTemplate    policy_template = new PolicyTemplateRunningAverageDual();
            double             initial_cash    = 10000;
            IEvaluator         evaluator       = new EvaluatorSingle(policy_template, initial_cash, price_set);
            ParameterSpaceGrid search_grid     = new ParameterSpaceGrid(
                policy_template.DefaultParameters,
                new double[] { 10, 5 * TradingConstants.POINT, 10, 5 * TradingConstants.POINT },
                new int[] { 1, 1, 1, 1 },
                new int[] { 1, 1, 1, 1 }
                );
            IOptimizer         optimizer = new OptimizerExaustive(search_grid, evaluator);
            OptimizationResult result    = optimizer.Optimize(policy_template.DefaultParameters);

            Console.WriteLine(result.OptimalResult);
        }
Beispiel #4
0
        public void DoExperiment()
        {
            PriceSet       price_set = ToolsPrice.GetPriceSet(ToolsPrice.DefaultSymbolUSDEUR);
            List <IPolicy> policies  = new List <IPolicy>();

            for (int index_0 = 1; index_0 < 10; index_0++)
            {
                for (int index_1 = 1; index_1 < 10; index_1++)
                {
                    policies.Add(new PolicyRunningAverageDual(
                                     index_0 * 30, index_1 * 5 * TradingConstants.POINT,
                                     index_0 * 30, index_1 * -5 * TradingConstants.POINT));
                }
            }

            ExperimentPolicies experiment = new ExperimentPolicies(price_set, policies);

            experiment.DoExperiment();
        }
Beispiel #5
0
        internal void DoExperiment()
        {
            ToolsPrice.ComposeBinary(ToolsPrice.DefaultSymbolGBPUSD);
            PriceSet price_set = ToolsPrice.GetPriceSet(ToolsPrice.DefaultSymbolGBPUSD).SubSet(new DateTimeUTC(2016, 10, 17), new DateTimeUTC(2016, 10, 20));

            //PlotLine2D line_plot_2d_0 = new PlotLine2D();
            //ToolsTradingPlotting.AddPrice(line_plot_2d_0, price_set, TimeScale.Spot, PriceType.Bid, Color.Blue);
            //ToolsTradingPlotting.AddPrice(line_plot_2d_0, price_set, TimeScale.Spot, PriceType.Mean, Color.Green);
            //ToolsTradingPlotting.AddPrice(line_plot_2d_0, price_set, TimeScale.Spot, PriceType.Ask, Color.Red);
            //ToolsTradingPlotting.AddPrice(line_plot_2d_0, price_set, TimeScale.Day1, PriceType.Bid, Color.Black);
            //ToolsTradingPlotting.AddPrice(line_plot_2d_0, price_set, TimeScale.Day1, PriceType.Mean, Color.Green);
            //ToolsTradingPlotting.AddPrice(line_plot_2d_0, price_set, TimeScale.Day1, PriceType.Ask, Color.Red);
            //ToolsTradingPlotting.WriteToFile(ToolsTradingDataSet.GetPath() + "TestPlot0.png", line_plot_2d_0);

            IIndicator indicator      = new IndicatorMagicProfit(60);
            PlotLine2D line_plot_2d_1 = new PlotLine2D();

            ToolsTradingPlotting.AddIndicatorResult(line_plot_2d_1, price_set, indicator, new Color[] { Color.Red, Color.Green }, new int[] { 0, 1 });
            ToolsTradingPlotting.WriteToFile(ToolsTradingDataSet.GetPath() + "TestPlot3.png", line_plot_2d_1);



            //ToolsTradingPlotting.PlotPriceBid(ToolsTradingDataSet.GetPath() + "prices.png", prices);
            //ToolsTradingPlotting.PlotIndicatorResult(ToolsTradingDataSet.GetPath() + "indicator_0.png", prices, indicator_0, color_list, index_list, true);
            //ToolsTradingPlotting.PlotIndicatorResult(ToolsTradingDataSet.GetPath() + "indicator_1.png", prices, indicator_1, color_list, index_list, true);


            //IPolicyTemplate policy = new PolicyTemplateJaapBands();
            //MarketManagerSimulation exchange = new MarketManagerSimulation(10000, price_set);
            //MarketResult market_result = exchange.Run(policy.Instance());
            //Console.WriteLine(market_result.EndCash + " in: " + market_result.Market.ClosedOrders.Count);

            //PlotLine2D line_plot_2d_0 = new PlotLine2D();
            //ToolsTradingPlotting.AddBidAskTrades(line_plot_2d_0, market_result);
            //ToolsTradingPlotting.WriteToFile(ToolsTradingDataSet.GetPath() + "TestPlot0.png", line_plot_2d_0);


            //PlotLine2D line_plot_2d_1 = new PlotLine2D();
            //ToolsTradingPlotting.AddCashEquity(line_plot_2d_1, market_result);
            //ToolsTradingPlotting.WriteToFile(ToolsTradingDataSet.GetPath() + "TestPlot1.png", line_plot_2d_1);
        }
        public void DoExperiment()
        {
            PriceSet          price_set  = ToolsPrice.GetPriceSet(ToolsPrice.DefaultSymbolGBPUSD);
            List <IIndicator> indicators = new List <IIndicator>();

            indicators.Add(new IndicatorRunningAverage(4));
            indicators.Add(new IndicatorRunningAverage(6));
            indicators.Add(new IndicatorRunningAverage(8));
            indicators.Add(new IndicatorRunningAverage(10));
            indicators.Add(new IndicatorRunningAverage(12));
            IIndicator feature_indicator = new IndicatorFusion(indicators);
            IIndicator label_indicator   = new IndicatorMagicProfit(60);



            MarketModelSimulation                market   = new MarketModelSimulation(1000, price_set);
            DataSet <double, double>             dataset  = ToolsTradingDataSet.CreateDataSet(market, feature_indicator, label_indicator);
            ITemplateModelLabel <double, double> template = null;//new TemplateModelLibSVMCSVC();
            IModelLabel <double, double>         model    = template.GenerateModel(dataset);

            //TODO change everyting into templates
            List <IIndicator> indicators_2 = new List <IIndicator>();

            indicators_2.Add(new IndicatorRunningAverage(4));
            indicators_2.Add(new IndicatorRunningAverage(6));
            indicators_2.Add(new IndicatorRunningAverage(8));
            indicators_2.Add(new IndicatorRunningAverage(10));
            indicators_2.Add(new IndicatorRunningAverage(12));
            IIndicator feature_indicator_2 = new IndicatorFusion(indicators_2);

            //Build actual incator

            IIndicator    indicator_0 = new IndicatorMagicProfit(60);
            IIndicator    indicator_1 = new IndicatorMachineLearning(feature_indicator_2, model, "Profit_long_ml");
            IList <Color> color_list  = new Color[] { Color.Black };
            IList <int>   index_list  = new int[] { 0 };

            ToolsTradingPlotting.PlotIndicatorResult(ToolsTradingDataSet.GetPath() + "indicator_0.png", price_set, indicator_0, color_list, index_list, false);
            ToolsTradingPlotting.PlotIndicatorResult(ToolsTradingDataSet.GetPath() + "indicator_1.png", price_set, indicator_1, color_list, index_list, false);
        }
        public void DoExperiment()
        {
            ToolsPrice.ComposeBinary(ToolsPrice.DefaultSymbolGBPUSD);
            PriceSet price_set = ToolsPrice.GetPriceSet(ToolsPrice.DefaultSymbolGBPUSD).SubSet(new DateTimeUTC(2016, 10, 17), new DateTimeUTC(2016, 10, 20));


            IIndicator            indicator_feature = new IndicatorSuperBollinger();
            IIndicator            indicator_label   = new IndicatorMagicProfit(60);
            MarketModelSimulation market0           = new MarketModelSimulation(10000, price_set);
            MarketModelSimulation market1           = new MarketModelSimulation(10000, price_set);

            double[] time = new double[price_set.Prices.Count];
            for (int price_index = 0; price_index < price_set.Prices.Count; price_index++)
            {
                time[price_index] = price_set.Prices[price_index].Time.Ticks;
            }

            Tuple <double[, ], bool[]> tuple0 = indicator_feature.ComputeAll(market0, price_set.Second1.Count);
            Tuple <double[, ], bool[]> tuple1 = indicator_label.ComputeAll(market1, price_set.Second1.Count);

            List <string[]> list_string = new List <string[]>();

            for (int index_0 = 0; index_0 < tuple0.Item2.Length; index_0++)
            {
                if (tuple0.Item2[index_0] && tuple1.Item2[index_0])
                {
                    double[] array_double = ToolsCollection.Append(tuple0.Item1.Select1DIndex0(index_0), tuple1.Item1.Select1DIndex0(index_0));
                    string[] array_string = new string[array_double.Length];
                    for (int index_1 = 0; index_1 < array_double.Length; index_1++)
                    {
                        array_string[index_1] = array_double[index_1].ToString(CultureInfo.InvariantCulture);
                    }
                    list_string.Add(array_string);
                }
            }

            ToolsIOCSV.WriteCSVFile(ToolsTradingDataSet.GetPath() + "data.csv", ToolsCollection.ConvertToArray2D(list_string));
        }
Beispiel #8
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);
            }
        }
Beispiel #9
0
        public void TestSim40()
        {
            PriceSet price_set = ToolsPrice.GetPriceSet(ToolsPrice.DefaultSymbolGBPUSD);

            IMarketModelTest.TestSpeed(10000, price_set, 40);
        }
 public void TestGetPriceSet()
 {
     PriceSet price_set = ToolsPrice.GetPriceSet(ToolsPrice.DefaultSymbolGBPUSD);
 }