/// <summary> /// 创建方法 /// </summary> /// <param name="indicator">指标</param> /// <param name="id">ID</param> /// <param name="name">名称</param> /// <param name="withParameters">是否有参数</param> public CFunctionUI(CIndicator indicator, int id, String name, UIXml xml) { m_indicator = indicator; m_ID = id; m_name = name; m_xml = xml; }
/// <summary> /// 创建指标 /// </summary> /// <param name="native">方法库</param> /// <param name="script">脚本</param> /// <param name="xml">XML</param> /// <returns>指标</returns> public static CIndicator CreateIndicator(string script, UIXml xml) { CIndicator indicator = xml.Native.CreateIndicator(); CTable table = xml.Native.CreateTable(); indicator.DataSource = table; CFunctionBase.AddFunctions(indicator); CFunctionUI.AddFunctions(indicator, xml); CFunctionWin.AddFunctions(indicator); CFunctionAjax.AddFunctions(indicator); int index = 1000000; string[] functions = FUNCTIONS.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); int functionsSize = functions.Length; for (int i = 0; i < functionsSize; i++) { indicator.AddFunction(new CFunctionEx(indicator, index + i, functions[i], xml)); } indicator.Script = script; table.AddColumn(0); table.Set(0, 0, 0); indicator.OnCalculate(0); return(indicator); }
/// <summary> /// 创建指标 /// </summary> /// <param name="id">编号</param> /// <param name="script">脚本</param> /// <param name="xml">XML</param> /// <returns>指标</returns> public static CIndicator CreateIndicator2(String id, ChatData chatData, UIXml xml) { CIndicator indicator = xml.Native.CreateIndicator(); indicator.Name = id; CTable table = xml.Native.CreateTable(); indicator.DataSource = table; indicator.Tag = chatData; CFunctionBase.AddFunctions(indicator); CFunctionUI.AddFunctions(indicator, xml); CFunctionWin.AddFunctions(indicator); int index = STARTINDEX; String[] functions = FUNCTIONS.Split(new String[] { "," }, StringSplitOptions.RemoveEmptyEntries); int functionsSize = functions.Length; for (int i = 0; i < functionsSize; i++) { indicator.AddFunction(new CFunctionEx(indicator, index + i, functions[i], xml)); } indicator.Script = chatData.m_content; table.AddColumn(0); table.Set(0, 0, 0); indicator.OnCalculate(0); return(indicator); }
/// <summary> /// 添加方法 /// </summary> /// <param name="indicator">方法库</param> /// <param name="native">脚本</param> /// <param name="xml">XML</param> /// <returns>指标</returns> public static void AddFunctions(CIndicator indicator, UIXml xml) { string[] functions = FUNCTIONS.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); int functionsSize = functions.Length; for (int i = 0; i < functionsSize; i++) { indicator.AddFunction(new CFunctionUI(indicator, STARTINDEX + i, PREFIX + functions[i], xml)); } }
/// <summary> /// 异步运行计划 /// </summary> /// <param name="parameter">参数</param> public void Run(object parameter) { //获取参数 object[] parameters = parameter as object[]; String id = parameters[0].ToString(); String commandString = parameters[1].ToString(); SetLastResult(id, "正在执行"); try { UIXml uiXml = new UIXml(); uiXml.CreateNative(); CIndicator indicator = CFunctionEx.CreateIndicator(id, commandString, uiXml); indicator.Dispose(); uiXml.Dispose(); } catch (Exception ex) { SetLastResult(id, "失败:" + ex.Message + "\r\n" + ex.StackTrace); return; } SetLastResult(id, "成功"); }
/// <summary> /// 创建脚本 /// </summary> /// <param name="xml">XML对象</param> public GaiaScript(UIXml xml) { m_xml = xml; }