Ejemplo n.º 1
0
        public static List <News> Load(string path, IStrategyLogger stategyLogger)
        {
            List <News> retList = new List <News>();

            if (!File.Exists(path))
            {
                throw new ApplicationException("Can`t find news file. Path " + path);
            }

            using (StreamReader strReader = new StreamReader(path))
            {
                DateTime lastDateTime = DateTime.MinValue;

                while (strReader.Peek() >= 0)
                {
                    string currNews = strReader.ReadLine().Trim();
                    if (currNews.Length == 0)
                    {
                        continue;
                    }

                    News lastNews = News.ParseFromFile(currNews, ref lastDateTime, stategyLogger);
                    retList.Add(lastNews);
                }
            }
            return(retList);
        }
Ejemplo n.º 2
0
        public bool TesterInit(StrategyParameter param, IStrategyLogger logger)
        {
            TestingMode = true;
            this.param  = param;
            this.logger = logger;

            return(true);
        }
Ejemplo n.º 3
0
        internal override void OnRemmoteAdvisorInit(RemoteAdvisor rmAdviser)
        {
            try
            {
                Meta = rmAdviser;
                ForexAPI fAPI = new ForexAPI(Meta, rmAdviser.MagicNumber);

                OrderOperation = fAPI;
                Account        = fAPI;
                History        = fAPI;
                this.Symbol    = rmAdviser.Symbol();

                if (this.param != null)
                {
                    throw new ApplicationException("Param was initalized");
                }
                this.param = new StrategyParameter();

                foreach (string paramKey in rmAdviser.Parameters.Keys)
                {
                    if (paramKey == "NewsFilePath")
                    {
                        this.param.NewsFilePath = rmAdviser.Parameters[paramKey];
                        continue;
                    }
                    if (paramKey.EndsWith("String"))
                    {
                        this.param.Add(paramKey, rmAdviser.Parameters[paramKey]);
                        continue;
                    }
                    if (paramKey == "InvertedMetaStrategy")
                    {
                        rmAdviser.IsInverted = rmAdviser.Parameters[paramKey] == "1" || rmAdviser.Parameters[paramKey] == "true";
                        continue;
                    }

                    this.param[paramKey] = Int32.Parse(rmAdviser.Parameters[paramKey]);
                }


                this.logger = new MetaStrategyLogger(Meta);

                onStart(0);
                this.Meta.Print("onStart finidshed successfully");
            }
            catch (Exception exc)
            {
                string excString = "Start up exception: " + exc.ToString();
                Meta.Comment(excString);
                Meta.Print(excString);
            }
        }
Ejemplo n.º 4
0
        protected static News ParseFromFile(string str, ref DateTime lastDateTime, IStrategyLogger stategyLogger)
        {
            try
            {
                string       regex   = "[\"][^\"]*[\"] | [^,]*";
                RegexOptions options = ((System.Text.RegularExpressions.RegexOptions.IgnorePatternWhitespace | System.Text.RegularExpressions.RegexOptions.Multiline)
                                        | System.Text.RegularExpressions.RegexOptions.IgnoreCase);
                Regex reg = new Regex(regex, options);

                string[] strTokens = (from c in reg.Matches(str).OfType <Match>()
                                      select c.Value).ToArray();

                strTokens[0] = strTokens[0].Replace("\"", "").Trim();

                News n = new News();
                n.currency = strTokens[2].Trim();
                if (strTokens.Count() > 4)
                {
                    n.Desription = strTokens[4].Trim();
                }
                bool result = DateTime.TryParseExact(strTokens[0], "yyyy.MM.dd HH:mm GMT", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out n.DateTime);
                if (result)
                {
                    lastDateTime = n.DateTime;
                }
                else
                {
                    throw new ApplicationException(string.Format("Can`t parse date: {0}", str));
                }
                n.Importance = ConvertStringToNewsImportance(strTokens[6].Trim());
                n.Actual     = strTokens[8].Trim();
                n.Forecast   = strTokens[10].Trim();
                n.Previous   = strTokens[12].Trim();


                return(n);
            }
            catch (Exception exc)
            {
                throw new ApplicationException("Can`t parse news: " + str, exc);
            }
        }
Ejemplo n.º 5
0
 public SuperAdaptStrategy(StrategyParameter param, IStrategyLogger logger)
 {
     this.logger = logger;
     this.param  = param;
     this.logger.AddMessage("Start strategy with parameter {0}", param.ToString());
 }
Ejemplo n.º 6
0
 public GreatStrategy(Parameters param, IStrategyLogger logger)
 {
     this.param  = param;
     this.logger = logger;
 }
Ejemplo n.º 7
0
 public CasinoStrategy(CasinoParameters param, IStrategyLogger logger)
 {
     this.param  = param;
     this.logger = logger;
 }
Ejemplo n.º 8
0
 public SuperStrategy(SuperParametersCollection param, IStrategyLogger logger)
 {
     this.logger = logger;
     this.param  = param;
     this.logger.AddMessage("Start strategy with parameter {0}", param.ToString());
 }
Ejemplo n.º 9
0
 public SuperStrategy(StrategyParameter param, IStrategyLogger logger)
 {
     TestingMode = true;
     this.logger = logger;
     this.param  = param;
 }
Ejemplo n.º 10
0
        private void LoadNews(IStrategyLogger stategyLogger)
        {
            List <string> currencyList      = GetCurrenciesFromSymbol(Symbol);
            List <News>   allNewsCollection = News.Load(NewsPath, stategyLogger);

            if (stategyLogger != null)
            {
                stategyLogger.AddMessage("{0} news were loaded.", allNewsCollection.Count);
            }
            List <TimeRange> timeRangeNewsCollection    = new List <TimeRange>();
            List <TimeRange> timeRangeHolidayCollection = new List <TimeRange>();

            int gmt = IsCacheNews ? 0 : this.GMT;

            foreach (News currNews in allNewsCollection)
            {
                //if (stategyLogger != null)
                //    stategyLogger.AddMessage("{0}, {1}", currNews.currency.ToLower(), currNews.Importance.ToString());
                if (currencyList.Contains(currNews.currency.ToLower()) && currNews.Importance == NewsImportance.High)
                {
                    timeRangeNewsCollection.Add(new TimeRange(currNews.DateTime.AddMinutes(-MinutesBefore), currNews.DateTime.AddMinutes(MinutesAfter), currNews.Desription));
                }
            }

            DateTime firstDate = timeRangeNewsCollection.Count > 0 ? timeRangeNewsCollection[0].StartDateTime.Date : DateTime.Now.Date.AddYears(-1);
            DateTime lastDate  = timeRangeNewsCollection.Count > 0 ? timeRangeNewsCollection[timeRangeNewsCollection.Count - 1].EndDateTime.Date : DateTime.Now.Date.AddYears(-1).AddDays(1);

            while (firstDate.DayOfWeek != DayOfWeek.Saturday)
            {
                firstDate = firstDate.AddDays(-1);
            }
            while (lastDate.DayOfWeek != DayOfWeek.Saturday)
            {
                lastDate = lastDate.AddDays(1);
            }

            DateTime iteratorDateTime = firstDate;

            while (iteratorDateTime <= lastDate)
            {
                if (iteratorDateTime.DayOfWeek == DayOfWeek.Saturday)
                {
                    timeRangeHolidayCollection.Add(new TimeRange(iteratorDateTime.AddHours(-gmt).AddMinutes(-MinutesBefore), iteratorDateTime.AddHours(-gmt).AddMinutes(MinutesAfter), "DayOfWeek.Saturday"));
                }
                if (iteratorDateTime.DayOfWeek == DayOfWeek.Sunday)
                {
                    timeRangeHolidayCollection.Add(new TimeRange(iteratorDateTime.AddDays(1).AddHours(-gmt).AddMinutes(-MinutesBefore), iteratorDateTime.AddDays(1).AddHours(-gmt).AddMinutes(MinutesAfter), "DayOfWeek.Sunday"));
                }

                iteratorDateTime = iteratorDateTime.AddDays(1);
            }

            int iterNews     = 0;
            int iterHolidays = 0;

            for (int i = 0; i < timeRangeHolidayCollection.Count + timeRangeNewsCollection.Count; i++)
            {
                if (iterNews >= timeRangeNewsCollection.Count)
                {
                    timeRangeCollection.Add(timeRangeHolidayCollection[iterHolidays++]);
                    continue;
                }
                if (iterHolidays >= timeRangeHolidayCollection.Count)
                {
                    timeRangeCollection.Add(timeRangeNewsCollection[iterNews++]);
                    continue;
                }
                if (timeRangeHolidayCollection[iterHolidays].StartDateTime < timeRangeNewsCollection[iterNews].StartDateTime)
                {
                    timeRangeCollection.Add(timeRangeHolidayCollection[iterHolidays++]);
                }
                else
                {
                    timeRangeCollection.Add(timeRangeNewsCollection[iterNews++]);
                }
            }

            if (stategyLogger != null)
            {
                foreach (TimeRange currTimeRange in timeRangeCollection)
                {
                    stategyLogger.AddMessage("{0} - {1}, {2}", currTimeRange.StartDateTime, currTimeRange.EndDateTime, currTimeRange.Description);
                }
            }
        }
Ejemplo n.º 11
0
        public NewsPeriods(string newsPath, int minutesBefore, int minutesAfter, string symbol, bool isCacheNews, int gmt, IStrategyLogger stategyLogger)
        {
            this.NewsPath      = newsPath;
            this.MinutesBefore = minutesBefore;
            this.MinutesAfter  = minutesAfter;
            this.Symbol        = symbol;
            this.IsCacheNews   = isCacheNews;
            this.GMT           = gmt;
            stategyLogger.AddMessage("Start load news with the following parameters:");
            stategyLogger.AddMessage("NewsPath={0}", this.NewsPath);
            stategyLogger.AddMessage("MinutesBefore={0}", this.MinutesBefore);
            stategyLogger.AddMessage("MinutesAfter={0}", this.MinutesAfter);
            stategyLogger.AddMessage("Symbol={0}", this.Symbol);
            stategyLogger.AddMessage("GMT={0}", this.GMT);

            try
            {
                LoadNews(null);
            }
            catch (Exception exc)
            {
                stategyLogger.AddMessage(exc.ToString());
                throw;
            }
        }