// 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(); } } } }
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); }
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); }