public static DataProvider GetProviderBySymbol(string s) { Symbol symbol = AppUtil.ParseSymbol(s); if (symbol != Symbol.UNKNOWN) { return(GetProviderBySymbol(symbol)); } else { return(null); } }
public override void Receive(object msg) { Console.WriteLine(" LoadingHandler Receive ~~~~~~~~~~~ " + msg); /// C0001_3 string strIntervals = " MIN1";//, MIN3, MIN5, MIN15, MIN30, MIN60,";// msgs[3]; string[] intervals = strIntervals.Split(','); AppSetting.INTEVALS = new Interval[intervals.Length]; int n = 0; foreach (string s in intervals) { if (!string.IsNullOrEmpty(s)) { AppSetting.INTEVALS[n] = AppUtil.StringToInterval(s.Trim()); n++; } } string strSymbol = " GBPUSD, NZDUSD, USDCAD, USDCHF, USDJPY, GBPJPY, AUDJPY, EURJPY, GOLD, SILVER,";// msgs[4]; LogUtil.Info(" C0004 ::::: symbols " + strSymbol); string[] symbols = strSymbol.Split(','); foreach (string s in symbols) { Symbol symbol = Symbol.UNKNOWN; if ((symbol = AppUtil.ParseSymbol(s.Trim())) != Symbol.UNKNOWN) { FxpaSource.AddAvailableSession(s.Trim()); } } int k = 0; AppSetting.SYMBOLS = new Symbol[FxpaSource.AvailableSessionList.Count]; foreach (SessionInfo sin in FxpaSource.AvailableSessionList) { AppSetting.SYMBOLS[k] = AppUtil.ParseSymbol(sin.Symbol); k++; } if (AppSetting.INTEVALS != null && AppSetting.INTEVALS.Length > 0 && AppSetting.SYMBOLS != null && AppSetting.SYMBOLS.Length > 0) { { DataProvider provider = new DataProvider(AppSetting.SYMBOLS[0].ToString()); provider.Init4Loading(); AppContext.FirstDataProvider = provider; } AppContext.IsGetSymbols = true; } AppSetting.LOGIN_TOKEN = "LOGIN_TOKEN"; AppSetting.DS_SERVER_IP = "DS_SERVER_IP"; // msgs[4].Trim(); AppSetting.DS_SERVER_PORT = 1234; // "DS_SERVER_PORT"; //int.Parse(msgs[5].Trim()); AppContext.IsGetDSInfo = true; LogUtil.Info(" C0005 ::::: server "); AppContext.FirstDataProvider.InitCdlStatus = DataInitStatus.Initialized; AppContext.FirstDataProvider.CdlLoadingStatus = DownloadStatus.Finished; AppContext.IsGetInitProviderFile = true; AppContext.FirstDataProvider.RtdLoadingStatus = DownloadStatus.Finished; AppContext.FirstDataProvider.InitRtdStatus = DataInitStatus.Initialized; AppContext.IsGetSignalList = true; AppContext.FirstDataProvider.InitSigStatus = DataInitStatus.Initialized; AppContext.IsGetInitProviderSignals = true; AppContext.IsGetSymbolPrices = true; AppContext.IsGetPaymentInfo = true; }
/// <summary> /// /// </summary> public AnalyzerSession(SessionInfo sessionInfo) { _sessionInfo = sessionInfo; symbol = AppUtil.ParseSymbol(sessionInfo.Symbol); }
public override void Receive(object msg) { string[] msgs = (string[])msg; Protocol protocol = AppUtil.ParseProtocol(msgs[1]); int paramAmount = AppUtil.StringToInt(msgs[2]); if (protocol != Protocol.UNKNOWN) { if (msgs.Length >= 4) { LogUtil.Info(" Signal content " + msgs[3]); string[] info = msgs[3].Split(','); if (info.Length >= 2) { Interval interval = AppUtil.StringToInterval(info[0]); Symbol symbol = AppUtil.ParseSymbol(info[1]); try { switch (protocol) { case Protocol.K0004_1: // Arrow Signal if (!AppContext.IsReconnecting && AppContext.IsPriceListInitialized && AppContext.IsSignalListInitialized) { if (!msgs.Contains(NULL)) { Signal signal = new Signal(); signal.Interval = interval; signal.Symbol = symbol; signal.ActPrice = double.Parse(info[2]); signal.Arrow = int.Parse(info[3]); signal.ActTime = DateTime.Parse(info[4]); signal.StopLossPrice = double.Parse(info[5]); Console.WriteLine(Protocol.K0004_1 + " " + signal); LogUtil.Info(Protocol.K0004_1 + " " + signal); if (AppSetting.SYMBOLS.Contains(signal.Symbol) && AppSetting.INTEVALS.Contains(signal.Interval)) { SignalProcess(signal, protocol); } } } break; case Protocol.K0004_2: // Stop Loss Signal if (!AppContext.IsReconnecting && AppContext.IsPriceListInitialized && AppContext.IsSignalListInitialized) { if (!msgs.Contains(NULL)) { Signal signal = new Signal(); signal.Interval = interval; signal.Symbol = symbol; signal.StopLossBidPrice = double.Parse(info[2]); signal.StopLoss = int.Parse(info[3]); signal.Arrow = int.Parse(info[3]); signal.StopLossTime = DateTime.Parse(info[4]); signal.ActTime = DateTime.Parse(info[5]); Console.WriteLine(Protocol.K0004_2 + " " + signal); LogUtil.Info(Protocol.K0004_2 + " " + signal); if (signal.StopLossBidPrice > 0 && signal.StopLoss != 0) { SignalProcess(signal, protocol); } } } break; case Protocol.K0004_3: // Gain Tip Signal if (!AppContext.IsReconnecting && AppContext.IsPriceListInitialized && AppContext.IsSignalListInitialized) { if (!msgs.Contains(NULL)) { Signal signal = new Signal(); signal.Interval = interval; signal.Symbol = symbol; signal.GainTip = int.Parse(info[2]); signal.Arrow = int.Parse(info[2]); signal.GainTipTime = DateTime.Parse(info[3]); signal.ActTime = DateTime.Parse(info[4]); signal.GainTipPrice = double.Parse(info[5]); Console.WriteLine(Protocol.K0004_3 + " " + signal); LogUtil.Info(Protocol.K0004_3 + " " + signal); if (signal.GainTipPrice > 0) { SignalProcess(signal, protocol); } } } break; case Protocol.K0004_4: // Stop Gain Signal if (!AppContext.IsReconnecting && AppContext.IsPriceListInitialized && AppContext.IsSignalListInitialized) { if (!msgs.Contains(NULL)) { Signal signal = new Signal(); signal.Interval = interval; signal.Symbol = symbol; signal.StopGainPrice = double.Parse(info[2]); signal.StopGain = int.Parse(info[3]); signal.Arrow = int.Parse(info[3]); signal.StopGainTime = DateTime.Parse(info[4]); signal.ActTime = DateTime.Parse(info[5]); Console.WriteLine(Protocol.K0004_4 + " " + signal); LogUtil.Info(Protocol.K0004_4 + " " + signal); if (signal.StopGainPrice > 0) { SignalProcess(signal, protocol); } } } break; case Protocol.K0004_5: // Profit Signal if (!AppContext.IsReconnecting && AppContext.IsPriceListInitialized && AppContext.IsSignalListInitialized) { if (!msgs.Contains(NULL)) { Signal signal = new Signal(); signal.Interval = interval; signal.Symbol = symbol; signal.Arrow = int.Parse(info[2]); signal.ActTime = DateTime.Parse(info[3]); signal.Profit = int.Parse(info[4]); signal.ProfitTime = DateTime.Parse(info[5]); signal.ProfitPrice = double.Parse(info[6]); Console.WriteLine(Protocol.K0004_5 + " " + signal); LogUtil.Info(Protocol.K0004_5 + " " + signal); if (signal.ProfitPrice > 0) { SignalProcess(signal, protocol); } } } break; } } catch (Exception e) { LogUtil.Error(" Protocol " + protocol.ToString() + e.StackTrace); } } } } }
public override void Receive(object msg) { Console.WriteLine(" ProviderHandler Receive ~~~~~~~~~~~ " + provider.Symbol + " Start " + System.DateTime.Now.ToLongTimeString()); if (provider != null) { string[] msgs = (string[])msg; Protocol protocol = AppUtil.ParseProtocol(msgs[1]); int paramAmount = AppUtil.StringToInt(msgs[2]); Console.WriteLine(" ProviderHandler Receive ~~~~~~~~~~~ " + protocol); switch (protocol) { case Protocol.M0003_1: Execute(); if (paramAmount > 0 && !msgs.Contains <string>(NULL)) { List <BarData> rtdDatas = new List <BarData>(); AppUtil.ParseRtd(ref rtdDatas, 3, msgs, protocol); if (rtdDatas.Count > 0) { provider.StartTime = rtdDatas[rtdDatas.Count - 1].DateTime.Add(AppConst.AppTimeSpans[provider.CurrentTInterval]); provider.DataCache.InitDataUnits(rtdDatas); provider.InitCdlStatus = DataInitStatus.Initialized; } LogUtil.Info(" C0003_1 ::::: URL count " + rtdDatas.Count); } else { provider.HisUri = null; provider.StartTime = provider.LocalLastCdlTime; provider.CdlLoadingStatus = DownloadStatus.Finished; provider.InitCdlStatus = DataInitStatus.Initialized; } IsGetHisInfo = true; Execute(); //provider.DataCache.StartTime = provider.StartTime; //provider.DataCache.Init(); Process(null); break; case Protocol.C0003_2: if (paramAmount != AppUtil.PARSE_ERROR && paramAmount > 0) { List <BarData> rtdDatas = new List <BarData>(); AppUtil.ParseRtd(ref rtdDatas, 3, msgs, protocol); provider.LatesRtds = rtdDatas; provider.RtdLoadingStatus = DownloadStatus.Finished; provider.InitRtdStatus = DataInitStatus.Initialized; } else { provider.RtdLoadingStatus = DownloadStatus.Failed; provider.InitRtdStatus = DataInitStatus.Initialized; } IsGetRealTimeInfo = true; break; case Protocol.C0004_2: if (paramAmount > 0) { List <Signal> sigalList = new List <Signal>(); for (int i = 3; i < msgs.Length; i++) { string signalInfo = msgs[i]; if (!string.IsNullOrEmpty(signalInfo)) { string[] info = signalInfo.Split(','); Signal signal = new Signal(); signal.Interval = AppUtil.StringToInterval(info[0]); signal.Symbol = AppUtil.ParseSymbol(info[1]); signal.ActPrice = double.Parse(info[2]); signal.Arrow = AppUtil.StringToInt(info[3]); signal.ActTime = DateTime.Parse(info[4]); signal.StopLossPrice = double.Parse(info[5]); if (NULL != info[6]) { signal.StopLossTime = DateTime.Parse(info[6]); signal.StopLoss = signal.Arrow; signal.StopLossBidPrice = double.Parse(info[13]); } signal.GainTipPrice = double.Parse(info[7]); if (NULL != info[8]) { signal.GainTipTime = DateTime.Parse(info[8]); signal.GainTip = signal.Arrow; } signal.StopGainPrice = double.Parse(info[9]); if (NULL != info[10]) { signal.StopGainTime = DateTime.Parse(info[10]); signal.StopGain = signal.Arrow; } signal.Profit = int.Parse(info[11]); if (signal.Profit != 0 && NULL != info[12]) { signal.ProfitTime = DateTime.Parse(info[12]); } signal.ProfitPrice = double.Parse(info[13]); sigalList.Add(signal); } } //provider.SignalList = sigalList; //AppContext.FirstDataProvider.DataCache.InitSignalUnits(sigalList); provider.DataCache.InitSignalUnits(sigalList); } provider.InitSigStatus = DataInitStatus.Initialized; IsGetSignalInfo = true; break; default: IsGetHisInfo = true; provider.HisUri = null; provider.StartTime = provider.LocalLastCdlTime; provider.CdlLoadingStatus = DownloadStatus.Failed; provider.InitCdlStatus = DataInitStatus.Initialized; IsGetRealTimeInfo = true; provider.RtdLoadingStatus = DownloadStatus.Failed; provider.InitRtdStatus = DataInitStatus.Initialized; IsProcessing = false; break; } Console.WriteLine(" ProviderHandler Receive ~~~~~~~~~~~ " + provider.Symbol + " After operation " + System.DateTime.Now.ToLongTimeString()); } }
public override void Receive(object msg) { Console.WriteLine(" SignalListHandler Receive ~~~~~~~~~~~ " + msg); string[] msgs = (string[])msg; Protocol protocol = AppUtil.ParseProtocol(msgs[1]); int paramAmount = int.Parse(msgs[2]); if (paramAmount > 0) { AppContext.SignalDatas.Clear(); try { for (int i = 3; i < msgs.Length; i++) { string signalInfo = msgs[i]; if (!string.IsNullOrEmpty(signalInfo)) { string[] info = signalInfo.Split(','); Signal signal = new Signal(); signal.Interval = AppUtil.StringToInterval(info[0]); signal.Symbol = AppUtil.ParseSymbol(info[1]); signal.ActPrice = double.Parse(info[2]); signal.Arrow = AppUtil.StringToInt(info[3]); signal.ActTime = DateTime.Parse(info[4]); signal.StopLossPrice = double.Parse(info[5]); if (NULL != info[6]) { signal.StopLossTime = DateTime.Parse(info[6]); signal.StopLoss = signal.Arrow; signal.StopLossBidPrice = double.Parse(info[13]); } signal.GainTipPrice = double.Parse(info[7]); if (NULL != info[8]) { signal.GainTipTime = DateTime.Parse(info[8]); signal.GainTip = signal.Arrow; } signal.StopGainPrice = double.Parse(info[9]); if (NULL != info[10]) { signal.StopGainTime = DateTime.Parse(info[10]); signal.StopGain = signal.Arrow; } signal.Profit = int.Parse(info[11]); signal.ProfitPrice = double.Parse(info[13]); if (signal.ProfitPrice != 0 && NULL != info[12]) { signal.ProfitTime = DateTime.Parse(info[12]); } AppContext.SignalDatas.Add(signal); } } } catch (Exception e) { LogUtil.Error(" M0004 " + e.StackTrace); } } signals = new Signal[AppContext.SignalDatas.Count]; AppContext.SignalDatas.CopyTo(signals); MethodInvoker mi = new MethodInvoker(InitPriceList); priceListView.Invoke(mi); mi = new MethodInvoker(InitSignalList); signalListView.Invoke(mi); mi = new MethodInvoker(InitStatList); statListView.Invoke(mi); mi = new MethodInvoker(RefreshStatBtn); AppContext.TradeExpertControl.Invoke(mi); }
private void InitPriceList() { string[] fxList = Enum.GetNames(Symbol.AUDJPY.GetType()); List <string> initSymbols = new List <string>(); if (signals != null && signals.Length > 0) { for (int i = 0; i < AppContext.PriceListView.Items.Count; i++) { if (!string.IsNullOrEmpty(priceListView.Items[i].SubItems[0].Text)) { AppContext.PriceListView.Items[i].SubItems[2].Text = ""; AppContext.PriceListView.Items[i].SubItems[3].Text = ""; } } foreach (Signal signal in signals) { string symbol = signal.Symbol.ToString(); if (AppSetting.SYMBOLS.Contains(signal.Symbol)) { int arrowCount, profit; for (int i = 0; i < priceListView.Items.Count; i++) { string strSymbol = priceListView.Items[i].SubItems[0].Text; string cnSymbol = AppConst.AppCnSymbols[signal.Symbol]; if (cnSymbol != null && strSymbol != null && cnSymbol.Trim() == strSymbol.Trim()) { lock (AppConst.PriceListLocker) { string ac = priceListView.Items[i].SubItems[2].Text; arrowCount = string.IsNullOrEmpty(ac) ? 0 : int.Parse(ac.Trim()); string pft = priceListView.Items[i].SubItems[3].Text; profit = string.IsNullOrEmpty(pft) ? 0 : int.Parse(pft.Trim()); Console.WriteLine(" Symbol := " + strSymbol + " Count:= " + arrowCount + " Profit := " + profit); priceListView.Items[i].SubItems[2].Text = (arrowCount + 1).ToString(); priceListView.Items[i].SubItems[3].Text = (profit + signal.Profit).ToString(); Console.WriteLine(" Symbol ==== " + symbol); break; } } } } } } else { // Clean obslete datas for (int i = 0; i < AppContext.PriceListView.Items.Count; i++) { if (!string.IsNullOrEmpty(priceListView.Items[i].SubItems[0].Text)) { AppContext.PriceListView.Items[i].SubItems[2].Text = ""; AppContext.PriceListView.Items[i].SubItems[3].Text = ""; } } } if (AppContext.IsGetSymbolPrices && AppContext.SymbolPrices.Count > 0) { foreach (KeyValuePair <string, double> pair in AppContext.SymbolPrices) { string symbol = pair.Key; double price = pair.Value; for (int i = 0; i < priceListView.Items.Count; i++) { string strSymbol = priceListView.Items[i].SubItems[0].Text; string cnSymbol = AppConst.AppCnSymbols[AppUtil.ParseSymbol(symbol)]; if (cnSymbol != null && strSymbol != null && cnSymbol.Trim() == strSymbol.Trim()) { lock (AppConst.PriceListLocker) { Console.WriteLine(" Symbol := " + strSymbol + " Price := " + price); priceListView.Items[i].SubItems[1].Text = price.ToString(); break; } } } } AppContext.IsGetSymbolPrices = false; AppContext.SymbolPrices.Clear(); } AppContext.IsPriceListInitialized = true; }