Example90_Candlestick.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using UnityEngine;
  2. using XCharts.Runtime;
  3. #if INPUT_SYSTEM_ENABLED
  4. using Input = XCharts.Runtime.InputHelper;
  5. #endif
  6. namespace XCharts.Example
  7. {
  8. [DisallowMultipleComponent]
  9. [ExecuteInEditMode]
  10. public class Example90_Candlestick : MonoBehaviour
  11. {
  12. private CandlestickChart chart;
  13. private float updateTime;
  14. public int dataCount = 100;
  15. void Awake()
  16. {
  17. chart = gameObject.GetComponent<CandlestickChart>();
  18. if (chart == null)
  19. {
  20. chart = gameObject.AddComponent<CandlestickChart>();
  21. chart.Init();
  22. }
  23. AddData();
  24. }
  25. void Update()
  26. {
  27. if (Input.GetKeyDown(KeyCode.Space))
  28. {
  29. AddData();
  30. }
  31. }
  32. void AddData()
  33. {
  34. chart.ClearData();
  35. var xValue = System.DateTime.Now;
  36. var baseValue = Random.Range(0f, 1f) * 12000;
  37. var boxVals = new float[4];
  38. var dayRange = 12;
  39. for (int i = 0; i < dataCount; i++)
  40. {
  41. baseValue = baseValue + Random.Range(0f, 1f) * 30 - 10;
  42. for (int j = 0; j < 4; j++)
  43. {
  44. boxVals[j] = (Random.Range(0f, 1f) - 0.5f) * dayRange + baseValue;
  45. }
  46. System.Array.Sort(boxVals);
  47. var openIdx = Mathf.RoundToInt(Random.Range(0f, 1f) * 3);
  48. var closeIdx = Mathf.RoundToInt(Random.Range(0f, 1f) * 2);
  49. if (openIdx == closeIdx)
  50. {
  51. closeIdx++;
  52. }
  53. //var volumn = boxVals[3]*(1000+Random.Range(0f,1f) * 500);
  54. var open = boxVals[openIdx];
  55. var close = boxVals[closeIdx];
  56. var lowest = boxVals[0];
  57. var heighest = boxVals[3];
  58. chart.AddXAxisData(i.ToString());
  59. chart.AddData(0, i, open, close, lowest, heighest);
  60. }
  61. }
  62. }
  63. }