Savoyar
0
All posts from Savoyar
  Savoyar in Poyarkov696,

Нужна методическая помощь в начале пути

Господа, нужна методическая помощь. Я честно пытался читать хелп по языку, однако поскольку не программист, возможно какие-то нюансы ускользнули. Ниже приведён код программы, однако есть несколько моментов:
1. Значение C_SMA не выводится (хочется получить значение скользящей средней)
2. Значение Last_Price считается очень долго.
3. В таблице вычисленных значений нет ничего.
Запускал в режиме отладки. Тоже мало понятно. Если не сложно - объясните пожалуйста, в чем проблемы. Я конечно, подозреваю, что основные -  в коде генетическом а не программном, но... )))  Поскольку сам трейдер, но не программист, хотелось бы не только "слизать" готовый код, но и понять, почему именно так. Возможно, неправильно понял работу с коллекциями, однако следовал, вроде как, букве инструкции...
Код программы приведён ниже. Заранее спасибо за помощь.

PORTFOLIO_EX 2_Mov_Avg;
DESCRIPTION Скользящие средние;
CLIENTS_LIST  ALL_CLIENTS;
FIRMS_LIST all_firms;

PROGRAM
DELETE_ALL_ITEMS()

CODE_1="EQBR"
CODE_2="LKOH"

' ПОЛУЧАЕМ ЗНАЧЕНИЕ ПО ЧИСТЫМ ПОЗИЦИЯМ TP
FOR I FROM 0 TO GET_NUMBER_OF("FIRM_HOLDING")
    IF GET_VALUE (GET_ITEM ("FIRM_HOLDING", I), "SECCODE")=CODE_2
        Total_Position=GET_VALUE(GET_ITEM("FIRM_HOLDING",I), "TOTAL_NET")+0
    END IF
END FOR


' ПЫТАЮСЬ ПОЛУЧИТЬ ДАТУ В ЦИФРОВОМ ФОРМАТЕ YYYYMMDD
CURRENT_YEAR=GET_VALUE(GET_DATETIME(), "YEAR")*10000
CURRENT_MONTH=GET_VALUE(GET_DATETIME(), "MONTH")*100
CURRENT_DAY=GET_VALUE(GET_DATETIME(), "DAY")+0
CURRENT_DATE=CURRENT_YEAR+CURRENT_MONTH+CURRENT_DAY


' ПЫТАЮСЬ ПОЛУЧИТЬ ВРЕМЯ В ЦИФРОВОМ ФОРМАТЕ HHMMSS
CURRENT_HOUR=GET_VALUE(GET_DATETIME(), "HOUR")*10000
CURRENT_MIN=GET_VALUE(GET_DATETIME(), "MIN")*100
CURRENT_SEC=GET_VALUE(GET_DATETIME(), "SEC")+0
CURRENT_TIME=CURRENT_HOUR+CURRENT_MIN+CURRENT_SEC


' ПРОБУЕМ ДОСТАТЬ ЗНАЧЕНИЕ СКОЛЬЗЯЩЕЙ СРЕДНЕЙ
A_SMA = Get_Candle_Ex ("ShortSMA", CURRENT_DATE, CURRENT_TIME) 'Получаю ассоциативный массив с данными для графика со строковым идентификатором ShortSMA
B_SMA=GET_VALUE(A_SMA, "LINES") ' Из ассоциативного массива A_SMA вытаскиваю только коллекцию LINES
C_SMA=GET_COLLECTION_ITEM(B_SMA, 3) ' Из коллекции B_SMA вытаскиваю только цену закрытия

'ПОЛУЧАЮ ТЕКУЩЕЕ ЗНАЧЕНИЕ ЦЕНЫ АКЦИИ
Last_Price=GET_PARAM (CODE_1, CODE_2, "LAST")

END_PROGRAM

 

PARAMETER Total_Position;
PARAMETER_TITLE Позиция;
PARAMETER_DESCRIPTION Общая позиция по интструменту;
PARAMETER_TYPE NUMERIC(10,0);
END

PARAMETER CURRENT_DATE;
PARAMETER_TITLE Дата;
PARAMETER_DESCRIPTION Текущая дата;
PARAMETER_TYPE NUMERIC(10,0);
END

PARAMETER CURRENT_TIME;
PARAMETER_TITLE Время;
PARAMETER_DESCRIPTION Текущее время;
PARAMETER_TYPE NUMERIC(10,0);
END

PARAMETER C_SMA;
PARAMETER_TITLE Значение скользящей;
PARAMETER_DESCRIPTION Значение скользящей;
PARAMETER_TYPE NUMERIC(10,2);
END

PARAMETER Last_Price;
PARAMETER_TITLE Last_Price;
PARAMETER_DESCRIPTION Last_Price;
PARAMETER_TYPE NUMERIC(10,2);
END


END_PORTFOLIO_EX