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