Пример #1
0
        /// <summary>
        /// Executes all the logic when the Enter Signal is triggered
        /// </summary>
        /// <param name="data"></param>
        public void EnterTradeSignal(TradeBar data, Security symbol)
        {
            EnterSignal.Scan(data);
            if (symbol.IsTradable && EnterSignal.Signal == SignalType.Long || EnterSignal.Signal == SignalType.Short)
            {
                //Creates a new trade profile once it enters a trade
                var profile = new TradeProfile(_symbol, _security.VolatilityModel.Volatility, _risk, data.Close, _maximumTradeSize);

                profile.ExitSignal = ExitSignal.ExitSignalFactory(profile);

                var profileQuantity = profile.Quantity;
                if (profileQuantity > 0)
                {
                    profile.OpenTicket = _orderMethods.MarketOrder(_symbol, (int)EnterSignal.Signal * profile.Quantity);
                    profile.StopTicket = _orderMethods.StopMarketOrder(_symbol, -(int)EnterSignal.Signal * profile.Quantity,
                                                                       profile.OpenTicket.AverageFillPrice - (int)EnterSignal.Signal * profile.DeltaStopLoss);

                    _tradeProfiles.Add(profile);
                }
            }
        }
Пример #2
0
 public ISignal ExitSignalFactory(TradeProfile tradeProfile)
 {
     return(new ProfitTargetSignalExit(tradeProfile, _targetProfitLossRatio));
 }
Пример #3
0
 public ProfitTargetSignalExit(TradeProfile tradeProfile, decimal targetProfitLossRatio)
 {
     _tradeProfile          = tradeProfile;
     _targetProfitLossRatio = targetProfitLossRatio;
 }