Автор |
Сообщение |
Torino
Зарегистрирован: 27.01.2009
Сообщения: 72
|
Пытаюсь запустить примеры из pdf-руководства по Ами, скачанного с сайта _amibroker.com
Примеры по multiple time frame.
Ни один из примеров не работает.
Например этот:
Код: |
TimeFrameSet( inWeekly );
m = MACD(12, 26 ); // MACD from WEEKLY data
TimeFrameRestore();
m1 = TimeFrameExpand( m, inWeekly );
Plot( m1, "Weekly MACD", colorRed );
PlotShapes( Cross( m1, 0 ) * shapeUpArrow, colorGreen );
PlotShapes( Cross( 0, m1 ) * shapeDownArrow, colorGreen ); |
Синтаксических ошибок вроде нет.
Запускаю на минутной базе на различных таймфреймах.
Результат один и тот же - пустая панель, хотя должна быть линия со стрелками.
В чем может быть проблема?
Версия Ами 5.20.0 |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Скорее всего просто не хватает данных для расчета. Чтобы просо начать расчитывать недельный МАКДИ необходимо 26 недель. Вероятно у Вас минуток ментше чем за 26 недель |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Torino
Зарегистрирован: 27.01.2009
Сообщения: 72
|
|
Посмотреть профиль Отправить личное сообщение |
|
VladimirN
Зарегистрирован: 07.11.2009
Сообщения: 49
|
Не могу запустить Ваш "Фильтр с бесконечной импульсной характеристикой.." (цветная синусоида - выложена здесь на сайте) в одном окне с двух таймфреймов.
Хочу, что бы срабатывал сигнал, когда на 5-минутках синусоида синего цвета (конец быков), а на 1-минутках - появляется первый сегмент красного - начало медведей.
Запускаю на одно-минутном таймфрейме - но фрагмент, который должен работать на 5-минутках выдает всегда только последний сигнал - конец медведей (желтый). Все делаю по инструкции, и примеры из инструкции работают правильно.... А Ваш филььтр - не хочет.
Наверное потому, что там вызывается функция с циклом... Я уж ее и внутрь ТаймСет ставил, и снаружи - все равно одно и то же.
Подскажите пожалуйста, как в простой МТС получать сигналы из этой синусоиды с двух таймфреймов?
Заранее большое спасибо. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Дай пожалуйста свой вариант кода. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
VladimirN
Зарегистрирован: 07.11.2009
Сообщения: 49
|
Вот. имена у функций разные - IIR и IR
.............
TimeFrameSet( 10*in1Minute );
k= 0.3;
function IR2( input, f0, f1, f2 )
{
IR[ 0 ] = input[ 0 ];
IR[ 1 ] = input[ 1 ];
for( i = 2; i < BarCount; i++ )
{
IR[ i ] = f0 * input[ i ] + f1 * IR[ i - 1 ] + f2 * IR[ i - 2 ];
}
return IR;
}
y=IR2( Close, 0.3, 1.2+K, -0.5-K);
// B. Convexity definition
Convex = (y - Ref(y, -1)) >= (y-Ref(y, -2))/2;
Concave = NOT(Convex);
Up = y>=Ref(y, -1);
Down= NOT(Up);
// Trend phases
Bullstart = Convex AND Up; // from A to B
Bullend = Concave AND Up; // from B to C
Bearstart = Concave AND Down; // from C to D
Bearend = Convex AND Down; // from D to E
C10 = IIf(Bullstart, 1, IIf(Bullend, 2, IIf(Bearstart, 3, 4)));
TimeFrameRestore();
cbf = TimeFrameExpand( C10, 10*in1Minute );
k= 0.3;
// Фильтр с бесконечной импульсной характеристикой
function IIR2( input, f0, f1, f2 )
{
IIR[ 0 ] = input[ 0 ];
IIR[ 1 ] = input[ 1 ];
for( i = 2; i < BarCount; i++ )
{
IIR[ i ] = f0 * input[ i ] + f1 * IIR[ i - 1 ] + f2 * IIR[ i - 2 ];
}
return IIR;
}
y=IIR2( Close, 0.3, 1.2+K, -0.5-K);
// B. Convexity definition
Convex = (y - Ref(y, -1)) >= (y-Ref(y, -2))/2;
Concave = NOT(Convex);
Up = y>=Ref(y, -1);
Down= NOT(Up);
// Trend phases
Bullstart = Convex AND Up; // from A to B
Bullend = Concave AND Up; // from B to C
Bearstart = Concave AND Down; // from C to D
Bearend = Convex AND Down; // from D to E
Color = IIf(Bullstart, colorGreen, IIf(Bullend, colorBlue, IIf(Bearstart, colorRed, colorYellow)));
Redsinus= IIf( Color==colorRed, True, False);
Bluesinus10= IIf( cbf=2, True, False);
Short = Redsinus AND Bluesinus10;
Cover = endday; |
|
|
Посмотреть профиль Отправить личное сообщение |
|
VladimirN
Зарегистрирован: 07.11.2009
Сообщения: 49
|
Cover = endday - это выход по будильнику.... код будильника вырезал, ибо лишний здесь.
P.S. основной таймфрейм - минутки. на нх смотрится и запускается. а сигнал с 10-минуток нужен для подтверждения. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Не разбирался, что там у тебя не так. Решил, что проще написать заново. Написал только индикатор который выводит 2 кривые с разных фреймов. Правда использовал внутридневной и дневной просто потому, что мне так удобнее было. Исправить не трудно.
Твой скорее всего не работал потому, что при сжатии на старший фрейм значений Close получается меньше чем значений на оригинальном фрейме (понятно почему) и в функцию function IR2( input, f0, f1, f2 ) попадают пустые значения, а она этого не переносит.
Обошел это при помощи IIR2(Nz(Close), 0.3, 1.2+K, -0.5-K);
И еще. Имей ввиду, что в самом начале из за того, что на старшем фрейме 0 и 1 элементы пустые, функция показывает ерунду.
В общем вот весь код.
Код: |
SetBarsRequired(sbrAll, sbrAll);
function IIR2( input, f0, f1, f2 )
{
IIR[ 0 ] = input[ 0 ];
IIR[ 1 ] = input[ 1 ];
for( i = 2; i < BarCount; i++ )
{
IIR[ i ] = f0 * input[ i ] + f1 * IIR[ i - 1 ] + f2 * IIR[ i - 2 ];
}
return IIR;
}
function Color( in )
{
Convex = (in - Ref(in, -1)) >= (in - Ref(in, -2))/2;
Concave = NOT(Convex);
Up = in >= Ref(in, -1);
Down= NOT(Up);
// Trend phases
Bullstart = Convex AND Up; // from A to B
Bullend = Concave AND Up; // from B to C
Bearstart = Concave AND Down; // from C to D
Bearend = Convex AND Down; // from D to E
Color1 = IIf(Bullstart, colorGreen,
IIf(Bullend, colorBlue,
IIf(Bearstart, colorRed, colorYellow)));
return Color1;
}
K = 0.3;
TimeFrameSet( inDaily );
y = IIR2(Nz(Close), 0.3, 1.2+K, -0.5-K);
DayColor = Color(y);
TimeFrameRestore();
y1 = TimeFrameExpand(y, inDaily);
DayColor = TimeFrameExpand(DayColor, inDaily);
y = IIR2(C, 0.3, 1.2+K, -0.5-K);
Col = Color(y);
Plot(y1, "", DayColor);
Plot(y, "", Col);
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
VladimirN
Зарегистрирован: 07.11.2009
Сообщения: 49
|
000 писал(а): |
Не разбирался, что там у тебя не так. Решил, что проще написать заново. Написал только индикатор который выводит 2 кривые с разных фреймов. |
Большое спасибо - всё работает.
Как автор фильтра, где Вы видите его наибольшую ценность, а где наименьшую?
Я пока, поглядывая на его поведение, вижу большое сходство с разными МА - он начинает показывать "вниз" - конец быков начало медведей, не раньше, чем появятся первые свечи "вниз". Так ведет себя и быстрая МА.... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Да я не автор. Это я у DIMITRIS TSOKAKIS тиснул. Интересный подход. Я его не сильно мучил, но вообще мне сама идея понравилась. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|