public SignalFXMole(MarketData fx, IndicatorRSI rsi, ModelMacD macD, IndicatorRSI[] rsiRefs, decimal volCoeff) : base("FXMole_" + rsi.PeriodSizeMn + "_" + rsi.NbPeriods + "_" + fx.Id, fx) { _startThreshold = 2m; _timeFrameMn = 90; _timeFramePeakMn = 75; _timeFrameBottomMn = 30; _timeFrameStopLossMn = 30; _timeFrameRsiLongMn = 5; _rsiBuyThreshold = 30m; _rsiSellThreshold = 70m; _minVol = 15m * volCoeff; _maxVol = 30m * volCoeff; _maxLongVol = 50m * volCoeff; _maxTotalVol = 100m * volCoeff; _rsi_loss_reset = true; _emaVeryShort = macD.SignalLow.IndicatorLow; _emaShort = macD.SignalHigh.IndicatorLow; _emaLong = macD.SignalHigh.IndicatorHigh; _rsiRefs = rsiRefs; _nominalVol = 10m * volCoeff; _highVol = 25m * volCoeff; _maxSpread = volCoeff * 1.20m; // max +20% spread _maxShortMacDSpread = 5m * volCoeff; _maxLongMacDSpread = 10m * volCoeff; _maxWmVol = 2m * volCoeff; //_rsiLong = new IndicatorRSI(fx, rsi.PeriodSizeMn, rsi.NbPeriods * 2); _trend = new IndicatorTrend(fx, rsi.PeriodSizeMn * 30, rsi.NbPeriods, false); _wmvol = new IndicatorWMVol(fx, _emaVeryShort, 60, 90); //_wmvolLong = new IndicatorWMVol(fx, _emaLong); _volTrend = new IndicatorTrend(_wmvol, 30, 6, true); //_volTrendAvg = new IndicatorEMA(_wmvol, _timeFrameMn); _volTrendTrend = new IndicatorTrend(_volTrend, 30, 6, true); //_volCurve = new IndicatorCurve(_volTrend); for (int idxInterval = 0; idxInterval < _timeFrameStopLossMn; idxInterval++) { stopLossTimes.Add(new Interval(idxInterval, idxInterval + 1)); } decimal prevStopLoss = _nominalVol; for (int idxLin = 0; idxLin < _timeFrameStopLossMn; idxLin++) { decimal stopLoss = _nominalVol * (1m - (decimal)idxLin / _timeFrameStopLossMn); stopLossValues.Add(new Interval(prevStopLoss, stopLoss)); stopWinValues.Add(new Interval(prevStopLoss, stopLoss)); prevStopLoss = stopLoss; } for (int idxLin = 0; idxLin <= _timeFrameStopLossMn; idxLin++) { bigStopLossValues.Add(new Interval(_highVol, _highVol)); } _trend.Subscribe(OnUpdateTrend, null); //_rsiLong.Subscribe(OnUpdateRsiLong, null); _wmvol.Subscribe(OnUpdateWmVol, null); //_wmvolLong.Subscribe(OnUpdateWmVolLong, null); _mktIndicator.Add(rsi); _signalCode = SIGNAL_CODE.HOLD; }
public ModelANN(string annid, ModelMacD macD, List<MarketData> daxStocks, MarketData vix, List<MarketData> otherIndices) { _annId = annid; _macD = macD; _index = macD.Index; _daxStocks = daxStocks; _otherIndices = otherIndices; _vix = vix; if (_vix != null) _mktIndices.Add(_vix); }
public ModelFXMole(List <MarketData> fx, ModelMacD macD, decimal volCoeff) { _fx = fx; _macD = macD; _volCoeff = volCoeff; _rsi = new IndicatorRSI(_fx[0], 3, 45); _mapRsiRef = new IndicatorRSI[_fx.Count - 1]; for (int idxFX = 1; idxFX < _fx.Count; idxFX++) { _mapRsiRef[idxFX - 1] = new IndicatorRSI(_fx[idxFX], 1, 14); } }
public ModelANN(string annid, ModelMacD macD, List <MarketData> daxStocks, MarketData vix, List <MarketData> otherIndices) { _annId = annid; _macD = macD; _index = macD.Index; _daxStocks = daxStocks; _otherIndices = otherIndices; _vix = vix; if (_vix != null) { _mktIndices.Add(_vix); } }
public static void Run(List<DateTime> dates, bool generate = false, bool generate_from_db = false, bool publish_to_db = false, bool use_uat_db = false, bool fullday = false) { TestEngine testEngine = new TestEngine("heuristic", dates, generate, generate_from_db, publish_to_db, use_uat_db, fullday); testEngine.Settings["TRADING_SIGNAL"] = "FXMole_1_14_CS.D.EURUSD.TODAY.IP,FXMole_1_14_CS.D.GBPUSD.TODAY.IP,FXMole_1_14_CS.D.USDJPY.TODAY.IP,FXMole_1_14_CS.D.AUDUSD.TODAY.IP"; testEngine.Settings["TIME_GMT"] = "-4"; testEngine.Settings["TIME_DECAY_FACTOR"] = "3"; testEngine.Settings["ASSUMPTION_TREND"] = "BEAR"; testEngine.Settings["INDEX_ICEDOW"] = "DOW:IceConnection.DJI"; testEngine.Settings["INDEX_DOW"] = "DOW:IX.D.DOW.DAILY.IP"; testEngine.Settings["INDEX_DAX"] = "DAX:IX.D.DAX.DAILY.IP"; testEngine.Settings["INDEX_CAC"] = "CAC:IX.D.CAC.DAILY.IP"; testEngine.Settings["FX_GBPUSD"] = "GBPUSD:CS.D.GBPUSD.TODAY.IP"; testEngine.Settings["FX_EURUSD"] = "EURUSD:CS.D.EURUSD.TODAY.IP"; testEngine.Settings["FX_USDJPY"] = "USDJPY:CS.D.USDJPY.TODAY.IP"; testEngine.Settings["FX_AUDUSD"] = "AUDUSD:CS.D.AUDUSD.TODAY.IP"; //List<string> rsiRefMappingJPYGBP = new List<string> { testEngine.Settings["FX_GBPEUR"], testEngine.Settings["FX_USDJPY"] }; //List<string> rsiRefMappingUSD = new List<string> { testEngine.Settings["FX_GBPUSD"], testEngine.Settings["FX_EURUSD"] }; //List<decimal> volcoeffsJPYGBP = new List<decimal> { 0.7m, 0.8m }; //List<decimal> volcoeffsUSD = new List<decimal> { 0.75m, 1.0m, 0.8m }; var index = IceStreamingMarketData.Instance; var gbpusd = new MarketData(testEngine.Settings["FX_GBPUSD"]); var eurusd = new MarketData(testEngine.Settings["FX_EURUSD"]); var usdjpy = new MarketData(testEngine.Settings["FX_USDJPY"]); var audusd = new MarketData(testEngine.Settings["FX_AUDUSD"]); var models = new List<Model>(); var macD_10_30_90_gbpusd = new ModelMacD(gbpusd, 10, 30, 90); var macD_10_30_90_eurusd = new ModelMacD(eurusd, 10, 30, 90); var macD_10_30_90_usdjpy = new ModelMacD(usdjpy, 10, 30, 90); var macD_10_30_90_audusd = new ModelMacD(audusd, 10, 30, 90); decimal volcoeffEURUSD = 0.7m; decimal volcoeffGBPUSD = 0.85m; decimal volcoeffUSDJPY = 0.65m; decimal volcoeffAUDUSD = 0.6m; var fxmole_eurusd = new ModelFXMole(new List<MarketData> { eurusd, gbpusd }, macD_10_30_90_eurusd, volcoeffEURUSD); var fxmole_gbpusd = new ModelFXMole(new List<MarketData> { gbpusd, eurusd }, macD_10_30_90_gbpusd, volcoeffGBPUSD); var fxmole_usdjpy = new ModelFXMole(new List<MarketData> { usdjpy, eurusd }, macD_10_30_90_usdjpy, volcoeffUSDJPY); var fxmole_audusd = new ModelFXMole(new List<MarketData> { audusd, eurusd }, macD_10_30_90_audusd, volcoeffAUDUSD); models.Add(macD_10_30_90_gbpusd); models.Add(macD_10_30_90_eurusd); models.Add(macD_10_30_90_usdjpy); models.Add(macD_10_30_90_audusd); models.Add(fxmole_gbpusd); models.Add(fxmole_eurusd); models.Add(fxmole_usdjpy); models.Add(fxmole_audusd); testEngine.Run(models); }
public ModelMoleTest(ModelMacD macD) : base(macD) { }
public ModelMacDCascadeTest(ModelMacD macD) : base(macD) { }