Esempio n. 1
0
        public DTDRichCheap(QREBridgeBase bridge, Symbol symbol) : base(bridge, symbol)
        {
            requireOrdered("exitShortLevel", "triggerShort");
            requireOrdered("triggerLong", "exitLongLevel");
            requireOrdered("triggerLong", "exitShortLevel");
            requireOrdered("exitLongLevel", "triggerShort");
            if (!isActive())
            {
                return;
            }

            richCheap    = symbol.relatedSuffix("RICHCHEAP").doubles(bars);
            dtd          = symbol.relatedSuffix("DTD").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>("lossStopLevel");
            deactivate(() => dtd.hasContent() && richCheap.count() >= lengthZScore);

            addToPlot(dtd, "DTD", Color.Red, "dtd");
            addToPlot(richCheap, "Rich / Cheap", Color.Blue, "richCheap");
        }
Esempio n. 2
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");
        }
Esempio n. 3
0
        public DTDRichCheapV2(QREBridgeBase bridge, Symbol symbol) : base(bridge, symbol)
        {
            requireOrdered("exitShortLevel", "triggerShort");
            requireOrdered("triggerLong", "exitLongLevel");
            requireOrdered("triggerLong", "exitShortLevel");
            requireOrdered("exitLongLevel", "triggerShort");
            if (!isActive())
            {
                return;
            }

            richCheap    = symbol.relatedSuffix("RICHCHEAP").doubles(bars);
            dtd          = symbol.relatedSuffix("DTD").doubles(bars);
            spread       = symbol.relatedSuffix("SPREAD").doubles(bars);
            lengthZScore = parameter <int>("lengthZScore");
            zScore       = new ZScoreSpud(richCheap, lengthZScore, true);
            dv01         = symbol.relatedSuffix("DV01").doubles(bars);

            triggerLong             = parameter <double>("triggerLong");
            triggerShort            = parameter <double>("triggerShort");
            exitShort               = parameter <double>("exitShortLevel");
            exitLong                = parameter <double>("exitLongLevel");
            stopLoss                = parameter <double>("lossStopLevel");
            timeStopBars            = parameter <double>("timeStopBars");
            trailingStopFlag        = parameter <double>("trailingStopFlag");
            maxSpread               = parameter <double>("maxSpread");
            profitObjectiveMultiple = parameter <double>("profitObjectiveMultiple");

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

            addToPlot(dtd, "DTD", Color.Red, "dtd");
            addToPlot(richCheap, "Rich / Cheap", Color.Blue, "richCheap");
        }