Ejemplo n.º 1
0
    private void DrawNodes(List <Node> nodes, int offset, Volume volume)
    {
        var definitions = new Dictionary <Node, GameObject>();
        var links       = new HashSet <(Node from, Node to)> ();
        var minVolume   = Vector3.zero;
        var maxVolume   = Vector3.zero;

        foreach (var node in nodes)
        {
            var position = (node.position + new Vector3(0, 0, offset)) * 2;
            position.y = -position.y;
            var gameObject = Instantiate(cubeNode, position, Quaternion.identity);
            volume.Add(gameObject);
            var textMesh = gameObject.GetComponentInChildren <TextMesh>();
            textMesh.text     = node.text;
            definitions[node] = gameObject;
            foreach (var input_node in node.inputs)
            {
                links.Add((from: input_node, to: node));
            }
            foreach (var output_node in node.outputs)
            {
                links.Add((from: node, to: output_node));
            }
        }
        foreach (var(from, to) in links)
        {
            LineTo(definitions[from], definitions[to]);
        }
    }
Ejemplo n.º 2
0
        /// <summary>
        /// Create DataTimeSeries, DataTSOHLC, DataTSVolume objects add to DataBuilder collection
        /// </summary>
        /// <param name="tinterval">time interval of timeseries (in minutes)</param>
        /// /// <param name="nrows">number of rows to allocate</param>
        public void NewTimeSeriesOHLCVolume(int tinterval, int nrows = 2880)
        {
            // check if time interval already exist
            foreach (DataTimeSeries ts0 in TimeSeries)
            {
                if (ts0.TimeInterval == tinterval)
                {
                    return;
                }
            }

            DataTimeSeries ts = new DataTimeSeries(tinterval, nrows);

            TimeSeries.Add(ts);
            OHLC.Add(new DataTSOHLC(ts));
            Volume.Add(new DataTSVolume(ts));
        }
Ejemplo n.º 3
0
        public void FirstSel(ObservableCollection <String> Mod, string SMod)
        {
            switch (SMod)
            {
            case "Taus Mk.1":
                Volume.Clear();
                Volume.Add("17,5 мл");
                Volume.Add("50 л");
                Volume.Add("200,1 л");
                Box.Clear();
                Box.Add("Автомат");
                Box.Add("Механика");
                Box.Add("Дистанционное управление");
                Tran.Clear();
                Tran.Add("Задний");
                Tran.Add("Передний");
                Tran.Add("4х4");
                Park.Clear();
                Park.Add("Спереди");
                Park.Add("Сзади");
                Park.Add("По всему кузову");
                EnableCliCon = true;
                EnableHeat   = true;
                EnableRain   = true;
                EnablePark   = true;
                Total        = 350;
                break;

            case "Taus Mk.2":
                Volume.Clear();
                Volume.Add("17,5 мл");
                Volume.Add("50 л");
                Volume.Add("200,1 л");
                Box.Clear();
                Box.Add("Автомат");
                Box.Add("Механика");
                Box.Add("Дистанционное управление");
                Tran.Clear();
                Tran.Add("Задний");
                Tran.Add("Передний");
                Tran.Add("4х4");
                Park.Clear();
                Park.Add("Спереди");
                Park.Add("Сзади");
                Park.Add("По всему кузову");
                EnableCliCon = true;
                EnableHeat   = true;
                EnableRain   = true;
                EnablePark   = true;
                Total        = 600;
                break;

            case "Copper":
                Volume.Clear();
                Volume.Add("17,5 мл");
                Volume.Add("50 л");
                Volume.Add("200,1 л");
                Box.Clear();
                Box.Add("Механика");
                Box.Add("Дистанционное управление");
                Tran.Clear();
                Tran.Add("Задний");
                Tran.Add("Передний");
                Park.Clear();
                Park.Add("Спереди");
                Park.Add("Сзади");
                EnableCliCon = true;
                EnableHeat   = true;
                EnableRain   = true;
                EnablePark   = true;
                Total        = 10;
                break;

            case "Дон":
                Volume.Clear();
                Volume.Add("50 л");
                Box.Clear();
                Box.Add("Механика");
                Tran.Clear();
                Tran.Add("Задний");
                Tran.Add("Передний");
                Park.Clear();
                Park.Add("Спереди");
                EnableCliCon = true;
                EnableHeat   = true;
                EnableRain   = true;
                EnablePark   = true;
                Total        = 465;
                break;

            case "Клязьма":
                Volume.Clear();
                Volume.Add("17,5 мл");
                Box.Clear();
                Box.Add("Механика");
                Box.Add("Дистанционное управление");
                Tran.Clear();
                Tran.Add("Задний");
                Tran.Add("4х4");
                Park.Clear();
                Park.Add("Спереди");
                Park.Add("Сзади");
                Park.Add("По всему кузову");
                EnableCliCon = true;
                EnableHeat   = true;
                EnableRain   = true;
                EnablePark   = true;
                Total        = 210;
                break;

            case "ОБЧР":
                Volume.Clear();
                Volume.Add("Смерть человекам!");
                Box.Clear();
                Box.Add("Смерть человекам!");
                Tran.Clear();
                Tran.Add("Смерть человекам!");
                Park.Clear();
                Park.Add("Смерть человекам!");
                EnableCliCon = false;
                EnableHeat   = false;
                EnableRain   = false;
                EnablePark   = false;
                CliCon       = false;
                Heat         = false;
                Rain         = false;
                EPark        = false;
                Total        = 20000;
                break;

            default:
                EnableCliCon = false;
                EnableHeat   = false;
                EnableRain   = false;
                EnablePark   = false;
                Volume.Clear();
                Volume.Add("Тут ошибка");
                Box.Clear();
                Box.Add("Тут ошибка");
                Tran.Clear();
                Tran.Add("Тут ошибка");
                Park.Clear();
                Park.Add("Тут ошибка");
                break;
            }
        }
Ejemplo n.º 4
0
        protected override void OnBarUpdate()
        {
            DateTime dtBegin = DateTime.MaxValue;

            switch (IntervalType)
            {
            case EnumIntervalType.Sec:
                dtBegin = MinBar.D.Date.AddHours(MinBar.D.Hour).AddMinutes(MinBar.D.Minute).AddSeconds(MinBar.D.Second / Interval * Interval);
                break;

            case EnumIntervalType.Min:
                dtBegin = MinBar.D.Date.AddHours(MinBar.D.Hour).AddMinutes(MinBar.D.Minute / Interval * Interval);
                break;

            case EnumIntervalType.Hour:
                dtBegin = MinBar.D.Date.AddHours(MinBar.D.Hour / Interval * Interval);
                break;

            case EnumIntervalType.Day:
                dtBegin = DateTime.ParseExact(MinBar.TradingDay.ToString(), "yyyyMMdd", null);
                break;

            case EnumIntervalType.Week:
                dtBegin = DateTime.ParseExact(MinBar.TradingDay.ToString(), "yyyyMMdd", null);
                dtBegin = dtBegin.Date.AddDays(1 - (byte)dtBegin.DayOfWeek);
                break;

            case EnumIntervalType.Month:
                dtBegin = DateTime.ParseExact(MinBar.TradingDay.ToString(), "yyyyMMdd", null);
                dtBegin = new DateTime(dtBegin.Year, dtBegin.Month, 1);
                break;

            case EnumIntervalType.Year:
                dtBegin = DateTime.ParseExact(MinBar.TradingDay.ToString(), "yyyyMMdd", null);
                dtBegin = new DateTime(dtBegin.Year, 1, 1);
                break;

            default:
                throw new Exception("参数错误");
            }
            if (bar == null)             //首次调用
            {
                bar = new Bar
                {
                    D = dtBegin,
                    I = MinBar.I,
                    V = MinBar.V,                     // kOld.preVol == 0 ? 0 : _tick.Volume - kOld.preVol;
                };
                bar.H  = MinBar.H;
                bar.L  = MinBar.L;
                bar.O  = MinBar.O;
                bar.C  = MinBar.C;
                newbar = true;
            }
            else
            {
                if (bar.D == dtBegin)                 //在当前K线范围内
                {
                    newbar = false;
                    bar.H  = Math.Max(bar.H, MinBar.H);
                    bar.L  = Math.Min(bar.L, MinBar.L);
                    bar.C  = MinBar.C;
                    bar.V  = bar.V + MinBar.V;
                    bar.I  = MinBar.I;
                }
                else if (dtBegin > bar.D)
                {
                    newbar = true;
                    bar.D  = dtBegin;
                    bar.V  = MinBar.V;
                    bar.I  = MinBar.I;
                    bar.O  = MinBar.O;
                    bar.H  = MinBar.H;
                    bar.L  = MinBar.L;
                    bar.C  = MinBar.C;
                }
            }

            if (newbar)
            {
                Date.Add(double.Parse(bar.D.ToString("yyyyMMdd")));
                Time.Add(double.Parse(bar.D.ToString("0.HHmmss")));
                Open.Add(bar.O);
                High.Add(bar.H);
                Low.Add(bar.L);
                Close.Add(bar.C);
                Volume.Add(bar.V);
                OpenInterest.Add(bar.I);
            }
            else
            {
                High[0]         = bar.H;
                Low[0]          = bar.L;
                Close[0]        = bar.C;
                Volume[0]       = bar.V;
                OpenInterest[0] = bar.I;
            }
        }
Ejemplo n.º 5
0
        protected override void OnBarUpdate()
        {
            DateTime dtBegin = DateTime.MaxValue;

            switch (IntervalType)
            {
            case IntervalType.Sec:
                dtBegin = MinBar.Time.Date.AddHours(MinBar.Time.Hour).AddMinutes(MinBar.Time.Minute).AddSeconds(MinBar.Time.Second / Interval * Interval);
                break;

            case IntervalType.Min:
                dtBegin = MinBar.Time.Date.AddHours(MinBar.Time.Hour).AddMinutes(MinBar.Time.Minute / Interval * Interval);
                break;

            case IntervalType.Hour:
                dtBegin = MinBar.Time.Date.AddHours(MinBar.Time.Hour / Interval * Interval);
                break;

            case IntervalType.Day:
                dtBegin = DateTime.ParseExact(MinBar.TradingDay.ToString(), "yyyyMMdd", null);
                break;

            case IntervalType.Week:
                dtBegin = DateTime.ParseExact(MinBar.TradingDay.ToString(), "yyyyMMdd", null);
                dtBegin = dtBegin.Date.AddDays(1 - (byte)dtBegin.DayOfWeek);
                break;

            case IntervalType.Month:
                dtBegin = DateTime.ParseExact(MinBar.TradingDay.ToString(), "yyyyMMdd", null);
                dtBegin = new DateTime(dtBegin.Year, dtBegin.Month, 1);
                break;

            case IntervalType.Year:
                dtBegin = DateTime.ParseExact(MinBar.TradingDay.ToString(), "yyyyMMdd", null);
                dtBegin = new DateTime(dtBegin.Year, 1, 1);
                break;

            default:
                throw new Exception("参数错误");
            }
            if (bar == null)             //首次调用
            {
                bar = new Bar
                {
                    Time   = dtBegin,
                    Volume = MinBar.Volume,                     // kOld.preVol == 0 ? 0 : _tick.Volume - kOld.preVol;
                };
                bar.High  = MinBar.High;
                bar.Low   = MinBar.Low;
                bar.Open  = MinBar.Open;
                bar.Close = MinBar.Close;
                newbar    = true;
            }
            else
            {
                if (bar.Time == dtBegin)                 //在当前K线范围内
                {
                    newbar     = false;
                    bar.High   = Math.Max(bar.High, MinBar.High);
                    bar.Low    = Math.Min(bar.Low, MinBar.Low);
                    bar.Close  = MinBar.Close;
                    bar.Volume = bar.Volume + MinBar.Volume;
                }
                else if (dtBegin > bar.Time)
                {
                    newbar     = true;
                    bar.Time   = dtBegin;
                    bar.Volume = MinBar.Volume;
                    bar.Open   = MinBar.Open;
                    bar.High   = MinBar.High;
                    bar.Low    = MinBar.Low;
                    bar.Close  = MinBar.Close;
                }
            }

            if (newbar)
            {
                Date.Add(double.Parse(bar.Time.ToString("yyyyMMdd")));
                Time.Add(double.Parse(bar.Time.ToString("0.HHmmss")));
                Open.Add(bar.Open);
                High.Add(bar.High);
                Low.Add(bar.Low);
                Close.Add(bar.Close);
                Volume.Add(bar.Volume);
            }
            else
            {
                High[0]   = bar.High;
                Low[0]    = bar.Low;
                Close[0]  = bar.Close;
                Volume[0] = bar.Volume;
            }
        }