Esempio n. 1
0
 /// <summary>
 /// 按钮点击事件
 /// </summary>
 /// <param name="sender">调用者</param>
 /// <param name="mp">坐标</param>
 /// <param name="button">按钮</param>
 /// <param name="click">点击次数</param>
 /// <param name="delta">滚轮滚动值</param>
 private void clickButton(object sender, FCTouchInfo touchInfo)
 {
     if (touchInfo.m_firstTouch && touchInfo.m_clicks == 1)
     {
         FCView control = sender as FCView;
         String name    = control.Name;
         if (name == "btnCancel")
         {
             close();
         }
         else if (name == "btnOK")
         {
             FCTextBox            txtName          = getTextBox("txtName");
             FCTextBox            txtScript        = getTextBox("txtScript");
             List <IndicatorData> indicatorDatas   = m_mainFrame.m_indicators;
             IndicatorData        newIndicatorData = null;
             //判断是否重复
             int indicatorDatasSize = indicatorDatas.Count;
             for (int i = 0; i < indicatorDatasSize; i++)
             {
                 IndicatorData indicatorData = indicatorDatas[i];
                 if (indicatorData.m_name == txtName.Text)
                 {
                     if (m_isEdit)
                     {
                         newIndicatorData = indicatorData;
                     }
                     else
                     {
                         MessageBox.Show("该指标名称已经存在!", "提示");
                         return;
                     }
                 }
             }
             //添加指标
             if (!m_isEdit)
             {
                 newIndicatorData = new IndicatorData();
                 indicatorDatas.Add(newIndicatorData);
             }
             newIndicatorData.m_name   = txtName.Text;
             newIndicatorData.m_script = txtScript.Text;
             String path    = Application.StartupPath + "\\indicators.txt";
             String content = JsonConvert.SerializeObject(indicatorDatas);
             FCFile.write(path, content);
             if (!m_isEdit)
             {
                 m_mainFrame.addIndicator(newIndicatorData);
             }
             close();
             Native.update();
             Native.invalidate();
         }
         else if (name == "lblDelete")
         {
             m_mainFrame.removeIndicator(m_indicatorData);
             close();
         }
     }
 }
Esempio n. 2
0
        /// <summary>
        /// 添加指标
        /// </summary>
        /// <param name="chart">股票控件</param>
        /// <param name="dataSource">数据源</param>
        /// <param name="text">文本</param>
        /// <param name="parameters">参数</param>
        public static FCScript createIndicator(FCChart chart, FCDataTable dataSource, String text, String parameters)
        {
            FCScript indicator = new FCScript();

            indicator.DataSource = dataSource;
            indicator.Name       = "";
            //indicator.FullName = "";
            if (dataSource != null)
            {
                indicator.setSourceField(KeyFields.CLOSE, KeyFields.CLOSE_INDEX);
                indicator.setSourceField(KeyFields.HIGH, KeyFields.HIGH_INDEX);
                indicator.setSourceField(KeyFields.LOW, KeyFields.LOW_INDEX);
                indicator.setSourceField(KeyFields.OPEN, KeyFields.OPEN_INDEX);
                indicator.setSourceField(KeyFields.VOL, KeyFields.VOL_INDEX);
                indicator.setSourceField(KeyFields.AMOUNT, KeyFields.AMOUNT_INDEX);
                indicator.setSourceField(KeyFields.CLOSE.Substring(0, 1), KeyFields.CLOSE_INDEX);
                indicator.setSourceField(KeyFields.HIGH.Substring(0, 1), KeyFields.HIGH_INDEX);
                indicator.setSourceField(KeyFields.LOW.Substring(0, 1), KeyFields.LOW_INDEX);
                indicator.setSourceField(KeyFields.OPEN.Substring(0, 1), KeyFields.OPEN_INDEX);
                indicator.setSourceField(KeyFields.VOL.Substring(0, 1), KeyFields.VOL_INDEX);
                indicator.setSourceField(KeyFields.AMOUNT.Substring(0, 1), KeyFields.AMOUNT_INDEX);
            }
            IndicatorData indicatorData = new IndicatorData();

            indicatorData.m_parameters = parameters;
            indicatorData.m_script     = text;
            indicator.Tag = indicatorData;
            String constValue = "";

            if (parameters != null && parameters.Length > 0)
            {
                String[] strs     = parameters.Split(new String[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                int      strsSize = strs.Length;
                for (int i = 0; i < strsSize; i++)
                {
                    String   str   = strs[i];
                    String[] strs2 = str.Split(new String[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                    constValue += "const " + strs2[0] + ":" + strs2[3] + ";";
                }
            }
            if (text != null && text.Length > 0)
            {
                indicator.Script = constValue + text;
            }
            return(indicator);
        }