Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
 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);
     }
 }
Exemplo n.º 4
0
 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);
     }
 }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
 public ModelMoleTest(ModelMacD macD)
     : base(macD)
 {
 }
Exemplo n.º 7
0
 public ModelMacDCascadeTest(ModelMacD macD)
     : base(macD)
 {
 }
Exemplo n.º 8
0
 public ModelMacDCascadeTest(ModelMacD macD)
     : base(macD)
 {
 }
Exemplo n.º 9
0
 public ModelMoleTest(ModelMacD macD)
     : base(macD)
 {
 }