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"); }
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"); }
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"); }
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; }
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(); }
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); }
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); }
public FadeMonthEndPush(QREBridgeBase bridge, Symbol symbol) : base(bridge, symbol) { atr = new AverageTrueRangeEW(bars, parameter <int>("ATRLen")); financialCenter = tsdb.FinancialCenterTable.CENTER.name(parameter <int>("financialCalendar")); }