Адаптивная скользящая средняя

Подробнее
9 года 10 мес. назад - 9 года 10 мес. назад #74 от AlexLan
Михаил, добрый день (вечер) )))
Помогите пожалуйста, написать адаптивную скользящую среднею из статьи.
Пытался написать в Amibrokere не получилось ((
на C# в Tradematic получилось и хорошо работала. вот пример

DataSeries _FAMA2_(DataSeries a1, double Wmax, double alfa, double E_)
{
DataSeries MySeries= new DataSeries(Symbol, "MySeries");
DataSeries aa=new DataSeries(a1, "aa");
aa[0] = a1[0];
for (int bar = 1; bar <= a1.Count - 1; bar++)
{
double p1=Math.Abs((a1[bar]-aa[bar-1])/E_);
double p2=Math.Pow(p1, alfa);
double Wx=Wmax*(1-Math.Exp(-p2));
aa[bar]=aa[bar-1] + Wx*(a1[bar]-aa[bar-1]);
}
return aa;
}

// а1 - передаем цену Close, Open, .....
// Wmax, alfa, E_ - переменные из формулы
// DataSeries - эта тип переменной из Tradematic в ней записывается значение функции во времени (на каждом баре) .
Спасибо.
С уважением, Александр.
Файл не загружается. Пишет что большой размер. Пришлю Вам по почте.
Последнее редактирование: 9 года 10 мес. назад пользователем AlexLan.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 10 мес. назад - 9 года 6 мес. назад #81 от admin
Александр, ну как-то так:
function FAMA2(array,Wmax,alfa,E_)
{	for (bar = 1; bar < BarCount; bar++)
	{
		p1 = abs((array[bar]-array[bar-1])/E_);
		p2 = p1 ^ alfa;
		Wx = Wmax*(1-exp(-p2));
		result[bar]=array[bar-1] + Wx*(array[bar]-array[bar-1]);
	}
	return result;
}
Последнее редактирование: 9 года 6 мес. назад пользователем admin.
Спасибо сказали: AlexLan, darshan

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 10 мес. назад - 9 года 10 мес. назад #82 от AlexLan
Михаил, спасибо.
Сейчас попробую.
Последнее редактирование: 9 года 10 мес. назад пользователем AlexLan.
Спасибо сказали: Alexfruse

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 10 мес. назад #83 от AlexLan
Михаил.
Вот так наверно правильней ))))

function FAMA2(array,Wmin,Wmax,alfa,E_)
{
result[0]=array[0];
for (bar = 1; bar < BarCount; bar++)
{
p1 = abs((array[bar]-result[bar-1])/E_);
p2 = p1 ^ alfa;
Wx = (Wmax-Wmin)*(1-exp(-p2));
result[bar]=result[bar-1] + Wx*(array[bar]-result[bar-1]);
}
return result;
}
Вид графика как в статье.
Спасибо сказали: darshan

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 10 мес. назад #84 от admin
Именно, Александр! ;)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 10 мес. назад - 9 года 10 мес. назад #85 от AlexLan
Последнее редактирование: 9 года 10 мес. назад пользователем AlexLan.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Модераторы: admin