Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Помощь по программированию Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
Atol



Зарегистрирован: 18.09.2012
Сообщения: 13
Откуда: Липецк

СообщениеДобавлено: Вт Сен 25, 2012 8:50 pm Ответить с цитатой Вернуться к началу

Код:

// Задача - имея две последние точки построить линию тренда, а при появлении новой точки - построить новую линию тренда и т.д.
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

СообщениеДобавлено: Вт Сен 25, 2012 10:09 pm Ответить с цитатой Вернуться к началу

Не совсем понял. Надо это?
Код:

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
Откуда: Липецк

СообщениеДобавлено: Ср Сен 26, 2012 3:43 pm Ответить с цитатой Вернуться к началу

ниже


Последний раз редактировалось: Atol (Ср Сен 26, 2012 3:45 pm), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение
Atol



Зарегистрирован: 18.09.2012
Сообщения: 13
Откуда: Липецк

СообщениеДобавлено: Ср Сен 26, 2012 3:44 pm Ответить с цитатой Вернуться к началу

Atol писал(а):
Не совсем - Ваша формула рисует линию от Y0 к Y1, но требуется черить линию - продолжение тренда от Y1 до момента появления новой точки соответствующей UP == 1.
Спасибо.
Посмотреть профиль Отправить личное сообщение
Atol



Зарегистрирован: 18.09.2012
Сообщения: 13
Откуда: Липецк

СообщениеДобавлено: Ср Сен 26, 2012 8:53 pm Ответить с цитатой Вернуться к началу

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

СообщениеДобавлено: Ср Сен 26, 2012 9:27 pm Ответить с цитатой Вернуться к началу

Отлично написал!!!!

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Atol



Зарегистрирован: 18.09.2012
Сообщения: 13
Откуда: Липецк

СообщениеДобавлено: Чт Сен 27, 2012 6:59 pm Ответить с цитатой Вернуться к началу

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

СообщениеДобавлено: Чт Сен 27, 2012 9:07 pm Ответить с цитатой Вернуться к началу

Код:

UpB = UpB AND UpB1 AND BarIndex() < (BarCount - B_P);

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
av638



Зарегистрирован: 28.12.2012
Сообщения: 1

СообщениеДобавлено: Пт Дек 28, 2012 4:57 pm Ответить с цитатой Вернуться к началу

Подскажите,пожалуйста ,как в Амиброкере видеть объем продажи и объем купли отдельно?Ну ,в общем,анализ таблицы всех сделок.Неужели самому учиться программировать?А какие для этого функции,команды?Пришлите мне код программы.С самим Амиброкером 5.50 тоже еще не разобрался.В тоговле у меня есть доступ к Квику и Транзаку.Я даже из Квика экспортировал в Амиброкер график Сбербанка.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пт Дек 28, 2012 5:19 pm Ответить с цитатой Вернуться к началу

Цитата:
Подскажите,пожалуйста ,как в Амиброкере видеть объем продажи и объем купли отдельно?

Никак. Такие данные Квик в Ами не экспортирует. (((

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Aleksandr



Зарегистрирован: 13.11.2011
Сообщения: 99

СообщениеДобавлено: Пт Май 10, 2013 12:47 pm Ответить с цитатой Вернуться к началу

Здравствуйте . Есть выражение f = ( e-Cl ) , как рассчитать на AFL квадрат выражения ( e-Cl ) , чтобы это значение всавить в переменную f . На форуме подобных вопросов не встречал . Для начала хотел бы освоить калькулятор на AFL . Может есть какая ссылка .
Посмотреть профиль Отправить личное сообщение
Mechanic



Зарегистрирован: 10.06.2008
Сообщения: 359

СообщениеДобавлено: Пт Май 10, 2013 2:27 pm Ответить с цитатой Вернуться к началу

f = f * f;

С вас 5 баксов за идею. ))
Посмотреть профиль Отправить личное сообщение ICQ Number
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пт Май 10, 2013 3:24 pm Ответить с цитатой Вернуться к началу

Код:
 f = ( e-Cl )^2;

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Aleksandr



Зарегистрирован: 13.11.2011
Сообщения: 99

СообщениеДобавлено: Пт Май 10, 2013 6:31 pm Ответить с цитатой Вернуться к началу

Mechanic писал(а):
f = f * f;

С вас 5 баксов за идею. ))

Ну я просто спросил . Задал такой вопрос .
Посмотреть профиль Отправить личное сообщение
Aleksandr



Зарегистрирован: 13.11.2011
Сообщения: 99

СообщениеДобавлено: Пт Май 10, 2013 6:44 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Код:
 f = ( e-Cl )^2;


Спасибо
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen