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]); } }
/// <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)); }
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; } }
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; } }
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; } }