Esempio n. 1
0
        protected void Init(
            bool takeLongsParameter,
            bool takeShortsParameter,
            MaCrossRuleValues maCrossRule,
            LotSizingRuleValues lotSizingRule,
            double dynamicRiskPercentage)
        {
            _takeLongsParameter    = takeLongsParameter;
            _takeShortsParameter   = takeShortsParameter;
            _maCrossRule           = maCrossRule;
            _lotSizingRule         = lotSizingRule;
            _dynamicRiskPercentage = dynamicRiskPercentage;
            var lotSizing = (LotSizingRuleValues)lotSizingRule;

            if (lotSizing == LotSizingRuleValues.Dynamic && (dynamicRiskPercentage <= 0 || dynamicRiskPercentage >= 10))
            {
                throw new ArgumentOutOfRangeException($"Dynamic Risk value is out of range - it is a percentage (e.g. 2)");
            }

            _canOpenPosition = true;

            Positions.Opened += OnPositionOpened;
            Positions.Closed += OnPositionClosed;

            Print("Symbol.TickSize: {0}, Symbol.Digits: {1}, Symbol.PipSize: {2}",
                  Symbol.TickSize, Symbol.Digits, Symbol.PipSize);
        }
Esempio n. 2
0
        protected void Init(
            bool takeLongsParameter,
            bool takeShortsParameter,
            int initialStopLossRule,
            int initialStopLossInPips,
            int trailingStopLossRule,
            int trailingStopLossInPips,
            int lotSizingRule,
            int takeProfitRule,
            int takeProfitInPips = 0,
            int minutesToWaitAfterPositionClosed = 0,
            bool moveToBreakEven          = false,
            bool closeHalfAtBreakEven     = false,
            double dynamicRiskPercentage  = 2,
            int barsToAllowTradeToDevelop = 0,
            int maCrossRule = 0)
        {
            ValidateParameters(takeLongsParameter, takeShortsParameter, initialStopLossRule, initialStopLossInPips,
                               trailingStopLossRule, trailingStopLossInPips, lotSizingRule, takeProfitRule, takeProfitInPips,
                               minutesToWaitAfterPositionClosed, moveToBreakEven, closeHalfAtBreakEven, dynamicRiskPercentage, barsToAllowTradeToDevelop, maCrossRule);

            _takeLongsParameter               = takeLongsParameter;
            _takeShortsParameter              = takeShortsParameter;
            _initialStopLossRule              = (InitialStopLossRuleValues)initialStopLossRule;
            _initialStopLossInPips            = initialStopLossInPips;
            _trailingStopLossRule             = (TrailingStopLossRuleValues)trailingStopLossRule;
            _trailingStopLossInPips           = trailingStopLossInPips;
            _lotSizingRule                    = (LotSizingRuleValues)lotSizingRule;
            _takeProfitRule                   = (TakeProfitRuleValues)takeProfitRule;
            _takeProfitInPips                 = takeProfitInPips;
            _minutesToWaitAfterPositionClosed = minutesToWaitAfterPositionClosed;
            _moveToBreakEven                  = moveToBreakEven;
            _closeHalfAtBreakEven             = closeHalfAtBreakEven;
            _dynamicRiskPercentage            = dynamicRiskPercentage;
            _barsToAllowTradeToDevelop        = barsToAllowTradeToDevelop;
            _maCrossRule = (MaCrossRuleValues)maCrossRule;

            _canOpenPosition = true;

            Positions.Opened   += OnPositionOpened;
            Positions.Closed   += OnPositionClosed;
            Positions.Modified += OnPositionModified;

            Print("Symbol.TickSize: {0}, Symbol.Digits: {1}, Symbol.PipSize: {2}",
                  Symbol.TickSize, Symbol.Digits, Symbol.PipSize);
        }