public static DataProvider GetProviderBySymbol(string s)
        {
            Symbol symbol = AppUtil.ParseSymbol(s);

            if (symbol != Symbol.UNKNOWN)
            {
                return(GetProviderBySymbol(symbol));
            }
            else
            {
                return(null);
            }
        }
Exemple #2
0
        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;
        }
Exemple #3
0
 /// <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);
                        }
                    }
                }
            }
        }
Exemple #5
0
        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());
            }
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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;
        }