Автор |
Сообщение |
dmitry_alexeevich
Зарегистрирован: 04.02.2012
Сообщения: 2
|
Уважаемые профессионалы!!!
Я только начал осваивать программу AmiBroker. В связи с чем следующие вопросы:
1. Хочу сделать выделение свечей неважно как именно, можно чтоб определенные свечи или бары окрашивались в какой-нибудь цвет (например бар до, текущий и после) или дополнительные символы помечали (стрелки, треугольники и т.д.), в общем неважно, главное, чтоб выделялись, как относительных максимумов и минимумов по Томасу Де Марку, т.е. максимум, который выше за N предыдущих и N последующих периодов. Соответственно минимум наоборот. Ну и можно было бы добавлять условия ужесточающие эти правила. Т.е. не просто максимум или минимум за N предыдущих или последующих периодов, но и, такое условие, к примеру
Код: |
i=1...n
Low[i]<Low[i-1]<...<Low[i-n]<Low[i+1]<...<Low[i+n]
and
High[i]<High[i-1]<...<High[i-n]<High[i+1]<...<High[i+n] |
Вообщем покумекав написал вот такой код:
Код: |
SECTION_BEGIN("max_min");
fractalmax=0;
fractalmin=0;
for (i = 5; i <= BarCount; i++ )
{
for (j = 1; j <= 5; j++)
{
if (H[i] > H[i-j]) if (H[i] < H[i+j]) fractalmax[i]=shapeUpTriangle;
if (L[i] < L[i-j]) if (L[i] < L[i+j]) fractalmin[i]=shapeDownTriangle;
}
PlotShapes(fractalmax,colorGreen, 0,H);
PlotShapes(fractalmin,colorRed, 0,L);
}
_SECTION_END();
|
По моему, мнению код правильный. А AFL ругается. Пишет Error 30. Не могу понять что не так? Помогите, пожалуйста.
2.Выделение опреленных комбинаций свечей (баров). Например, таких как из книги Джека Швагера "Технический анализ". А именно,
Код: |
Шипы
1.High[i]>High[i-1] and High[i]>High[i+1] > k*ADTR,
k=0,75,
ADTR - средний дневной истинный диапазон за 10 последних дней
2.High[i]-Close[i]>3*(Close[i]-Low[i])
|
Вообщем если кто-нибудь чем-нибудь сможет помочь буду весьма признателен. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Код: |
fractalmax = Ref(H, -1) < H AND Ref(H, 1) < H;
fractalmin = Ref(L, -1) > L AND Ref(L, 1) > L;
PlotShapes(fractalmax*shapeUpTriangle,colorGreen, 0,H);
PlotShapes(fractalmin*fractalmin,colorRed, 0,L); |
Попробуй так |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
dmitry_alexeevich
Зарегистрирован: 04.02.2012
Сообщения: 2
|
000 писал(а): |
Код: |
fractalmax = Ref(H, -1) < H AND Ref(H, 1) < H;
fractalmin = Ref(L, -1) > L AND Ref(L, 1) > L;
PlotShapes(fractalmax*shapeUpTriangle,colorGreen, 0,H);
PlotShapes(fractalmin*fractalmin,colorRed, 0,L); |
Попробуй так |
Спасибо, но это, к сожалению, немного не то, что я хотел. Я хотел, чтоб выделялся бар, максимум которого был бы выше пяти предыдущих максимумов и пяти последующих максимумов. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Тогда так
Код: |
fractalmax = Ref(HHV(H, 5), -1) < H AND Ref(HHV(H, 5), 5) < H;
fractalmin = Ref(LLV(L, 5), -1) > L AND Ref(LLV(L, 5), 5) > L;
Plot(C, "", colorBlack, styleCandle);
PlotShapes(fractalmax*shapeDownTriangle,colorGreen, 0,H);
PlotShapes(fractalmin*shapeUpTriangle,colorRed, 0,L);
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Константин
Зарегистрирован: 31.01.2012
Сообщения: 10
|
Подскажите, пожалуйста, как сделать, чтобы на графике чертилась горизонтальная линия на уровне "High" бара, у которого H выше H предыдущего бара и выше H последующего бара?
Т.е. Ref(H,-2)<Ref(H,-1) AND H<Ref(H,-1).
При возникновении следующей подобной ситуации линия переходит на новый уровень |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Код: |
qqq = ValueWhen(Ref(H,-2) < Ref(H, -1) AND H < Ref(H, -1)); |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Константин
Зарегистрирован: 31.01.2012
Сообщения: 10
|
000 писал(а): |
Код: |
qqq = ValueWhen(Ref(H,-2) < Ref(H, -1) AND H < Ref(H, -1)); |
|
Выдает ошибку!?
И как написать условие, что позиция открыта вчера.
Т.е.
Cover= " 1-е условие" AND "позиция открыта вчера"; |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Угу. Маленькая поправка
Код: |
qqq = ValueWhen(Ref(H,-2) < Ref(H, -1) AND H < Ref(H, -1), H);
|
Цитата: |
И как написать условие, что позиция открыта вчера.
Т.е.
Cover= " 1-е условие" AND "позиция открыта вчера";
|
Это сложнее. Можно написать, что после последнего сигнала на покупку уже начался новый день.
Код: |
NewDay = Ref(Day(), -1) != Day();
Buy = ...;
Sell = " 1-е условие" AND BarsSince(NewDay) < BarsSince(Buy)
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|