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