Beispiel #1
0
        public async Task TestRuleExecutorAsync()
        {
            var candles = await ImportIOhlcvDatasAsync();

            var rule = Rule.Create(ic => ic.IsAboveSma(30));
            IReadOnlyList <IOhlcv> validObjects;

            using (var ctx = new AnalyzeContext(candles))
            {
                validObjects = new SimpleRuleExecutor(ctx, rule).Execute();
            }

            Assert.IsTrue(validObjects.Count == 882);
        }
Beispiel #2
0
        public async Task TestBullishCrossAlwaysFalseAsync()
        {
            var candles = await ImportIOhlcvDatasAsync();

            var rule = Rule.Create(ic => ic.IsEmaBullishCross(10, 30));
            IReadOnlyList <IOhlcv> validObjects;

            using (var ctx = new AnalyzeContext(candles))
            {
                validObjects = new SimpleRuleExecutor(ctx, rule).Execute();
            }

            Assert.IsTrue(validObjects.Count == 21);
        }
Beispiel #3
0
        public async Task TestGetRuleAsync()
        {
            var candles = await ImportIOhlcvDatasAsync();

            RuleRegistry.Register("isbelowsma30_2", "ic.Get<SimpleMovingAverage>(30)[ic.Index].Tick.IsTrue(t => t > ic.Close)");
            RuleRegistry.Register("isbelowsma30", (ic, p) => ic.Get <SimpleMovingAverage>(p[0])[ic.Index].Tick.IsTrue(t => t > ic.Close));

            using (var ctx = new AnalyzeContext(candles))
            {
                var result  = new SimpleRuleExecutor(ctx, ctx.GetRule("isbelowsma30_2")).Execute();
                var result2 = new SimpleRuleExecutor(ctx, ctx.GetRule("isbelowsma30", 30)).Execute();
                var result3 = new SimpleRuleExecutor(ctx, ic => ic.IsBelowSma(30)).Execute();

                Assert.AreEqual(result.Count(), result3.Count());
                Assert.AreEqual(result2.Count(), result3.Count());
            }
        }
Beispiel #4
0
        private static async Task Rules()
        {
            var data = await GetData();

            var rule = Trady.Analysis.Rule.Create(c => c.IsBullish()).And(k => k.IsMacdOscBearish());

            // Use context here for caching indicator results
            using (var ctx = new AnalyzeContext(data))
            {
                var validObjects = new SimpleRuleExecutor(ctx, rule).Execute();

                foreach (var item in validObjects)
                {
                    Console.WriteLine(item.GetPersianDate() + " - " + item.IsBullish());
                }
            }
        }