Автор |
Сообщение |
Atol
Зарегистрирован: 18.09.2012
Сообщения: 13
Откуда: Липецк
|
Код: |
// Задача - имея две последние точки построить линию тренда, а при появлении новой точки - построить новую линию тренда и т.д.
for( i = 1; i < BarCount -1; i++ )
{
if(Up[i] == 1) // если на этом баре точка соответствующая условию
{
// Для построения линии нужны координаты 2ух точек X и Y для первой и X и Y для второй
// При этом вторая точка предыдущей линии становится первой точкой следующей
XUp0 = XUp1;
XUp1 = i;
YUp0 = YUp1;
YUp1 = H[i];
}
X=IIf(XUp0==0,0,XUp1-XUp0); // вычисляем количество баров между двумя точками
Y=YUp1-YUp0; // вычисляем изменение цены между двумя точками
Z=Y/X; // вычисляем изменение цены за 1 бар
Q=i-XUp1; // вычисляем количество баров от последней точки до текущего бара
iscomoe = YUp0+Z*Q; // вычисляем значения линии тренда для всех баров
}
Plot(iscomoe,"",colorWhite,styleLine); // пытаемся нарисовать все линии тренда
|
Рисует одну прямую линию вместо кривой - как вылечить?
С уважением,
Анатолий. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Не совсем понял. Надо это?
Код: |
Plot(C, "", colorBlack, styleCandle);
Up = Up1 = 0;
Dw = Dw1 = 0;
for( i = 1; i < 7; i++ )
{
if(i == 1)
{
Up = Ref(H, -1) < H AND Ref(H, 1) <= H;
}
else
{
Up1 = Ref(H, -i) < H AND Ref(H, i) < H;
Up = Up AND Up1;
}
}
function Line(x0, x1, y0, y1)
{
x = x1 - x0;
y = y1 - y0;
result = 0;
for(z = x0; z < x1; z++)
{
result[z] = y0 + (z - x0)*y/x;
}
return result;
}
XUp0 = XUp1 = 0;
YUp0 = YUp1 = H[1];
iscomoe = 0;
for( i = 1; i < BarCount -1; i++ )
{
if(Up[i] == 1)
{
XUp0 = XUp1;
XUp1 = i;
YUp0 = YUp1;
YUp1 = H[i];
iscomoe = iscomoe + Line(XUp0, XUp1, YUp0, YUp1);
}
}
Plot(iscomoe, "", colorRed);
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Atol
Зарегистрирован: 18.09.2012
Сообщения: 13
Откуда: Липецк
|
ниже |
Последний раз редактировалось: Atol (Ср Сен 26, 2012 3:45 pm), всего редактировалось 1 раз |
|
Посмотреть профиль Отправить личное сообщение |
|
Atol
Зарегистрирован: 18.09.2012
Сообщения: 13
Откуда: Липецк
|
Atol писал(а): |
Не совсем - Ваша формула рисует линию от Y0 к Y1, но требуется черить линию - продолжение тренда от Y1 до момента появления новой точки соответствующей UP == 1.
Спасибо. |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
Atol
Зарегистрирован: 18.09.2012
Сообщения: 13
Откуда: Липецк
|
Atol писал(а): |
Atol писал(а): |
Не совсем - Ваша формула рисует линию от Y0 к Y1, но требуется черить линию - продолжение тренда от Y1 до момента появления новой точки соответствующей UP == 1.
Спасибо. |
|
Методом тыка - сам пока не осознал как это работает - но получил вот:
Код: |
for( i = 1; i < BarCount; i++ )
{
XUp0=IIf(Up[i] == 1, XUp1, XUp0);
XUp1=IIf(Up[i] == 1, i, XUp1);
YUp0=IIf(Up[i] == 1, YUp1, YUp0);
YUp1=IIf(Up[i] == 1, H[i], YUp1);
X=IIf(XUp0==0,0,XUp1-XUp0);
Y=YUp1-YUp0;
Z=Y/X;
Q=i-XUp0;
iscomoe[i] = YUp0+Z*Q;
}
Plot(iscomoe,"",colorWhite,styleLine);
|
Не уверен что это полностью работает - проверить бы и может покрасивее написать?
С уважением,
Анатолий. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Отлично написал!!!! |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Atol
Зарегистрирован: 18.09.2012
Сообщения: 13
Откуда: Липецк
|
000 писал(а): |
Отлично написал!!!! |
Спасибо, но верится с трудом.
Вопрос - Есть вот такой код:
Код: |
// start Определение больших вершин для отрисовки
B_P=10;
for( y = 1; y <= B_P; y++ )
{
if(y == 1)
{
UpB = Ref(H, -1) <= H AND Ref(H, 1) < H;
DwB = Ref(L, -1) >= L AND Ref(L, 1) > L;
}
else
{
UpB1 = Ref(H, -y) < H AND Ref(H, y) < H;
UpB = UpB AND UpB1;
DwB1 = Ref(L, -y) > L AND Ref(L, y) > L;
DwB = DwB AND DwB1;
}
}
PlotShapes(shapeSmallDownTriangle*UpB, colorBlue, 0, H, offset = -13 );
PlotShapes(shapeSmallUpTriangle*DwB, colorDarkRed, 0, L, offset = -13 );
// end
|
То, что рисует код - смотрите в файле.
Проблема - вершина на которую указывает желтая стрелочка соответствует всем условиям Ref(H, -Y) < H и Ref(H, 1)...Ref(H,"8") <H, а вот условиям Ref(H, 9) <H и Ref(H, 10) <H - не соответствует (так как этих точек еще нет), но все равно рисует треугольник так, как будто соответствует.
Как лечить?
С уважением,
Анатолий. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Код: |
UpB = UpB AND UpB1 AND BarIndex() < (BarCount - B_P);
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
av638
Зарегистрирован: 28.12.2012
Сообщения: 1
|
Подскажите,пожалуйста ,как в Амиброкере видеть объем продажи и объем купли отдельно?Ну ,в общем,анализ таблицы всех сделок.Неужели самому учиться программировать?А какие для этого функции,команды?Пришлите мне код программы.С самим Амиброкером 5.50 тоже еще не разобрался.В тоговле у меня есть доступ к Квику и Транзаку.Я даже из Квика экспортировал в Амиброкер график Сбербанка. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цитата: |
Подскажите,пожалуйста ,как в Амиброкере видеть объем продажи и объем купли отдельно? |
Никак. Такие данные Квик в Ами не экспортирует. ((( |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Aleksandr
Зарегистрирован: 13.11.2011
Сообщения: 99
|
Здравствуйте . Есть выражение f = ( e-Cl ) , как рассчитать на AFL квадрат выражения ( e-Cl ) , чтобы это значение всавить в переменную f . На форуме подобных вопросов не встречал . Для начала хотел бы освоить калькулятор на AFL . Может есть какая ссылка . |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Mechanic
Зарегистрирован: 10.06.2008
Сообщения: 359
|
f = f * f;
С вас 5 баксов за идею. )) |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Aleksandr
Зарегистрирован: 13.11.2011
Сообщения: 99
|
Mechanic писал(а): |
f = f * f;
С вас 5 баксов за идею. )) |
Ну я просто спросил . Задал такой вопрос . |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Aleksandr
Зарегистрирован: 13.11.2011
Сообщения: 99
|
|
Посмотреть профиль Отправить личное сообщение |
|
|