Beispiel #1
0
        public ReverseDTD(QREBridgeBase bridge, Symbol symbol) : base(bridge, symbol)
        {
            requireOrdered("exitShortLevel", "triggerShort");
            requireOrdered("triggerLong", "exitLongLevel");
            requireOrdered("triggerLong", "exitShortLevel");
            requireOrdered("exitLongLevel", "triggerShort");
            if (!isActive())
            {
                return;
            }

            richCheap    = symbol.relatedSuffixFromFirstDot(".DTD.EQUITY.RICHCHEAP").doubles(bars);
            dtd          = symbol.relatedSuffixFromFirstDot(".DTD.EQUITY").doubles(bars);
            stockPrice   = symbol.relatedSuffixFromFirstDot(".UNADJSTOCKPRICE").doubles(bars);
            lengthZScore = parameter <int>("lengthZScore");
            zScore       = new ZScoreSpud(richCheap, lengthZScore, true);

            triggerLong      = parameter <double>("triggerLong");
            triggerShort     = parameter <double>("triggerShort");
            exitShort        = parameter <double>("exitShortLevel");
            exitLong         = parameter <double>("exitLongLevel");
            stopLoss         = parameter <double>("stopLoss");
            timeStopBars     = parameter <double>("timeStopBars");
            trailingStopFlag = parameter <double>("trailingStopFlag");
            minPrice         = parameter <double>("minPrice");
            tradeSize        = parameter <double>("tradeSize");
            atr = new AverageTrueRangeEW(bars, parameter <int>("ATRLen"));

            trailingStop = 0;
            deactivate(() => dtd.hasContent() && richCheap.count() >= lengthZScore);

            addToPlot(dtd, "DTD", Color.Red, "dtd");
            addToPlot(richCheap, "Rich / Cheap", Color.Blue, "richCheap");
        }
Beispiel #2
0
        public NBarFade(QREBridgeBase bridge, Symbol symbol) : base(bridge, symbol)
        {
            atrLen         = parameter <int>("ATRLen");
            nDays          = parameter <int>("nDays");
            nATREntry      = parameter <double>("nATRentry");
            stopAfStep     = parameter <double>("stopAfStep");
            stopAfMax      = parameter <double>("stopAfMax");
            entryBarWindow = parameter <double>("entryBarWindow");
            closeBetter    = parameter <bool>("closeBetter");
            riskDollars    = parameter <double>("riskDollars");

            atr           = new AverageTrueRangeEW(bars, atrLen); // this should be a daily spud
            nATRStopStart = nATREntry * parameter <double>("exitATRmultiple");

            entryHighestHigh = bars.high.highest(nDays);
            entryLowestLow   = bars.low.lowest(nDays);
            var halfNDays = (int)Math.Round(nDays * 0.5, 0);

            exitHighestHigh = bars.high.highest(halfNDays);
            exitLowestLow   = bars.low.lowest(halfNDays);

            inConfirm = false;

            //Plot methods
            parabolicStop = null;
            stopIndicator = new RootSpud <double>(bars.manager);
            addToPlot(stopIndicator, "ParabolicStop", Color.Red);
            addToPlot(entryHighestHigh, "entryHighestHigh", Color.LightBlue);
            addToPlot(entryLowestLow, "entryLowestLow", Color.Blue);
            addToPlot(exitHighestHigh, "exitHighestHigh", Color.Pink);
            addToPlot(exitLowestLow, "exitLowestLow", Color.Salmon);
            addToPlot(bars.close, "price", Color.Purple);
            addToPlot(atr, "ATR", Color.Blue, "ATRPane");
        }
Beispiel #3
0
        public SwingMA(QREBridgeBase bridge, Symbol symbol) : base(bridge, symbol)
        {
            entryATRMargin = parameter <double>("EntryATRMargin");
            exitATRMargin  = 2 * entryATRMargin;
            stopATRs       = parameter <int>("StopATRs");
            riskDollars    = parameter <double>("RiskDollars");

            atr    = new AverageTrueRangeEW(bars, parameter <int>("ATRLen"));
            maSlow = new Average(bars.close, parameter <int>("MASlow"));
            //Set up raw moving average
            switch (parameter <int>("MAType"))
            {
            case 1:
                maSlow = new Average(bars.close, parameter <int>("MASlow"));
                maFast = new Average(bars.close, parameter <int>("MAFast"));
                break;

            case 2:
                maSlow = new KAMA(bars.close, 2, 30, parameter <int>("MASlow"));
                maFast = new KAMA(bars.close, 2, 30, parameter <int>("MAFast"));
                break;

            default:
                Bomb.toss("Not valid MAType");
                break;
            }

            addToPlot(maSlow, "maSlow", Color.Blue);
            addToPlot(maFast, "maFast", Color.Red);
            addToPlot(atr, "ATR", Color.Blue, "ATRPane");
        }
Beispiel #4
0
 public RSITargets(QREBridgeBase bridge, Symbol symbol) : base(bridge, symbol)
 {
     atr           = new AverageTrueRangeEW(bars, parameter <int>("ATRLen"));
     rsiSpud       = new RSI(bars.close, parameter <int>("HalfLife"));
     entryLevel    = parameter <double>("EntryLevel");
     exitLevel     = parameter <double>("ExitLevel");
     stoppedFlag   = false;
     lastDirection = 0;
     lastStop      = 0;
 }
Beispiel #5
0
 public FadeWeekEndPush(QREBridgeBase bridge, Symbol symbol) : base(bridge, symbol)
 {
     atr              = new AverageTrueRangeEW(bars, parameter <int>("ATRLen"));
     nDays            = parameter <int>("NDays");
     multiple         = parameter <double>("Multiple");
     risk             = parameter <double>("Risk");
     initialEquity    = parameter <double>("InitEquity");
     fixEquity        = parameter <bool>("FixEquity");
     exitDay          = parameter <int>("ExitDay");
     stopLossMultiple = parameter <double>("StopLossMultiple");
     bars.close.prepare();
 }
Beispiel #6
0
        protected NDayBreakBase(QREBridgeBase bridge, Symbol symbol,
                                Converter <BarSpud, ComparableSpud <double> > high,
                                Converter <BarSpud, ComparableSpud <double> > low
                                ) : base(bridge, symbol)
        {
            atr = new AverageTrueRangeEW(bars, parameter <int>("ATRLen"));

            breakDays     = parameter <int>("BreakDays") - 1;
            breakOutHigh  = high(bars).highest(breakDays);
            breakOutLow   = low(bars).lowest(breakDays);
            breakDownHigh = high(bars).highest(breakDays / 2);
            breakDownLow  = low(bars).lowest(breakDays / 2);

            risk = parameter <double>("Risk");

            addToPlot(breakOutHigh, "breakout high", Color.Red);
            addToPlot(breakOutLow, "breakout low", Color.Blue);
            addToPlot(breakDownHigh, "breakdown high", Color.DeepPink);
            addToPlot(breakDownLow, "breakdown low", Color.DeepSkyBlue);
        }
Beispiel #7
0
        public ITrend(QREBridgeBase bridge, Symbol symbol) : base(bridge, symbol)
        {
            atrLength       = parameter <int>("atrLength");
            sizeScaleSwitch = parameter <int>("sizeScaleSwitch");
            nATRStop        = parameter <double>("nATRStop");
            nATRTrigger     = parameter <double>("nATRTrigger");
            dailyATRSwitch  = parameter <int>("useDailyATR");
            risk            = parameter <int>("risk");
            timeStampClose  = parameter <double>("timeStampClose");
            timeStampMark   = parameter <double>("timeStampMark");

            atr = new AverageTrueRangeEW(
                dailyATRSwitch == 1 ? (Spud <Bar>) new IntervalSpud(bars, Interval.DAILY) : bars,
                atrLength);

            scaleWeights = new double[10];
            zeroTo(scaleWeights.Length, i => scaleWeights[i] = 1.5 - (double)i / 9);
            scaleWins = new double[10];
            initializeWinScale();
            financialCenter = FinancialCenterTable.CENTER.name(39);
        }
Beispiel #8
0
 public FadeMonthEndPush(QREBridgeBase bridge, Symbol symbol) : base(bridge, symbol)
 {
     atr             = new AverageTrueRangeEW(bars, parameter <int>("ATRLen"));
     financialCenter = tsdb.FinancialCenterTable.CENTER.name(parameter <int>("financialCalendar"));
 }