// CandleBuilders call this function when registered with them
        // and a new candle is built
        // one distinguished calling CandleBuilder by handle in candle and period
        public override void ReceiveCandle(sCandle pCandle, int pPeriod, string pCBTitle)
        {
            if ((pPeriod == Minutes) && (pCBTitle == "cbx"))
            {
                HMA.ReceiveTick(pCandle.C);
                FMA.ReceiveTick(pCandle.C);
                CCI.ReceiveTick(pCandle.O, pCandle.H, pCandle.L, pCandle.C);
                //BBands.ReceiveTick(pCandle.C);
                //StochRSI.ReceiveTick(pCandle.C);

                if (HMA.Value() != 0)
                {
                    Derivatives.ReceiveTick(HMA.Value());
                    BBands.ReceiveTick(HMA.Value());
                    StochRSI.ReceiveTick(HMA.Value());
                }

                if ((cbx.candlecount > 3) && (Derivatives.isPrimed()) && (StochRSI.isPrimed()))
                {
                    double deriv2;
                    double deriv1;

                    Derivatives.Value(out deriv1, out deriv2);

                    Deriv1.Add(deriv1);
                    Deriv2.Add(deriv2);

                    if (Deriv2.tickcount > 2)
                    {
                        DecisionFunction();
                    }
                }
            }
        }
예제 #2
0
        public void ReceiveCandle(sCandle pCandle)
        {
            Candle = pCandle;

            ATR.ReceiveTick(pCandle.O, pCandle.H, pCandle.L, pCandle.C);
            BB.ReceiveTick(pCandle.C);
            CCI.ReceiveTick(pCandle.O, pCandle.H, pCandle.L, pCandle.C);
            Derivatives.ReceiveTick(pCandle.C);
            EMA.ReceiveTick(pCandle.C);
            FMA.ReceiveTick(pCandle.C);
            HMA.ReceiveTick(pCandle.C);
            MACD.ReceiveTick(pCandle.C);
            Momemtum.ReceiveTick(pCandle.C);
            RSI.ReceiveTick(pCandle.C);
            Renko.ReceiveTick(pCandle.C);
            SMA.ReceiveTick(pCandle.C);
            STARCBands.ReceiveTick(pCandle.O, pCandle.H, pCandle.L, pCandle.C);
            STDDEV.ReceiveTick(pCandle.C);
            Slope.ReceiveTick(pCandle.C);
            StochRSI.ReceiveTick(pCandle.C);
            Stochastics.ReceiveTick(pCandle.O, pCandle.H, pCandle.L, pCandle.C);
            Stub.ReceiveTick(pCandle.C);
            Trend.ReceiveTick(pCandle.O, pCandle.H, pCandle.L, pCandle.C);
            TrueRange.ReceiveTick(pCandle.O, pCandle.H, pCandle.L, pCandle.C);
            WMA.ReceiveTick(pCandle.C);
        }
예제 #3
0
        public override void ReceiveCandle(sCandle pCandle, int pPeriod, string pCBTitle)
        {
            if ((pPeriod == Minutes) && (pCBTitle == "cbx"))
            {
                Candle = pCandle;
                CCI.ReceiveTick(pCandle.O, pCandle.H, pCandle.L, pCandle.C);
                TCCI.ReceiveTick(pCandle.O, pCandle.H, pCandle.L, pCandle.C);

                // need to put primed values into this indicators
                // not primed right now to decrease down time
                CCIH.Add(CCI.Value());
                TCCIH.Add(CCI.Value());
                CCISlope.ReceiveTick(CCI.Value());

                if (CCI.isPrimed() && TCCI.isPrimed())
                {
                    DecisionFunction();
                }
            }
        }
예제 #4
0
        public static void TestCCI()
        {
            iCCI cci = new iCCI(20);

            cci.ReceiveTick(1302.67, 1302.67, 1263.23, 1263.84);
            cci.ReceiveTick(1268.65, 1294.65, 1261, 1292.3101);
            cci.ReceiveTick(1274.76, 1274.76, 1251, 1251);
            cci.ReceiveTick(1280.27, 1304.02, 1280.27, 1295.3);
            cci.ReceiveTick(1286.75, 1310.33, 1270.73, 1304.6);
            cci.ReceiveTick(1306.13, 1322.4301, 1299.53, 1320.09);
            cci.ReceiveTick(1328.35, 1347.27, 1314.96, 1315.45);
            cci.ReceiveTick(1305.72, 1305.72, 1279.09, 1279.6801);
            cci.ReceiveTick(1272.9399, 1292.36, 1270.59, 1291.4);
            cci.ReceiveTick(1286.85, 1292.73, 1267.6899, 1275.88);
            cci.ReceiveTick(1292.91, 1298.5, 1258.85, 1259.9399);
            cci.ReceiveTick(1244.52, 1263.9, 1233.08, 1252.13);
            cci.ReceiveTick(1233.9399, 1242.91, 1216.1899, 1216.45);
            cci.ReceiveTick(1229.47, 1232.96, 1216.24, 1221.09);
            cci.ReceiveTick(1209.13, 1209.72, 1177.41, 1184.9301);
            cci.ReceiveTick(1170.95, 1200.45, 1169.04, 1182.17);
            cci.ReceiveTick(1195.6, 1227.23, 1184.12, 1222.29);
            cci.ReceiveTick(1231.85, 1239.62, 1206.91, 1221.61);

            cci.ReceiveTick(1213.77, 1235.08, 1198.12, 1199.16);
            double v;

            v = cci.Value();
            if ((v != 0) || (cci.isPrimed()))
            {
                Framework.Logger(2, "ERROR: CCI should not be primed yet");
            }

            cci.ReceiveTick(1187.48, 1190.74, 1160.0699, 1172.0601);
            v = cci.Value();
            if (Math.Abs(v - (-136.0742924)) < 0.001)
            {
                Framework.Logger(2, "CCI returned correct value -136.074");
            }

            cci.ReceiveTick(1180.26, 1214.01, 1160.71, 1213.72);
            v = cci.Value();
            if (Math.Abs(v - (-87.47)) < 0.01)
            {
                Framework.Logger(2, "CCI returned correct value -87.47");
            }
        }