Оба подхода были реализованы в виде компьютерных торговых систем средствами пакета MetaStock и было выполнено моделирование на исторических данных для оценивания эффективности получаемых таким образом систем. Результаты экспериментов показали разумность предложенного подхода и перспективность поиска в этом направлении.
Приложение. Вычисление прогнозов и программирование
торговых систем в пакете MetaStock
В Приложении приведены программы вычисления оценок коэффициентов авторегрессии и построения прогнозов временного ряда на основе модели линейной авторегрессии 2-го порядка, реализованные с помощью Indicator Builder в виде индикаторов пакета MetaStock.
Здесь же приведены тексты торговых систем, использовавшиеся при выполнении дипломной работы, реализованные в подсистеме System Tester пакета MetaStock.
Вспомогательные индикаторы для построения прогноза.
Коэффициенты автокорреляции
Cor01
Periods:= Input("periods=",12, 120, 24);
Correl(C, Ref(C, -1), Periods, 0)
Cor02
Periods:= Input("periods=",12, 120, 24);
Correl(C, Ref(C, -2), Periods, 0)
Cor12
Periods:= Input("periods=",12, 120, 24);
Correl(Ref(C, -1), Ref(C, -2), Periods, 0)
Дисперсии (CКО)
S2
Periods:= Input("periods=",12, 120, 24);
Power(Stdev(Ref(C,-2),Periods),0.5)
S1
Periods:= Input("periods=",12, 120, 24);
Power(Stdev(Ref(C,-1),Periods),0.5)
S0
Periods:= Input("periods=",12, 120, 24);
Power(Stdev(C,Periods),0.5)
Оценки коэффициентов модели авторегрессии в виде автономных индикаторов
Индикатор прогноза на основе модели линейной авторегрессии 2-го порядка
Полный текст индикатора без ссылок на формулы и переменные
AR2-fcst
Periods:= Input("periods=",12, 120, 24);
Ref( Mov(C, Periods,S) - (Correl(C, Ref(C, -1), Periods, 0) * Power(Stdev(Ref(C,-2),Periods),0.5) – Power(Stdev(C,Periods),0.5)*(Correl(C, Ref(C, -2), Periods, 0) –
Correl(C, Ref(C, -1), Periods, 0) * Correl(Ref(C, -1), Ref(C, -2), Periods, 0)) / (
Power(Stdev(Ref(C,-2),Periods),0.5) * (1- Correl(Ref(C, -1), Ref(C, -2), Periods, 0)
* Correl(Ref(C, -1), Ref(C, -2), Periods, 0)
)) * Correl(Ref(C, -1), Ref(C, -2), Periods, 0) * Power(Stdev(Ref(C,-2),Periods),0.5)
) / Power(Stdev(Ref(C,-1),Periods),0.5)
* Mov(Ref(C,-1),Periods,S) - Power(Stdev(C,Periods),0.5)*
(Correl(C, Ref(C, -2), Periods, 0) – Correl(C, Ref(C, -1), Periods, 0) *
Correl(Ref(C, -1), Ref(C, -2), Periods, 0))/ (Power(Stdev(Ref(C,-2),Periods),0.5) *
(1- Correl(Ref(C, -1), Ref(C, -2), Periods, 0) * Correl(Ref(C, -1), Ref(C, -2), Periods, 0)
)) * Mov(Ref(C,-2),Periods,S)
+ (Correl(C, Ref(C, -1), Periods, 0) * Power(Stdev(Ref(C,-2),Periods),0.5) –
Power(Stdev(C,Periods),0.5)*
(Correl(C, Ref(C, -2), Periods, 0) – Correl(C, Ref(C, -1), Periods, 0) *
Correl(Ref(C, -1), Ref(C, -2), Periods, 0))/(
Power(Stdev(Ref(C,-2),Periods),0.5) * (1- Correl(Ref(C, -1), Ref(C, -2), Periods, 0)
* Correl(Ref(C, -1), Ref(C, -2), Periods, 0)
)) * Correl(Ref(C, -1), Ref(C, -2), Periods, 0) * Power(Stdev(Ref(C,-2),Periods),0.5)
) / Power(Stdev(Ref(C,-1),Periods),0.5)
*C + Power(Stdev(C,Periods),0.5)* (Correl(C, Ref(C, -2), Periods, 0) –
Correl(C, Ref(C, -1), Periods, 0) * Correl(Ref(C, -1), Ref(C, -2), Periods, 0)) / (
Power(Stdev(Ref(C,-2),Periods),0.5) * (1- Correl(Ref(C, -1), Ref(C, -2), Periods, 0)
*Correl(Ref(C, -1), Ref(C, -2), Periods, 0) )) * Ref(C,-1),-1)
Индикатор прогноза
(с использованием переменных для сокращения текста)
Forecast_AR2
Periods:= Input("periods=",12, 120, 24);
Cor01:=Correl(C, Ref(C, -1), Periods, 0);
Cor02:=Correl(C, Ref(C, -2), Periods, 0);
Cor12:=Correl(Ref(C, -1), Ref(C, -2), Periods, 0);
S2:=Power(Stdev(Ref(C,-2),Periods),0.5);
S1:=Power(Stdev(Ref(C,-1),Periods),0.5);
S0:=Power(Stdev(C,Periods),0.5);
Ccoef:=S0*(Cor02- Cor01* Cor12)/(S2*(1-Cor12* Cor12));
Bcoef:=(Cor01* S0-Ccoef*Cor12*S2) / S1;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.