Вопрос к MQ: О скорости работы эксперта - страница 2

 
по вопросам
1. интересно посмотреть "fast вариант, который считается быстрее EMA". речь идёт о Simple Moving Average? если бы эти формулы точно соответствовали друг другу, то никто не использовал бы SMA, а только FastMA. мы сейчас готовим вариант предотвращающий пересчёт уже посчитанных баров. даже на коротких периодах MA выигрыш на порядок
2. мы не смогли воспроизвести это падение.
как Вы узнали, что обработана всего одна четвёртая часть баров? по результатам, которые отображаются в списке сделок при тестировании? мы прогнали Вашего эксперта на днёвках и последняя торговая операция произошла 1996.01.09 - похоже это и есть Ваша четверть. но уверяем Вас - все бары были честно обработаны - "расклад, батюшка".
 
RE: по вопросам
Добрый день!
1. Исходные коды всех индикаторов в Омеге доспупны в редакторе программ. Привожу ниже коды двух вариантов. Кстати, в индикаторе
используется именно fast вариант.
2. Выборка была за 3 месяца по минуткам с 1.07.03 до 2.10.03.
Печать в лог отрабатывалась для каждого тика.
В лог, как видно, попали строки печати только до 29.07.03.

{*******************************************************************
Description : This Indicator plots Moving Average 1 Line Indicator
Provided By : Omega Research, Inc. (c) Copyright 1999
********************************************************************}

Inputs: Price(Close), Length(9), Displace(0);

If Displace >= 0 OR CurrentBar > AbsValue(Displace) Then Begin
Plot1[Displace](AverageFC(Price, Length), "SimpAvg1");

{Alert Criteria}
IF Price < Plot1 AND Plot1 < Plot1[1] AND Plot1[1] > Plot1[2] Then
Alert("The Moving Average has just changed direction and is now bullish")
Else
If Price > Plot1 AND Plot1 > Plot1[1] AND Plot1[1] < Plot1[2] Then
Alert("The Moving Average has just changed direction and is now bearish");

{Moving Average Commentary}
#BeginCmtry
Commentary(ExpertAvg1Line(Price, Length, Displace, Plot1));
#End;
E
{*******************************************************************
Description: Simple Moving Average
Provided By: Omega Research, Inc. (c) Copyright 1999
********************************************************************}

Inputs: Price(NumericSeries), Length(NumericSimple);
Variables: Sum(0), Counter(0);

Sum = 0;

For counter = 0 To Length - 1 Begin
Sum = Sum + Price[counter];
End;

If Length > 0 Then
Average = Sum / Length
Else
Average = 0;

{*******************************************************************
Description: Simple Moving Average (fast calculation)
Provided By: Omega Research, Inc. (c) Copyright 1999
********************************************************************}

Inputs: Price(NumericSeries), Length(NumericSimple);
Variables: Sum(0), Counter(0);

If CurrentBar = 1 Then Begin
Sum = 0;
For counter = 0 To Length - 1 Begin
Sum = Sum + Price[counter];
End;
End
Else
Sum = Sum + Price - Price[Length];

If Length > 0 Then
AverageFC = Sum / Length
Else
AverageFC = 0;

{Force Series Function}
If False Then
value1 = AverageFC[1];

Желаю удачи.