private void DecisionFunction() { CCIv = CCI.Value(); TCCIv = TCCI.Value(); CCISlope.Value(out CCIDelta, out CCISpeed); // preprocessing FindTrend(); DetectZLR(); switch (Framework.Account.InTrade()) { case 0: { if (Framework.Account.InTrade() == 0) { if (EntryCriteriaLong()) { Framework.Account.EnterTrade(1); Framework.Account.SetTrailingStop(0.0008); } } if (Framework.Account.InTrade() == 0) { if (EntryCriteriaShort()) { Framework.Account.EnterTrade(1); Framework.Account.SetTrailingStop(0.0008); } } 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,C,CCI,CCIDelta,CCISpeed,TCCI,TypeOfTrade,Direction,BelowFifty,ZLR"); Framework.WriteGraphLine(logInTrade + "," + logMargin + "," + Candle.C + "," + CCIv + "," + CCIDelta + "," + CCISpeed + "," + TCCIv + "," + TradeTypeText + "," + DirectionText + "," + BelowFiftyText + "," + ZLRText); }
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(); } } }