дмитрий б написал: ПЫТАЮСЬ ВЗЯТЬ ЗНАЧЕНИЕ ПРЕДЫДУЩЕЙ СВЕЧИ ВСЕ РОВНО ПОЛУЧАЕТСЯ ТЕКУЩАЯ СВЕЧА А НЕ ПРЕДЫДУЩАЯ
Здравствуйте, По присланному коду не видно чтобы была попытка взять предыдущую свечу. Видно что Вы ее сохраняете в массив CANDLE_OLD однако больше с этим массивом Вы ничего не делаете.
Пожалуйста подскажите что надо делать дальше потому что я в программирование совсем недавно подскажите и если не трудно надпишите код желательно с прояснениями если не трудно заранее спасибо большое
дмитрий б написал: Пожалуйста подскажите что надо делать дальше потому что я в программирование совсем недавно подскажите и если не трудно надпишите код желательно с прояснениями если не трудно заранее спасибо большое
У Вас есть массив CANDLE_OLD, Вам остается только что-то с ним сделать, например вывести в таблицу. Как вывести в таблицу можно посмотреть на примере аналогичного массива CANDLE Вам остается просто заменить одно на другое.
Сергей! Я эти значения вывожу в таблицу чтоб узнать работает это или нет а в дальнейшем я эти значения буду использовать в коде . Подскажите а могу ли я эти значения приобразовать в переменные примеру bar1 bar2 также с максимум и минимум этих баров как это лучше сделать
дмитрий б написал: Я эти значения вывожу в таблицу чтоб узнать работает это или нет а в дальнейшем я эти значения буду использовать в коде .
Если требуется просто узнать работает или нет, то можно запустить отладчик (в контекстном меню таблицы)
Цитата
дмитрий б написал: Подскажите а могу ли я эти значения приобразовать в переменные примеру bar1 bar2 также с максимум и минимум этих баров как это лучше сделать
Вопрос не совсем понятен, зачем преобразовывать, если у Вас и так есть массивы CANDLE и CANDLE_OLD из которых Вы уже можете взять максимум и минимум.
ПОМЕНЯЛ LINES = GET_VALUE(CANDLE,"LINES") НА LINES = GET_VALUE(CANDLE_OLD,"LINES") ВСЕ РАВНО РАБОТАЕТ ПО СТАРОМУ ПОКАЗЫВАЕТ ТЕКУЩУЮ СВЕЧУ А НЕ ПРЕДЫДУЩУЮ. ЧТО ДЕЛАТЬ?
Проблема в том что Вы запоминаете значение CANDLE_OLD= CANDLE в момент когда свечка CANDLE только только появилась и еще не успела сформироваться. То есть данная логика приводит к тому что Вы будете видеть не текущую свечку, а момент создания этой свечки. Чтобы решить задачу, Вам нужно переделать логику так, чтобы в момент срабатывания условия "свеча новая" в CANDLE_OLD попадало значение CANDLE которое было до срабатывания условия.
Для этого достаточно перенести ADD_ITEM в условие IF (FLAG=1), а CANDLE_OLD=CANDLE вынести после этого условия.
CANDLE = (GET_CANDLE_EX ("RIM6", Date, Time) LINES = GET_VALUE(CANDLE_OLD,"LINES") LINE = GET_COLLECTION_ITEM(LINES,0) OPEN = GET_VALUE(LINE,"OPEN")+0 HIGH = GET_VALUE(LINE,"HIGH")+0 LOW = GET_VALUE(LINE,"LOW")+0 CLOSE = GET_VALUE(LINE,"CLOSE")+0
ПОРТФЕЛЬ ВСЕ РАВНО ПОКАЗЫВАЛ ЗНАЧЕНИЯ ТЕКУЩЕЙ СВЕЧИ НАСКОЛЬКО СЕЙЧАС Я ВАС ПОНЕЛ ДЕЛО ЕЩЁ В ДРУГОЙ ФУНКЦИИ ВОТ ЭТОЙ IF (FLAG=1) 'запоминаем новую свечу CANDLE_OLD= CANDLE END IF
DELETE_ALL_ITEMS() 'ФУНКЦИЯ УДАЛЕНИЯ СТАРЫХ ДАННЫХ ИЗ ТАБЛИЦЫ ADD_ITEM(1,OUTPUT)
IF((CANDLE_1+0=0) or ( GET_VALUE (CANDLE,"TIME")-GET_VALUE (CANDLE_1,"TIME") <>0) ) CANDLE_2= CANDLE_1 CANDLE_1= CANDLE END IF
END_PROGRAM
PARAMETER DATE; PARAMETER_TITLE ДАТА; PARAMETER_DESCRIPTION ДАТА; PARAMETER_TYPE STRING(30); END
PARAMETER TIME; PARAMETER_TITLE ВРЕМЯ; PARAMETER_DESCRIPTION ВРЕМЯ; PARAMETER_TYPE STRING(30); END
PARAMETER OPEN; PARAMETER_TITLE ЦЕНА ОТК.; PARAMETER_DESCRIPTION ЦЕНА ; PARAMETER_TYPE STRING(30); END ------------------------------- если надо в таблице видеть предыдущую, то отобразите CANDLE_2 вообще-то все делается гораздо проще (но писать программу за вас не буду) ---------------------------------- надо вычислить время предыдущей свечи, вычитая интервал и времени текущей свечи и снова прочитать с этим временем При этом надо учесть, что для нахождения последней свечи предыдущего дня надо уменьшить день. Но при этом надо учесть, что предыдущий день это не всегда текущий день минус 1. ----------------------------