コード例 #1
0
ファイル: fs_UnitTests.cs プロジェクト: ssh352/TradingAdapter
        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");
            }
        }
コード例 #2
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();
                }
            }
        }
コード例 #3
0
        // decide if we are entering or exiting a long or short trade
        // different criteria can be used for each condition
        private void DecisionFunction()
        {
            switch (Framework.Account.InTrade())
            {
            // if we are not in a trade, see to enter long or short
            case 0:
            {
                // seems like a repetitive check
                if (Framework.Account.InTrade() == 0)
                {
                    if (EntryCriteriaLong())
                    {
                        Framework.Account.EnterTrade(1);
                        Framework.Account.SetTrailingStop(0.0018);
                    }
                }

                // now is not a repetitive check since
                // EntryCriteriaLong might have entered a trade
                // so check again
                if (Framework.Account.InTrade() == 0)
                {
                    if (EntryCriteriaShort())
                    {
                        Framework.Account.EnterTrade(1);
                        Framework.Account.SetTrailingStop(0.0018);
                    }
                }

                break;
            }

            // if we are currently long, look for a long exit strategy
            case 1:
            {
                if (EntryCriteriaShort())
                {
                    Framework.Account.ExitTrade();
                    //Framework.Account.EnterTrade(-1);
                }
                break;
            }

            // if we are currently short, look for a short exit strategy
            case -1:
            {
                if (EntryCriteriaLong())
                {
                    Framework.Account.ExitTrade();
                    //Framework.Account.EnterTrade(1);
                }
                break;
            }
            }

            // extract values from indicators and account
            // and log them to a file (used to create a graph with a separate app)
            double logInTrade = Framework.Account.InTrade();
            double logMargin  = Framework.Account.GetAccount().C;
            double C          = cbx.GetCandle(0).C;
            double TP         = (cbx.GetCandle(0).C + cbx.GetCandle(0).H + cbx.GetCandle(0).L) / 3;
            double hma        = HMA.Value();
            double fma        = FMA.Value();
            double deriv1     = ((double)Deriv1.GetItem(0));
            double deriv2     = ((double)Deriv2.GetItem(0));
            double sma;
            double bband1;
            double bband2;
            double pb;
            double bw;
            double srsi = StochRSI.Value();
            double cci  = CCI.Value();

            BBands.Value(out bband1, out sma, out bband2, out pb, out bw);

            // write monitored valued to the numerical output file
            // Framework.WriteGraphLine("InTrade,Margin,C,TP,FMA,HMA,Deriv1,Deriv2,SMA,BBand1,BBand2,%b,Bandwidth,StochRSI,CCI");
            Framework.WriteGraphLine(logInTrade + "," + logMargin + "," + C + "," + TP + "," + fma + "," + hma + "," + deriv1 + "," + deriv2 + "," + sma + "," + bband1 + "," + bband2 + "," + pb + "," + bw + "," + srsi + "," + cci);
        }
コード例 #4
0
        public string GetValues()
        {
            string Values;

            double BPlus, BSMA, BMinus, PctB, BW;
            double Deriv1, Deriv2;
            double MACDv, MACDs, MACDh;
            double STARCPlus, STARCSMA, STARCMinus;
            double STOv, STOs;

            double ATRv = ATR.Value();

            BB.Value(out BPlus, out BSMA, out BMinus, out PctB, out BW);
            double CCIv = CCI.Value();

            Derivatives.Value(out Deriv1, out Deriv2);
            double EMAv = EMA.Value();
            double FMAv = FMA.Value();
            double HMAv = HMA.Value();

            MACD.Value(out MACDv, out MACDs, out MACDh);
            double MOMv = Momemtum.Value();
            double RSIv = RSI.Value();
            double RKOv = Renko.Value();
            double SMAv = SMA.Value();

            STARCBands.Value(out STARCPlus, out STARCSMA, out STARCMinus);
            double STDv = STDDEV.Value();
            double SLPv = Slope.Value();
            double SRSv = StochRSI.Value();

            Stochastics.Value(out STOv, out STOs);
            double STv  = Stub.Value();
            double TRDv = Trend.Value();
            double TRv  = TrueRange.Value();
            double WMAv = WMA.Value();

            string ATRp = ATR.isPrimed().ToString();
            string BBp  = BB.isPrimed().ToString();
            string CCIp = CCI.isPrimed().ToString();
            string DERp = Derivatives.isPrimed().ToString();
            string EMAp = EMA.isPrimed().ToString();
            string FMAp = FMA.isPrimed().ToString();
            string HMAp = HMA.isPrimed().ToString();
            string MACp = MACD.isPrimed().ToString();
            string MOMp = Momemtum.isPrimed().ToString();
            string RSIp = RSI.isPrimed().ToString();
            string RKOp = Renko.isPrimed().ToString();
            string SMAp = SMA.isPrimed().ToString();
            string STCp = STARCBands.isPrimed().ToString();
            string STDp = STDDEV.isPrimed().ToString();
            string SLPp = Slope.isPrimed().ToString();
            string SRSp = StochRSI.isPrimed().ToString();
            string STOp = Stochastics.isPrimed().ToString();
            string STp  = Stub.isPrimed().ToString();
            string TRDp = Trend.isPrimed().ToString();
            string TRp  = TrueRange.isPrimed().ToString();
            string WMAp = WMA.isPrimed().ToString();

            Values =
                Candle.O + "," + Candle.H + "," + Candle.L + "," + Candle.C + "," +
                ATRp + "," + ATRv + "," +
                BBp + "," + BPlus + "," + BSMA + "," + BMinus + "," + PctB + "," + BW + "," +
                CCIp + "," + CCIv + "," +
                DERp + "," + Deriv1 + "," + Deriv2 + "," +
                EMAp + "," + EMAv + "," +
                FMAp + "," + FMAv + "," +
                HMAp + "," + HMAv + "," +
                MACp + "," + MACDv + "," + MACDs + "," + MACDh + "," +
                MOMp + "," + MOMv + "," +
                RSIp + "," + RSIv + "," +
                RKOp + "," + RKOv + "," +
                SMAp + "," + SMAv + "," +
                STCp + "," + STARCPlus + "," + STARCSMA + "," + STARCMinus + "," +
                STDp + "," + STDv + "," +
                SLPp + "," + SLPv + "," +
                SRSp + "," + SRSv + "," +
                STOp + "," + STOv + "," + STOs + "," +
                STp + "," + STv + "," +
                TRDp + "," + TRDv + "," +
                TRp + "," + TRv + "," +
                WMAp + "," + WMAv;

            return(Values);
        }