Beispiel #1
0
        private void enterTradeStrategy(Series <DateTime, MarketDataElement> series)
        {
            if (!execution.isPositionSignalBothEmpty())
            {
                return;
            }

            if (dayClosed)
            {
                return;
            }

            if (series == null)
            {
                return;
            }

            MarketDataElement lastItem   = (MarketDataElement)series.GetAt(series.KeyCount - 1);
            DateTime          current    = lastItem.time;
            String            strCurrent = String.Format("{0:yyyyMMdd}", current);

            double tickClose = calculateMid();

            if (tickClose.Equals(double.NaN))
            {
                return;
            }

            Boolean enterSignal = false;
            String  signalDir   = "";


            /******************************/
            if (tickClose < trendBuy && tickClose > revSell)
            {
                enterSignal = true;
                signalDir   = "R";
            }
            if (tickClose > trendSell && tickClose < revBuy)
            {
                enterSignal = true;
                signalDir   = "D";
            }
            /******************************/

            if (enterSignal && lossFilter)
            {
                if ("R".Equals(signalDir))
                {
                    String reason = "Place the {0} trade because TrendBuyLine={1};";
                    reason = reason.Replace("{0}", "BUY").Replace("{1}", trendBuy.ToString());
                    log.Info("[Strategy] : BUY Order Generated !!! | MarketDataElement=" + lastItem.toString());
                    stgHelper.placeStopTrade(AppConstant.BUY_SIGNAL, "Trend Buy Rule", trendBuy, reason, 1, 1);
                }

                if ("D".Equals(signalDir))
                {
                    String reason = "Place the {0} trade because TrendSellLine={1};";
                    reason = reason.Replace("{0}", "Sell").Replace("{1}", trendSell.ToString());
                    log.Info("[Strategy] : SELL Order Generated !!! | MarketDataElement=" + lastItem.toString());
                    stgHelper.placeStopTrade(AppConstant.SELL_SIGNAL, "Rev Sell Rule", trendSell, reason, 1, 1);
                }
            }
        }
Beispiel #2
0
        private void enterTradeStrategy(Series <DateTime, MarketDataElement> series)
        {
            if (!execution.isPositionSignalBothEmpty())
            {
                return;
            }

            if (dayClosed)
            {
                return;
            }

            if (series == null)
            {
                return;
            }

            MarketDataElement lastItem  = (MarketDataElement)series.GetAt(series.KeyCount - 1);
            double            tickClose = calculateMid();

            if (tickClose.Equals(double.NaN))
            {
                return;
            }

            if (lastItem.high > currentDayHigh)
            {
                currentDayHigh = lastItem.high;
            }

            if (double.MinValue.Equals(currentDayLow))
            {
                currentDayLow = lastItem.low;
            }

            if (lastItem.low < currentDayLow)
            {
                currentDayLow = lastItem.low;
            }

            /******************************/
            Boolean enterSignal = false;
            String  signalDir   = "";

            if (tickClose < trendBuy && tickClose > revSell && currentDayHigh >= sellCheck)
            {
                enterSignal = true;
                signalDir   = "D";
            }
            if (tickClose > trendSell && tickClose < revBuy && currentDayLow <= buyCheck)
            {
                enterSignal = true;
                signalDir   = "R";
            }

            /******************************/

            if (enterSignal && lossFilter)
            {
                if ("R".Equals(signalDir))
                {
                    String reason = "Place the {0} trade because RevBuyLine={1};";
                    reason = reason.Replace("{0}", "BUY").Replace("{1}", revBuy.ToString());
                    log.Info("[Strategy] : Enter BUY Generated !!! | MarketDataElement=" + lastItem.toString());
                    stgHelper.placeStopTrade(AppConstant.BUY_SIGNAL, "Rev Buy Rule", revBuy, reason, 1, 1);
                }

                if ("D".Equals(signalDir))
                {
                    String reason = "Place the {0} trade because RevSellLine={1};";
                    reason = reason.Replace("{0}", "SELL").Replace("{1}", revSell.ToString());
                    log.Info("[Strategy] : Enter SELL Generated !!! | MarketDataElement=" + lastItem.toString());
                    stgHelper.placeStopTrade(AppConstant.SELL_SIGNAL, "Rev Sell Rule", revSell, reason, 1, 1);
                }
            }
        }