protected override bool ProcessDCA(OpenPositionInfo info)
        {
            TaSettingsBase st = GetSettings(info);

            if (st != null && st.EnableStopLoss)
            {
                return(false);
            }
            return(base.ProcessDCA(info));
        }
        protected void InitializeDac(OpenPositionInfo info, TaSettingsBase settings)
        {
            double value    = info.OpenValue;
            double dacStart = value * (100.0 - settings.DCAStartPercent) * 0.01;
            double dacEnd   = SRIndicator2.GetLastMinSupport(5);

            if (dacEnd > dacStart)
            {
                dacEnd = dacStart - (SRIndicator2.Resistance.Last().Value - SRIndicator2.Support.Last().Value);
            }
            if (dacEnd > value * (100 - settings.DCAEndPercent) * 0.01)
            {
                dacEnd = value * (100 - settings.DCAEndPercent) * 0.01;
            }

            info.AllowDCA = true;
            info.InitializeDCA(dacStart, dacEnd, info.Amount, 3, settings.DCAStartAmountFraction, settings.DCAEndAmountFraction);
        }
        protected override bool ShouldCloseLongPosition(OpenPositionInfo info)
        {
            if (base.ShouldCloseLongPosition(info))
            {
                return(true);
            }
            TaSettingsBase st = GetSettings(info);

            if (st != null && st.EnableStopLoss && info.CurrentChangeInPc < -st.StopLossPc)
            {
                return(true);
            }
            //if(info.Mark == "BU") {
            //    // if going down
            //    double pcUp = (info.CurrentValue - info.OpenValue) / info.OpenValue * 100;
            //    double pcDown = (info.MaxValue - info.CurrentValue) / info.CurrentValue * 100;
            //    if(pcDown > pcUp && pcDown > 1)
            //        return true;
            //}
            return(false);
        }