/// <summary>
        /// Evaluates the two indicators as passed
        /// </summary>
        /// <param name="indicatorLibraryAdapter">The indicatorLibraryAdapter to use for the indicator evaluation.</param>
        /// <returns>A boolean value of the evaluation.</returns>
        public override bool Eval(IndicatorLibraryAdapter indicatorLibraryAdapter)
        {
            double? indicator1 = indicatorLibraryAdapter.GetIndicator(this.IndicatorName1);
            double? indicator2 = indicatorLibraryAdapter.GetIndicator(this.IndicatorName2);

            double? previousIndicator1 = indicatorLibraryAdapter.GetPreviousIndicator(this.IndicatorName1);
            double? previousIndicator2 = indicatorLibraryAdapter.GetPreviousIndicator(this.IndicatorName2);

            if (indicator1 == null || indicator2 == null)
            {
                return false;
            }

            switch (this.CompareType)
            {
                case IndicatorCompareType.GT:
                    return indicator1 > indicator2;
                case IndicatorCompareType.LT:
                    return indicator1 < indicator2;
                case IndicatorCompareType.UP_XOVER:
                    return previousIndicator1 < previousIndicator2 && indicator1 > indicator2;
                case IndicatorCompareType.DOWN_XUNDER:
                    return previousIndicator1 > previousIndicator2 && indicator1 < indicator2;
                default:
                    throw new Exception("Compare Type not defined");
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Initializes a new instance of the BacktestFitness class.
 /// </summary>
 /// <param name="indicatorLibraryAdapter">The indicator library adapter to run the backtest with.</param>
 public BacktestFitness(IndicatorLibraryAdapter indicatorLibraryAdapter)
 {
     this.indicatorLibraryAdapter = indicatorLibraryAdapter;
     /// *********************************************
     /// GDBCup - Code goes here
     /// *********************************************
 }
 public MachineLearnerTradeRule(IndicatorLibraryAdapter indicatorLibraryAdapter)
 {
     this.indicatorsTypes = Enum.GetValues(typeof(IndicatorCompareType)).Cast<IndicatorCompareType>().ToList();
     this.randomGenerator = new RandomSingleton();
     this.Headers = indicatorLibraryAdapter.IndicatorLocations.Keys.Select(k => k.ToString()).ToArray();
     this.FixedValues = TechnicalIndicatorClass.GetIndicatorsDefaultCrossOvers(this.Headers);
     this.Groups = TechnicalIndicatorClass.GetGroupsOfIndicators(this.Headers);
 }
 public GeneticAlgorithmModel(IndicatorLibraryAdapter indicatorLibraryAdapter)
 {
     this.rand = new Random();
     this.PopulationSize = 10;
     this.MinSize = 5;
     this.MaxSize = 5;
     this.MutationRate = 0.01;
     this.GenerationSize = 10;
     this.NumberOfIteration = 1;
     this.IndicatorLibraryAdapter = indicatorLibraryAdapter;
     this.Seed = false;
     this.SeededChromosomes = new List<TradeChromosome>();
     this.joinTypes = Enum.GetValues(typeof(RuleJoinType)).Cast<RuleJoinType>().ToList();
     this.stockPoints = this.IndicatorLibraryAdapter.StockPoints;
     this.stockDaySplit = this.IndicatorLibraryAdapter.EndOfDayIndex;
     SetData();
 }
Ejemplo n.º 5
0
        public EvalulateTrade(IndicatorLibraryAdapter indicatorLibraryAdapter)
        {
            this.LogTables = null;
            this.Winners = 0;
            this.Losers = 0;
            this.StopOuts = 0;

            this.IndicatorLibraryAdapter = indicatorLibraryAdapter;
            this.Data = new Dictionary<string, double[]>();
            //this.StockPoints = Enumerable.Range(0, indicatorLibraryAdapter.DataCount)
            //                        .Select(e => new StockPoint(
            //                                GetDateTimeValue((int)indicatorLibraryAdapter.Data["Date"][e].Value,
            //                                                       (int)indicatorLibraryAdapter.Data["Time"][e].Value),
            //                                indicatorLibraryAdapter.Data["Open"][e].Value,
            //                                indicatorLibraryAdapter.Data["High"][e].Value,
            //                                indicatorLibraryAdapter.Data["Low"][e].Value,
            //                                indicatorLibraryAdapter.Data["Close"][e].Value,
            //                                (long)indicatorLibraryAdapter.Data["Volume"][e].Value)
            //                            ).ToArray();

            this.StockPoints = indicatorLibraryAdapter.StockPoints;
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Returns TradeType triggered at the current row
        /// </summary>
        /// <returns>int 0 : no triggered, 1 - long triggered , 2 - short triggered, 3- both triggered</returns>
        private int GetTradeCondition(IndicatorLibraryAdapter indicatorLibraryAdapter)
        {
            TradeCondition buyTradeCondition = this.tradeSystem.BuyCondition;
            TradeCondition sellTradeCondition = this.tradeSystem.SellCondition;

            bool bLongTriggered = false;
            bool bShortTriggered = false;
            int iTrigger = 0;

            //check for buy condition update tradeTypes
            if (buyTradeCondition != null)
            {
                if (EvalBuySellSignal(indicatorLibraryAdapter, buyTradeCondition.TradeRules, buyTradeCondition.RuleJoinTypes))
                {
                    bLongTriggered = true;
                }
            }

            // check for sell condition update tradeTypes
            if (sellTradeCondition != null)
            {
                if (EvalBuySellSignal(indicatorLibraryAdapter, sellTradeCondition.TradeRules, sellTradeCondition.RuleJoinTypes))
                {
                    bShortTriggered = true;
                }
            }

            if (bLongTriggered && bShortTriggered)
            {
                iTrigger = 3;
            }
            else if (!bLongTriggered && bShortTriggered)
            {
                iTrigger = 2;
            }
            else if (bLongTriggered && !bShortTriggered)
            {
                iTrigger = 1;
            }

            return iTrigger;
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Evaluates the join conditions and returns the signal as boolean
        /// </summary>
        /// <param name="tradeRules">List of traderules</param>
        /// <param name="joinTypes">list of join types</param>
        /// <returns>boolean signal</returns>
        private bool EvalBuySellSignal(IndicatorLibraryAdapter indicatorLibraryAdapter, List<TradeRule> tradeRules, List<RuleJoinType> joinTypes)
        {
            List<bool> andResults = new List<bool>();
            List<int> andList = null;
            List<bool> orList = new List<bool>();
            for (int idx = 0; idx < joinTypes.Count; idx++)
            {
                if (joinTypes[idx] == RuleJoinType.and)
                {
                    if (andList == null)
                    {
                        andList = new List<int>();
                    }
                    andList.Add(idx);
                }
                else
                {
                    if (andList != null && andList.Any())
                    {
                        bool tr1 = tradeRules[andList[0]].Eval(indicatorLibraryAdapter);
                        bool tr2;
                        for (int id = 1; id < andList.Count; id++)
                        {
                            tr2 = tradeRules[andList[id]].Eval(indicatorLibraryAdapter);
                            tr1 = tr1 && tr2;
                        }
                        andResults.Add(tr1);
                    }
                    if (idx == 0 || joinTypes[idx - 1] == RuleJoinType.or)
                    {
                        orList.Add(tradeRules[idx].Eval(indicatorLibraryAdapter));
                    }
                    andList = null;
                }
            }

            List<bool> andOrResultList = andResults.Concat(orList).ToList();
            bool result = false;
            for (int idx = 0; idx < andOrResultList.Count; idx++)
            {
                if (idx == 0)
                {
                    result = andOrResultList[idx];
                }
                else
                {
                    result = result || andOrResultList[idx];
                }
            }

            return result;

            /*
            int i = 0;
            RuleJoinType rj = joinTypes[i];
            TradeRule tr = tradeRules[i];
            bool bSignal = tr.Eval(indicatorLibraryAdapter);

            while (rj != RuleJoinType.none)
            {
                tr = tradeRules[i];
                bSignal = rj == RuleJoinType.or ? bSignal || tr.Eval(indicatorLibraryAdapter)
                                                : bSignal && tr.Eval(indicatorLibraryAdapter);
                rj = joinTypes[i];
                ++i;
            }

            return bSignal;
            */
        }
Ejemplo n.º 8
0
        private TradeType? CheckShortCondition(IndicatorLibraryAdapter indicatorLibraryAdapter)
        {
            TradeCondition sellTradeCondition = this.tradeSystem.SellCondition;
            TradeType? triggerValue = null;
            //check for buy condition update tradeTypes
            if (sellTradeCondition != null)
            {
                if (EvalBuySellSignal(indicatorLibraryAdapter, sellTradeCondition.TradeRules, sellTradeCondition.RuleJoinTypes))
                {
                    triggerValue = TradeType.shortTrade;
                }
            }

            return triggerValue;
        }
Ejemplo n.º 9
0
        private TradeType? CheckLongCondition(IndicatorLibraryAdapter indicatorLibraryAdapter)
        {
            TradeCondition buyTradeCondition = this.tradeSystem.BuyCondition;
            TradeType? triggerValue = null;
            //check for buy condition update tradeTypes
            if (buyTradeCondition != null)
            {
                if (EvalBuySellSignal(indicatorLibraryAdapter, buyTradeCondition.TradeRules, buyTradeCondition.RuleJoinTypes))
                {
                    triggerValue = TradeType.longTrade;
                }
            }

            return triggerValue;
        }
Ejemplo n.º 10
0
 /// <summary>
 /// Runs the backtest for one row. Must manually MoveNext on the indicator library if using this method.
 /// </summary>
 /// <param name="indicatorLibraryAdapter">The indicator Library Adapter to use for the backtest row.</param>
 public void RunBacktestRow(IndicatorLibraryAdapter indicatorLibraryAdapter)
 {
     /// *********************************************
     /// GDBCup - Code is needed here
     /// *********************************************
 }
Ejemplo n.º 11
0
 /// <summary>
 /// Closes any open trades if there are some.
 /// </summary>
 /// <param name="indicatorLibraryAdapter">The indicatorLibraryAdapter to get the final stock point from.</param>
 public void CloseOpenTrades(IndicatorLibraryAdapter indicatorLibraryAdapter)
 {
     /// *********************************************
     /// GDBCup - Code is needed here
     /// *********************************************
 }
        public IndicatorLibraryAdapter Clone(IndicatorLibraryAdapter indicatorLibraryAdapter)
        {
            using (var ms = new MemoryStream())
            {
                var formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                formatter.Serialize(ms, indicatorLibraryAdapter);
                ms.Position = 0;

                return (IndicatorLibraryAdapter)formatter.Deserialize(ms);
            }
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Evaluates the trade rule for the current indicatorLibraryAdapter line.
        /// </summary>
        /// <param name="indicatorLibraryAdapter">The data source to evaluate.</param>
        /// <returns>A boolean value for the conditionon this line.</returns>
        public bool Eval(IndicatorLibraryAdapter indicatorLibraryAdapter)
        {
            if (this.TradeRules.Count == 0)
            {
                throw new TradeRuleException("Trade rules not defined.");
            }

            bool evalValue = true;
            /// *********************************************
            /// GDBCup - Need to code this
            /// *********************************************

            return evalValue;
        }
Ejemplo n.º 14
0
 /// <summary>
 /// Evaluates the two indicators as passed
 /// </summary>
 /// <param name="indicatorLibraryAdapter">The indicatorLibraryAdapter to use for the indicator evaluation.</param>
 /// <returns>A boolean value of the evaluation.</returns>
 public abstract bool Eval(IndicatorLibraryAdapter indicatorLibraryAdapter);