Господа, прошу помочь оптимизировать код. Я знаю что опытные программисты полностью избегают многократного получения одних и тех же данных индикатора. Я так не умею, мой код выглядит так:
То есть каждый раз робот делает лишние действия - получает свечи, которые не поменялись и уже не поменяются. Прошу подсказки как не получать все значения на каждой итерации, а получать только свежую свечу - текущую, то есть indicator[sec].rsi_0
Код |
---|
до функции main ticker_list = "AFLT,ALRS,BANE,CHMF,FEES,GAZP,GMKN,HYDR,IRAO,LKOH,MAGN,MFON,MGNT,MOEX,MTLR,MTSS,NLMK,NVTK,RASP,ROSN,RSTI,RTKM,SBER,SIBN,SNGS,SNGSP,TATN,URKA,VTBR" indicator={} внутри main: for sec in string.gmatch(ticker_list,"%a+") do sleep (1000) --получаем данные индикатора RSI chart_inst=tostring("RSI_"..sec) RSI_n = getNumCandles (chart_inst) indicator[sec].rsi_0 = getCandlesByIndex(chart_inst,0,RSI_n-1,1)[0].close indicator[sec].rsi_1 = getCandlesByIndex(chart_inst,0,RSI_n-2,1)[0].close indicator[sec].rsi_2 = getCandlesByIndex(chart_inst,0,RSI_n-3,1)[0].close indicator[sec].rsi_3 = getCandlesByIndex(chart_inst,0,RSI_n-4,1)[0].close indicator[sec].rsi_4 = getCandlesByIndex(chart_inst,0,RSI_n-5,1)[0].close indicator[sec].rsi_5 = getCandlesByIndex(chart_inst,0,RSI_n-6,1)[0].close indicator[sec].rsi_6 = getCandlesByIndex(chart_inst,0,RSI_n-7,1)[0].close indicator[sec].rsi_7 = getCandlesByIndex(chart_inst,0,RSI_n-8,1)[0].close indicator[sec].rsi_8 = getCandlesByIndex(chart_inst,0,RSI_n-9,1)[0].close indicator[sec].rsi_9 = getCandlesByIndex(chart_inst,0,RSI_n-10,1)[0].close indicator[sec].rsi_10 = getCandlesByIndex(chart_inst,0,RSI_n-11,1)[0].close indicator[sec].rsi_11 = getCandlesByIndex(chart_inst,0,RSI_n-12,1)[0].close indicator[sec].rsi_12 = getCandlesByIndex(chart_inst,0,RSI_n-13,1)[0].close indicator[sec].rsi_13 = getCandlesByIndex(chart_inst,0,RSI_n-14,1)[0].close indicator[sec].rsi_14 = getCandlesByIndex(chart_inst,0,RSI_n-15,1)[0].close indicator[sec].rsi_15 = getCandlesByIndex(chart_inst,0,RSI_n-16,1)[0].close indicator[sec].rsi_16 = getCandlesByIndex(chart_inst,0,RSI_n-17,1)[0].close indicator[sec].rsi_17 = getCandlesByIndex(chart_inst,0,RSI_n-18,1)[0].close indicator[sec].rsi_18 = getCandlesByIndex(chart_inst,0,RSI_n-19,1)[0].close indicator[sec].rsi_19 = getCandlesByIndex(chart_inst,0,RSI_n-20,1)[0].close indicator[sec].rsi_20 = getCandlesByIndex(chart_inst,0,RSI_n-21,1)[0].close анализируем полученные данные. Для анализа нужны все 21 значение. end |
То есть каждый раз робот делает лишние действия - получает свечи, которые не поменялись и уже не поменяются. Прошу подсказки как не получать все значения на каждой итерации, а получать только свежую свечу - текущую, то есть indicator[sec].rsi_0