예제 #1
0
 public EtcsBrakingData()
 {
     Input  = new InputData();
     Middle = new MiddleData();
     Output = new OutputData();
     Params = new ConstantData();
 }
 public EtcsBrakingData()
 {
     Input = new InputData();
     Middle = new MiddleData();
     Output = new OutputData();
     Params = new ConstantData();
 }
예제 #3
0
        public override void HandleNextTick(Tick t)
        {
            double emaVal = EMA.HandleNextTick(t);

            LRValues.Enqueue(emaVal);

            double[] Y = LRValues.ToArray();

            double stdErr = 0;

            if (Y.Count() == X.Length)
            {
                Vector x_data = new Vector(X);
                Vector y_data = new Vector(LRValues.ToArray());

                var poly = new PolynomialRegression(x_data, y_data, 2);
                for (int i = 0; i < Period; i++)
                {
                    double x = (i);
                    double y = poly.Fit(x);
                    stdErr += Math.Pow(LRValues.ToArray()[i] - y, 2);
                }

                stdErr = Math.Sqrt(stdErr);
            }

            HighData.Enqueue(EMA[0] + STDEV * stdErr);
            MiddleData.Enqueue(EMA[0]);
            LowData.Enqueue(EMA[0] - STDEV * stdErr);
        }
예제 #4
0
        public override void HandleNextTick(Tick t)
        {
            MiddleData.Enqueue(MIDDLE.HandleNextTick(t));
            var stdev = MIDDLE.ToArray().StandardDeviation();

            HighData.Enqueue(MIDDLE[0] + stdev * 2);
            LowData.Enqueue(MIDDLE[0] - stdev * 2);
        }
예제 #5
0
        public override void HandleNextTick(Tick t)
        {
            double emaVal = EMA.HandleNextTick(t);

            LRValues.Enqueue(emaVal);

            double[] Y = LRValues.ToArray();

            LinearRegression l = new LinearRegression();

            l.Model(Y);

            HighData.Enqueue(EMA[0] + STDEV * l.STDERR);
            MiddleData.Enqueue(EMA[0]);
            LowData.Enqueue(EMA[0] - STDEV * l.STDERR);
        }
예제 #6
0
        /// <summary>
        /// 初始化内部通信
        /// </summary>
        /// <param name="Ip"></param>
        /// <param name="Port"></param>
        /// <param name="MiddleData"></param>
        protected virtual void InitInternalSocket(string Ip, int Port, SocketMiddleData MiddleData)
        {
            if (CallHandle == null)
            {
                CallHandle = new CallHandle();
            }
            AsyncTcpClient ClientAsnyc = SocketFactory.CreateClient <AsyncTcpClient, SocketPacket>(Ip, Port);

            if (!ClientPath.IsNullOrEmpty() && ClientPort.HasValue)
            {
                ClientAsnyc.LocalEndPoint = new IPEndPoint(IPAddress.Parse(ClientPath), ClientPort.Value);
            }
            ClientAsnyc.Connect(out bool Connect);
            Call.SocketClient         = ClientAsnyc;
            ClientAsnyc.PacketReceive = (Client, Data) =>
            {
                DependencyCondition Instance = DependencyCondition.Instance;
                if (Instance.ExecuteIsCall(Data) != SendTypeEnum.CallBack)
                {
                    var MiddleData = Instance.ExecuteMapper(Data);
                    if (Client.IsConnected)
                    {
                        Call.CallBackHandler(MiddleData, CallHandle);
                    }
                }
                else
                {
                    Instance.ExecuteCallData(Data);
                }
            };
            ClientAsnyc.ClientError = (Client, Error) =>
            {
                DependencyError.Instance.ExecuteRecordLog(Error);
            };
            if (MiddleData.SendType == SendTypeEnum.Init)
            {
                ClientAsnyc.Send(MiddleData.ToJson());
            }
        }
예제 #7
0
 public double MID(int index)
 {
     return((MiddleData.Count > index) ? MiddleData.ToArray()[MiddleData.Count - index - 1] : double.NaN);
 }