fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5. // your code goes here
  6. return 0;
  7. }
Success #stdin #stdout 0s 5320KB
stdin
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>

// 股票数据结构体(成员命名完全规范)
typedef struct {
    char date[12];       // 日期(YYYY-MM-DD)
    double close;        // 收盘价
    double vol;          // 成交量(手)
    double ma7;          // 7日均线
    double ma13;         // 13日均线
    double ma21;         // 21日均线
    double ma34;         // 34日均线
    double ma50;         // 50日均线
    double ma89;         // 89日均线
    double ma133;        // 133日均线
    double ma233;        // 233日均线
    double ma_vol5;      // 5日量均线
    double dif;          // MACD-DIF
    double dea;          // MACD-DEA
    double rsi1;         // 14日RSI
} StockData;

// 计算均线
void calc_ma(StockData *data, int len) {
    double sum_close, sum_vol;
    for (int i = 0; i < len; i++) {
        data[i].ma7 = (i < 6) ? 0 : (data[i-6].close + data[i-5].close + data[i-4].close + data[i-3].close + data[i-2].close + data[i-1].close + data[i].close) / 7;
        data[i].ma13 = (i < 12) ? 0 : (data[i-12].close + data[i-11].close + data[i-10].close + data[i-9].close + data[i-8].close + data[i-7].close + data[i-6].close + data[i-5].close + data[i-4].close + data[i-3].close + data[i-2].close + data[i-1].close + data[i].close) / 13;
        data[i].ma21 = (i < 20) ? 0 : (data[i-20].close + data[i-19].close + data[i-18].close + data[i-17].close + data[i-16].close + data[i-15].close + data[i-14].close + data[i-13].close + data[i-12].close + data[i-11].close + data[i-10].close + data[i-9].close + data[i-8].close + data[i-7].close + data[i-6].close + data[i-5].close + data[i-4].close + data[i-3].close + data[i-2].close + data[i-1].close + data[i].close) / 21;
        data[i].ma34 = (i < 33) ? 0 : (data[i-33].close + data[i-32].close + data[i-31].close + data[i-30].close + data[i-29].close + data[i-28].close + data[i-27].close + data[i-26].close + data[i-25].close + data[i-24].close + data[i-23].close + data[i-22].close + data[i-21].close + data[i-20].close + data[i-19].close + data[i-18].close + data[i-17].close + data[i-16].close + data[i-15].close + data[i-14].close + data[i-13].close + data[i-12].close + data[i-11].close + data[i-10].close + data[i-9].close + data[i-8].close + data[i-7].close + data[i-6].close + data[i-5].close + data[i-4].close + data[i-3].close + data[i-2].close + data[i-1].close + data[i].close) / 34;
        data[i].ma50 = (i < 49) ? 0 : (data[i-49].close + data[i-48].close + data[i-47].close + data[i-46].close + data[i-45].close + data[i-44].close + data[i-43].close + data[i-42].close + data[i-41].close + data[i-40].close + data[i-39].close + data[i-38].close + data[i-37].close + data[i-36].close + data[i-35].close + data[i-34].close + data[i-33].close + data[i-32].close + data[i-31].close + data[i-30].close + data[i-29].close + data[i-28].close + data[i-27].close + data[i-26].close + data[i-25].close + data[i-24].close + data[i-23].close + data[i-22].close + data[i-21].close + data[i-20].close + data[i-19].close + data[i-18].close + data[i-17].close + data[i-16].close + data[i-15].close + data[i-14].close + data[i-13].close + data[i-12].close + data[i-11].close + data[i-10].close + data[i-9].close + data[i-8].close + data[i-7].close + data[i-6].close + data[i-5].close + data[i-4].close + data[i-3].close + data[i-2].close + data[i-1].close + data[i].close) / 50;
        data[i].ma89 = (i < 88) ? 0 : (data[i-88].close + data[i-87].close + data[i-86].close + data[i-85].close + data[i-84].close + data[i-83].close + data[i-82].close + data[i-81].close + data[i-80].close + data[i-79].close + data[i-78].close + data[i-77].close + data[i-76].close + data[i-75].close + data[i-74].close + data[i-73].close + data[i-72].close + data[i-71].close + data[i-70].close + data[i-69].close + data[i-68].close + data[i-67].close + data[i-66].close + data[i-65].close + data[i-64].close + data[i-63].close + data[i-62].close + data[i-61].close + data[i-60].close + data[i-59].close + data[i-58].close + data[i-57].close + data[i-56].close + data[i-55].close + data[i-54].close + data[i-53].close + data[i-52].close + data[i-51].close + data[i-50].close + data[i-49].close + data[i-48].close + data[i-47].close + data[i-46].close + data[i-45].close + data[i-44].close + data[i-43].close + data[i-42].close + data[i-41].close + data[i-40].close + data[i-39].close + data[i-38].close + data[i-37].close + data[i-36].close + data[i-35].close + data[i-34].close + data[i-33].close + data[i-32].close + data[i-31].close + data[i-30].close + data[i-29].close + data[i-28].close + data[i-27].close + data[i-26].close + data[i-25].close + data[i-24].close + data[i-23].close + data[i-22].close + data[i-21].close + data[i-20].close + data[i-19].close + data[i-18].close + data[i-17].close + data[i-16].close + data[i-15].close + data[i-14].close + data[i-13].close + data[i-12].close + data[i-11].close + data[i-10].close + data[i-9].close + data[i-8].close + data[i-7].close + data[i-6].close + data[i-5].close + data[i-4].close + data[i-3].close + data[i-2].close + data[i-1].close + data[i].close) / 89;
        data[i].ma133 = (i < 132) ? 0 : (data[i-132].close + data[i-131].close + data[i-130].close + data[i-129].close + data[i-128].close + data[i-127].close + data[i-126].close + data[i-125].close + data[i-124].close + data[i-123].close + data[i-122].close + data[i-121].close + data[i-120].close + data[i-119].close + data[i-118].close + data[i-117].close + data[i-116].close + data[i-115].close + data[i-114].close + data[i-113].close + data[i-112].close + data[i-111].close + data[i-110].close + data[i-109].close + data[i-108].close + data[i-107].close + data[i-106].close + data[i-105].close + data[i-104].close + data[i-103].close + data[i-102].close + data[i-101].close + data[i-100].close + data[i-99].close + data[i-98].close + data[i-97].close + data[i-96].close + data[i-95].close + data[i-94].close + data[i-93].close + data[i-92].close + data[i-91].close + data[i-90].close + data[i-89].close + data[i-88].close + data[i-87].close + data[i-86].close + data[i-85].close + data[i-84].close + data[i-83].close + data[i-82].close + data[i-81].close + data[i-80].close + data[i-79].close + data[i-78].close + data[i-77].close + data[i-76].close + data[i-75].close + data[i-74].close + data[i-73].close + data[i-72].close + data[i-71].close + data[i-70].close + data[i-69].close + data[i-68].close + data[i-67].close + data[i-66].close + data[i-65].close + data[i-64].close + data[i-63].close + data[i-62].close + data[i-61].close + data[i-60].close + data[i-59].close + data[i-58].close + data[i-57].close + data[i-56].close + data[i-55].close + data[i-54].close + data[i-53].close + data[i-52].close + data[i-51].close + data[i-50].close + data[i-49].close + data[i-48].close + data[i-47].close + data[i-46].close + data[i-45].close + data[i-44].close + data[i-43].close + data[i-42].close + data[i-41].close + data[i-40].close + data[i-39].close + data[i-38].close + data[i-37].close + data[i-36].close + data[i-35].close + data[i-34].close + data[i-33].close + data[i-32].close + data[i-31].close + data[i-30].close + data[i-29].close + data[i-28].close + data[i-27].close + data[i-26].close + data[i-25].close + data[i-24].close + data[i-23].close + data[i-22].close + data[i-21].close + data[i-20].close + data[i-19].close + data[i-18].close + data[i-17].close + data[i-16].close + data[i-15].close + data[i-14].close + data[i-13].close + data[i-12].close + data[i-11].close + data[i-10].close + data[i-9].close + data[i-8].close + data[i-7].close + data[i-6].close + data[i-5].close + data[i-4].close + data[i-3].close + data[i-2].close + data[i-1].close + data[i].close) / 133;
        data[i].ma233 = (i < 232) ? 0 : (data[i-232].close + data[i-231].close + data[i-230].close + data[i-229].close + data[i-228].close + data[i-227].close + data[i-226].close + data[i-225].close + data[i-224].close + data[i-223].close + data[i-222].close + data[i-221].close + data[i-220].close + data[i-219].close + data[i-218].close + data[i-217].close + data[i-216].close + data[i-215].close + data[i-214].close + data[i-213].close + data[i-212].close + data[i-211].close + data[i-210].close + data[i-209].close + data[i-208].close + data[i-207].close + data[i-206].close + data[i-205].close + data[i-204].close + data[i-203].close + data[i-202].close + data[i-201].close + data[i-200].close + data[i-199].close + data[i-198].close + data[i-197].close + data[i-196].close + data[i-195].close + data[i-194].close + data[i-193].close + data[i-192].close + data[i-191].close + data[i-190].close + data[i-189].close + data[i-188].close + data[i-187].close + data[i-186].close + data[i-185].close + data[i-184].close + data[i-183].close + data[i-182].close + data[i-181].close + data[i-180].close + data[i-179].close + data[i-178].close + data[i-177].close + data[i-176].close + data[i-175].close + data[i-174].close + data[i-173].close + data[i-172].close + data[i-171].close + data[i-170].close + data[i-169].close + data[i-168].close + data[i-167].close + data[i-166].close + data[i-165].close + data[i-164].close + data[i-163].close + data[i-162].close + data[i-161].close + data[i-160].close + data[i-159].close + data[i-158].close + data[i-157].close + data[i-156].close + data[i-155].close + data[i-154].close + data[i-153].close + data[i-152].close + data[i-151].close + data[i-150].close + data[i-149].close + data[i-148].close + data[i-147].close + data[i-146].close + data[i-145].close + data[i-144].close + data[i-143].close + data[i-142].close + data[i-141].close + data[i-140].close + data[i-139].close + data[i-138].close + data[i-137].close + data[i-136].close + data[i-135].close + data[i-134].close + data[i-133].close + data[i-132].close + data[i-131].close + data[i-130].close + data[i-129].close + data[i-128].close + data[i-127].close + data[i-126].close + data[i-125].close + data[i-124].close + data[i-123].close + data[i-122].close + data[i-121].close + data[i-120].close + data[i-119].close + data[i-118].close + data[i-117].close + data[i-116].close + data[i-115].close + data[i-114].close + data[i-113].close + data[i-112].close + data[i-111].close + data[i-110].close + data[i-109].close + data[i-108].close + data[i-107].close + data[i-106].close + data[i-105].close + data[i-104].close + data[i-103].close + data[i-102].close + data[i-101].close + data[i-100].close + data[i-99].close + data[i-98].close + data[i-97].close + data[i-96].close + data[i-95].close + data[i-94].close + data[i-93].close + data[i-92].close + data[i-91].close + data[i-90].close + data[i-89].close + data[i-88].close + data[i-87].close + data[i-86].close + data[i-85].close + data[i-84].close + data[i-83].close + data[i-82].close + data[i-81].close + data[i-80].close + data[i-79].close + data[i-78].close + data[i-77].close + data[i-76].close + data[i-75].close + data[i-74].close + data[i-73].close + data[i-72].close + data[i-71].close + data[i-70].close + data[i-69].close + data[i-68].close + data[i-67].close + data[i-66].close + data[i-65].close + data[i-64].close + data[i-63].close + data[i-62].close + data[i-61].close + data[i-60].close + data[i-59].close + data[i-58].close + data[i-57].close + data[i-56].close + data[i-55].close + data[i-54].close + data[i-53].close + data[i-52].close + data[i-51].close + data[i-50].close + data[i-49].close + data[i-48].close + data[i-47].close + data[i-46].close + data[i-45].close + data[i-44].close + data[i-43].close + data[i-42].close + data[i-41].close + data[i-40].close + data[i-39].close + data[i-38].close + data[i-37].close + data[i-36].close + data[i-35].close + data[i-34].close + data[i-33].close + data[i-32].close + data[i-31].close + data[i-30].close + data[i-29].close + data[i-28].close + data[i-27].close + data[i-26].close + data[i-25].close + data[i-24].close + data[i-23].close + data[i-22].close + data[i-21].close + data[i-20].close + data[i-19].close + data[i-18].close + data[i-17].close + data[i-16].close + data[i-15].close + data[i-14].close + data[i-13].close + data[i-12].close + data[i-11].close + data[i-10].close + data[i-9].close + data[i-8].close + data[i-7].close + data[i-6].close + data[i-5].close + data[i-4].close + data[i-3].close + data[i-2].close + data[i-1].close + data[i].close) / 233;
        data[i].ma_vol5 = (i < 4) ? 0 : (data[i-4].vol + data[i-3].vol + data[i-2].vol + data[i-1].vol + data[i].vol) / 5;
    }
}

// 计算MACD
void calc_macd(StockData *data, int len) {
    if (len < 35) return;
    double ema12 = 0, ema26 = 0;
    for (int i = 0; i < 12; i++) ema12 += data[i].close;
    ema12 /= 12;
    for (int i = 0; i < 26; i++) ema26 += data[i].close;
    ema26 /= 26;
    for (int i = 12; i < 26; i++) ema12 = (data[i].close * 2 + ema12 * 10) / 12;
    for (int i = 26; i < len; i++) {
        ema12 = (data[i].close * 2 + ema12 * 10) / 12;
        ema26 = (data[i].close * 2 + ema26 * 24) / 26;
        data[i].dif = ema12 - ema26;
    }
    double dea = 0;
    for (int i = 26; i < 35; i++) dea += data[i].dif;
    dea /= 9;
    data[34].dea = dea;
    for (int i = 35; i < len; i++) {
        dea = (data[i].dif * 2 + dea * 7) / 9;
        data[i].dea = dea;
    }
}

// 计算RSI
void calc_rsi(StockData *data, int len) {
    if (len < 14) return;
    double up[len] = {0}, down[len] = {0};
    for (int i = 1; i < len; i++) {
        double diff = data[i].close - data[i-1].close;
        up[i] = (diff > 0) ? diff : 0;
        down[i] = (diff < 0) ? -diff : 0;
    }
    double avg_up = 0, avg_down = 0;
    for (int i = 0; i < 14; i++) {
        avg_up += up[i];
        avg_down += down[i];
    }
    avg_up /= 14;
    avg_down /= 14;
    data[13].rsi1 = (avg_down == 0) ? 100 : (100 - 100 / (1 + avg_up / avg_down));
    for (int i = 14; i < len; i++) {
        avg_up = (avg_up * 13 + up[i]) / 14;
        avg_down = (avg_down * 13 + down[i]) / 14;
        data[i].rsi1 = (avg_down == 0) ? 100 : (100 - 100 / (1 + avg_up / avg_down));
    }
}

// 选股逻辑
void select_stock(StockData *data, int len, const char *stock_name) {
    printf("\n=== %s 选股结果 ===\n", stock_name);
    int count = 0;
    for (int i = 233; i < len; i++) {
        int short_bull = (data[i].ma7 > data[i].ma13) && (data[i].ma13 > data[i].ma21) && (data[i].ma7 > data[i-1].ma7) && (data[i].ma13 > data[i-1].ma13);
        int mid_bull = (data[i].ma34 > data[i].ma50) && (data[i].ma50 > data[i].ma89);
        int long_trend = (data[i].ma133 > data[i].ma233) || (fabs(data[i].ma133 - data[i].ma233) < 1e-6);
        int stand_ma21 = (data[i].close > data[i].ma21) && (data[i-1].close > data[i-1].ma21) && (data[i].close > data[i-1].close);
        int vol_ok = (data[i].vol >= data[i].ma_vol5 * 1.2);
        int macd_ok = (data[i].dif > data[i].dea) && (data[i].dif > 0);
        int rsi_ok = (data[i].rsi1 < 70);
        int risk_free = (data[i].close >= 2) && (data[i].ma_vol5 >= 50000);
        
        if (short_bull && mid_bull && long_trend && stand_ma21 && vol_ok && macd_ok && rsi_ok && risk_free) {
            printf("选中日期:%s | 收盘价:%.2f | 7/13/21日线:%.2f/%.2f/%.2f | RSI1:%.1f\n",
                   data[i].date, data[i].close, data[i].ma7, data[i].ma13, data[i].ma21, data[i].rsi1);
            count++;
        }
    }
    printf("共选中 %d 个交易日\n", count);
}

// 读取CSV数据(在线编译器内置测试数据,无需文件操作)
int get_test_data(StockData *data) {
    // 模拟233条测试数据(日期、收盘价、成交量)
    StockData test_data[] = {
        {"2023-01-01",10.00,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-02",10.05,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-03",10.10,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-04",10.15,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-05",10.20,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-06",10.25,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-07",10.30,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-08",10.35,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-09",10.40,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-10",10.45,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-11",10.50,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-12",10.55,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-13",10.60,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-14",10.65,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-15",10.70,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-16",10.75,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-17",10.80,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-18",10.85,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-19",10.90,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-20",10.95,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-21",11.00,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-22",11.05,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-23",11.10,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-24",11.15,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-25",11.20,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-26",11.25,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-27",11.30,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-28",11.35,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-29",11.40,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-30",11.45,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-01-31",11.50,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-01",11.55,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-02",11.60,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-03",11.65,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-04",11.70,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-05",11.75,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-06",11.80,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-07",11.85,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-08",11.90,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-09",11.95,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-10",12.00,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-11",12.05,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-12",12.10,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-13",12.15,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-14",12.20,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-15",12.25,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-16",12.30,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-17",12.35,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-18",12.40,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-19",12.45,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-20",12.50,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-21",12.55,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-22",12.60,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-23",12.65,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-24",12.70,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-25",12.75,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-26",12.80,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-27",12.85,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-02-28",12.90,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-01",12.95,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-02",13.00,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-03",13.05,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-04",13.10,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-05",13.15,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-06",13.20,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-07",13.25,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-08",13.30,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-09",13.35,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-10",13.40,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-11",13.45,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-12",13.50,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-13",13.55,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-14",13.60,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-15",13.65,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-16",13.70,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-17",13.75,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-18",13.80,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-19",13.85,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-20",13.90,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-21",13.95,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-22",14.00,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-23",14.05,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-24",14.10,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-25",14.15,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-26",14.20,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-27",14.25,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-28",14.30,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-29",14.35,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-30",14.40,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-03-31",14.45,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-01",14.50,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-02",14.55,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-03",14.60,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-04",14.65,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-05",14.70,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-06",14.75,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-07",14.80,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-08",14.85,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-09",14.90,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-10",14.95,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-11",15.00,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-12",15.05,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-13",15.10,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-14",15.15,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-15",15.20,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-16",15.25,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-17",15.30,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-18",15.35,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-19",15.40,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-20",15.45,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-21",15.50,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-22",15.55,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-23",15.60,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-24",15.65,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-25",15.70,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-26",15.75,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-27",15.80,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-28",15.85,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-29",15.90,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-04-30",15.95,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-01",16.00,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-02",16.05,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-03",16.10,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-04",16.15,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-05",16.20,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-06",16.25,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-07",16.30,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-08",16.35,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-09",16.40,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-10",16.45,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-11",16.50,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-12",16.55,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-13",16.60,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-14",16.65,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-15",16.70,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-16",16.75,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-17",16.80,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-18",16.85,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-19",16.90,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-20",16.95,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-21",17.00,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-22",17.05,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-23",17.10,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-24",17.15,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-25",17.20,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-26",17.25,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-27",17.30,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-28",17.35,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-29",17.40,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-30",17.45,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-05-31",17.50,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-01",17.55,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-02",17.60,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-03",17.65,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-04",17.70,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-05",17.75,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-06",17.80,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-07",17.85,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-08",17.90,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-09",17.95,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-10",18.00,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-11",18.05,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-12",18.10,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-13",18.15,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-14",18.20,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-15",18.25,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-16",18.30,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-17",18.35,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-18",18.40,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-19",18.45,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-20",18.50,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-21",18.55,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-22",18.60,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-23",18.65,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-24",18.70,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-25",18.75,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-26",18.80,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-27",18.85,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-28",18.90,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-29",18.95,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-06-30",19.00,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07-01",19.05,58000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07-02",19.10,63000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07-03",19.15,66000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07-04",19.20,60000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07-05",19.25,57000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07-06",19.30,64000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07-07",19.35,62000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07-08",19.40,59000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07-09",19.45,67000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07-10",19.50,61000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07-11",19.55,65000,0,0,0,0,0,0,0,0,0,0,0,0},
        {"2023-07
stdout
Standard output is empty