コード例 #1
0
        private void SignalProcess(Signal signal, Protocol protocol)
        {
            Console.WriteLine(" Before Invoke control update ......   " + signal);
            bool dupli   = false;
            bool isValid = false;

            for (int i = 0; i < AppContext.SignalDatas.Count; i++)
            {
                Signal sig = AppContext.SignalDatas[i];
                if (signal.Equals(sig))
                {
                    if (signal.Arrow == sig.Arrow && protocol == Protocol.K0004_1)
                    {
                        dupli = true;
                    }
                    else if (signal.StopLoss == sig.StopLoss && protocol == Protocol.K0004_2)
                    {
                        dupli = true;
                    }
                    else if (signal.GainTip == sig.GainTip && protocol == Protocol.K0004_3)
                    {
                        dupli = true;
                    }
                    else if (signal.StopGain == sig.StopGain && protocol == Protocol.K0004_4)
                    {
                        dupli = true;
                    }
                    else if (signal.ProfitPrice == sig.ProfitPrice && protocol == Protocol.K0004_5)
                    {
                        dupli = true;
                    }
                    else
                    {
                        if (signal.StopLoss != 0)
                        {
                            sig.StopLoss = signal.StopLoss; sig.StopLossTime = signal.StopLossTime; sig.StopLossBidPrice = signal.StopLossBidPrice; isValid = true;
                        }
                        else if (signal.GainTip != 0)
                        {
                            sig.GainTip = signal.GainTip; sig.GainTipPrice = signal.GainTipPrice; sig.GainTipTime = signal.GainTipTime; isValid = true;
                        }
                        else if (signal.StopGain != 0)
                        {
                            sig.StopGain = signal.StopGain; sig.StopGainPrice = signal.StopGainPrice; sig.StopGainTime = signal.StopGainTime; isValid = true;
                        }
                        else if (signal.ProfitPrice > 0)
                        {
                            sig.Profit = signal.Profit; sig.ProfitPrice = signal.ProfitPrice; sig.ProfitTime = signal.ProfitTime; isValid = true;
                            DataProvider provider = DataService.GetProviderBySymbol(signal.Symbol);
                            if (provider != null && !provider.DataCache.SignalUnits[provider.CurrentTInterval].Contains(sig))
                            {
                                provider.DataCache.SignalUnits[provider.CurrentTInterval].Add(sig);
                            }
                        }
                        AppContext.SignalDatas[i] = sig;
                        LogUtil.Info(" AppContext.SignalDatas[i]  " + i + "  " + AppContext.SignalDatas[i]);
                    }
                    LogUtil.Info(" dupli ==============  " + dupli);
                    break;
                }
                if (i == AppContext.SignalDatas.Count - 1 && !dupli)
                {
                    isValid = true;
                }
            }

            if (!dupli)
            {
                if (protocol == Protocol.K0004_1)
                {
                    AppContext.SignalDatas.Add(signal);
                }

                if (isValid)
                {
                    Dictionary <Protocol, Signal> protocolSignal = new Dictionary <Protocol, Signal>();
                    protocolSignal.Add(protocol, signal);
                    MsgUpdatedDelegate d = null;
                    if (protocol != Protocol.K0004_5)
                    {
                        d = new MsgUpdatedDelegate(ProviderUpdate);
                        d.Invoke(protocolSignal);
                    }
                    if (protocol != Protocol.K0004_2 && protocol != Protocol.K0004_3)
                    {
                        d = new MsgUpdatedDelegate(SignalListUpdate);
                        signalListView.BeginInvoke(d, protocolSignal);
                    }
                    if (protocol == Protocol.K0004_5 || protocol == Protocol.K0004_1)
                    {
                        d = new MsgUpdatedDelegate(PriceListUpdate);
                        priceListView.BeginInvoke(d, protocolSignal);
                    }
                    if (protocol == Protocol.K0004_5 || protocol == Protocol.K0004_1)
                    {
                        d = new MsgUpdatedDelegate(StatlListUpdate);
                        statListView.BeginInvoke(d, protocolSignal);
                    }
                }
            }
        }
コード例 #2
0
        private void SignalProcess(Signal signal, Protocol protocol)
        {
            Console.WriteLine(" Before Invoke control update ......   " + signal);
            bool dupli = false;
            bool isValid = false;
            for (int i = 0; i < AppContext.SignalDatas.Count; i++)
            {
                Signal sig = AppContext.SignalDatas[i];
                if (signal.Equals(sig))
                {
                    if (signal.Arrow == sig.Arrow && protocol == Protocol.K0004_1)
                    {
                        dupli = true;
                    }
                    else if (signal.StopLoss == sig.StopLoss && protocol == Protocol.K0004_2)
                    {
                        dupli = true;
                    }
                    else if (signal.GainTip == sig.GainTip && protocol == Protocol.K0004_3)
                    {
                        dupli = true;
                    }
                    else if (signal.StopGain == sig.StopGain && protocol == Protocol.K0004_4)
                    {
                        dupli = true;
                    }
                    else if (signal.ProfitPrice == sig.ProfitPrice && protocol == Protocol.K0004_5)
                    {
                        dupli = true;
                    }
                    else
                    {
                        if (signal.StopLoss != 0) { sig.StopLoss = signal.StopLoss; sig.StopLossTime = signal.StopLossTime; sig.StopLossBidPrice = signal.StopLossBidPrice; isValid = true; }
                        else if (signal.GainTip != 0) { sig.GainTip = signal.GainTip; sig.GainTipPrice = signal.GainTipPrice; sig.GainTipTime = signal.GainTipTime; isValid = true; }
                        else if (signal.StopGain != 0) { sig.StopGain = signal.StopGain; sig.StopGainPrice = signal.StopGainPrice; sig.StopGainTime = signal.StopGainTime; isValid = true; }
                        else if (signal.ProfitPrice > 0) { sig.Profit = signal.Profit; sig.ProfitPrice = signal.ProfitPrice; sig.ProfitTime = signal.ProfitTime; isValid = true;
                               DataProvider provider = DataService.GetProviderBySymbol(signal.Symbol);
                               if (provider != null && !provider.DataCache.SignalUnits[provider.CurrentTInterval].Contains(sig))
                               { provider.DataCache.SignalUnits[provider.CurrentTInterval].Add(sig); }
                        }
                        AppContext.SignalDatas[i] = sig;
                        LogUtil.Info(" AppContext.SignalDatas[i]  " + i +"  "+AppContext.SignalDatas[i]);
                    }
                    LogUtil.Info(" dupli ==============  " + dupli);
                    break;
                }
                if (i == AppContext.SignalDatas.Count - 1 && !dupli)
                {
                    isValid = true;
                }
            }

            if (!dupli)
            {
                if (protocol == Protocol.K0004_1)
                    AppContext.SignalDatas.Add(signal);

                if (isValid)
                {
                    Dictionary<Protocol, Signal> protocolSignal = new Dictionary<Protocol, Signal>();
                    protocolSignal.Add(protocol, signal);
                    MsgUpdatedDelegate d = null;
                    if (protocol != Protocol.K0004_5)
                    {
                        d = new MsgUpdatedDelegate(ProviderUpdate);
                        d.Invoke(protocolSignal);
                    }
                    if (protocol != Protocol.K0004_2 && protocol != Protocol.K0004_3)
                    {
                        d = new MsgUpdatedDelegate(SignalListUpdate);
                        signalListView.BeginInvoke(d, protocolSignal);
                    }
                    if (protocol == Protocol.K0004_5 || protocol == Protocol.K0004_1)
                    {
                        d = new MsgUpdatedDelegate(PriceListUpdate);
                        priceListView.BeginInvoke(d, protocolSignal);
                    }
                    if (protocol == Protocol.K0004_5 || protocol == Protocol.K0004_1)
                    {
                        d = new MsgUpdatedDelegate(StatlListUpdate);
                        statListView.BeginInvoke(d, protocolSignal);
                    }
                }
            }
        }