コード例 #1
0
        // 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 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);
        }
コード例 #3
0
        private void DecisionFunction()
        {
            BBands.Value(out BPlus, out SMA, out BMinus, out PctB, out BW);
            BWidth = BPlus - BMinus;
            SMASlope.ReceiveTick(SMA);

            HMAv = HMA.Value();

            // preprocessing

            StateMachine();

            switch (Framework.Account.InTrade())
            {
            case 0:
            {
                if (Framework.Account.InTrade() == 0)
                {
                    if (EntryCriteriaLong())
                    {
                        Framework.Account.EnterTrade(1);
                        Framework.Account.SetTrailingStop(TrailingStop);
                    }
                }

                if (Framework.Account.InTrade() == 0)
                {
                    if (EntryCriteriaShort())
                    {
                        Framework.Account.EnterTrade(-1);
                        Framework.Account.SetTrailingStop(TrailingStop);
                    }
                }
                break;
            }

            case 1:
            {
                if (ExitCriteriaLong())
                {
                    Framework.Account.ExitTrade();
                }
                break;
            }

            case -1:
            {
                if (ExitCriteriaShort())
                {
                    Framework.Account.ExitTrade();
                }
                break;
            }
            }

            double logInTrade = Framework.Account.InTrade();
            double logMargin  = Framework.Account.GetAccount().C;

            //Framework.WriteGraphLine("InTrade,Margin,B+,C,HMA,SMA,B-,State,BWidth,MinBWidth,EntryRecommend");
            Framework.WriteGraphLine(logInTrade + "," + logMargin + "," + BPlus + "," + Candle.C + "," + HMAv + "," + SMA + "," + BMinus + "," + State + "," + BWidth + "," + MinBWidth + "," + EntryRecommend);
        }