コード例 #1
0
        public List <Signal> GenerateOnClose(DateTime ts, int leadingIndex, SystemState systemState)
        {
            List <Signal> res = new List <Signal>();

            if (leadingIndex <= _statSMA.BackBufferLength)
            {
                return(res);
            }

            StockPricesData data = _dataLoader.Get(_stock.FullName, _dataRange, 0, ts, ts);

            if ((data.C[leadingIndex - 1] <= _statSMA.Data(StatSMAData.SMA)[leadingIndex - 1 - _statSMA.BackBufferLength]) &&
                (data.C[leadingIndex] > _statSMA.Data(StatSMAData.SMA)[leadingIndex - _statSMA.BackBufferLength]))
            {
                res.Add(CreateSignal(PositionDir.Long, systemState, data.C[leadingIndex]));
            }

            if ((data.C[leadingIndex - 1] >= _statSMA.Data(StatSMAData.SMA)[leadingIndex - 1 - _statSMA.BackBufferLength]) &&
                (data.C[leadingIndex] < _statSMA.Data(StatSMAData.SMA)[leadingIndex - _statSMA.BackBufferLength]))
            {
                res.Add(CreateSignal(PositionDir.Short, systemState, data.C[leadingIndex]));
            }

            return(res);
        }
コード例 #2
0
        private string GetStatValue(StockStat stat, int selectedIndex, int dataPricesLength)
        {
            int emptyStart = dataPricesLength - stat.Data(0).Length;

            if (selectedIndex < emptyStart)
            {
                return("");
            }

            List <string> values = new List <string>();

            for (int i = 0; i < stat.DataCount; i++)
            {
                values.Add(DataFormatting.FormatStatValue(stat.Data(i)[selectedIndex - emptyStart]));
            }
            return(string.Join(", ", values));
        }
コード例 #3
0
 public static void AppendStockStatData(this PriceVolumeChart chart, StockPricesData data, StockStat stat)
 {
     for (int i = 0; i < stat.DataCount; i++)
     {
         Series  s            = chart.GetSeries(stat.ChartSeriesName(i));
         float[] currdata     = stat.Data(i);
         int     tsstartindex = data.Length - currdata.Length;
         for (int j = 0; j < tsstartindex; j++)
         {
             int ix = s.Points.AddXY(data.TS[j], 0);
             s.Points[ix].IsEmpty = true;
         }
         for (int j = 0; j < currdata.Length; j++)
         {
             s.Points.AddXY(data.TS[tsstartindex + j], currdata[j]);
         }
     }
 }