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



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

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

Доброго времени суток!
Нужна помощь в написании индикаторов, естественно не на альтруистических началах, однако, помимо кода нужны пояснения и ответы на кучу уточняющих вопросов.
Т.е. программирование задачи и обучение AFLю на примере ее же реализации.
С уважением,
Анатолий
(г. Липецк)
8 910 354 01 75
atol79@rambler.ru
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Сен 20, 2012 12:00 am Ответить с цитатой Вернуться к началу

Привет.
Давай свои вопросы или описание индикатора. Пока даром. ))))

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



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

СообщениеДобавлено: Чт Сен 20, 2012 8:40 am Ответить с цитатой Вернуться к началу

000 писал(а):
Привет.
Давай свои вопросы или описание индикатора. Пока даром. ))))


Признателен и заранее благодарен.
Если позволите - излагать суть задачи буду блоками - так как иначе получиться слишком комплексно.

Задача:
Построить, по выбранным точкам (1), на протяжении всего массива (2)(графика) линии поддержки и споротивления с продолжением вправо до пересечения с графиком цен.

Условие (1):
Выбор точек для построения линий по следующим критериям
(H,-6) < H > (H,+6) and
(H,-5) < H > (H,+5) and
(H,-4) < H > (H,+4) and
(H,-3) < H > (H,+3) and
(H,-2) < H > (H,+2) and
(H,-1) <=H> (H,+1)

(C,-6) > C < (C,+6) and
(C,-5) > C < (C,+5) and
(C,-4) > C < (C,+4) and
(C,-3) > C < (C,+3) and
(C,-2) > C < (C,+2) and
(C,-1) => C < (C,+1)
Над (для H) и под (для C) точками соответствующими данным условиям отобразить цифру шесть - "6", для H - colorDarkGreen и для C - colorDarkGreen цветов.

Конкретизация условия (2):
Построение линий осуществлять от предыдущей точки к последующей, с продолжением линии вправо до пересечения с графиком цен.
Цвет линий сопротивления - colorDarkGreen
Цвет линий поддержки - colorDarkRed

Условие (3) - опциональное:
Если линия между двумя точками пересеклась с графиком цены, то такую линию не отображать.

С уважением,
Анатолий.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Уточни.
Вот нашли 2 точки
(H,-6) < H > (H,+6) and
(H,-5) < H > (H,+5) and
(H,-4) < H > (H,+4) and
(H,-3) < H > (H,+3) and
(H,-2) < H > (H,+2) and
(H,-1) <=H> (H,+1)

(C,-6) > C < (C,+6) and
(C,-5) > C < (C,+5) and
(C,-4) > C < (C,+4) and
(C,-3) > C < (C,+3) and
(C,-2) > C < (C,+2) and
(C,-1) => C < (C,+1)
и соединяем их линией?
А если между несколькими точками
(H,-6) < H > (H,+6) and
(H,-5) < H > (H,+5) and
(H,-4) < H > (H,+4) and
(H,-3) < H > (H,+3) and
(H,-2) < H > (H,+2) and
(H,-1) <=H> (H,+1)
нет точек
C ???
Рисуем до пересечения? Линий получиться много и наверняка некоторые никогда не пересекут график....

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



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

СообщениеДобавлено: Пт Сен 21, 2012 7:46 am Ответить с цитатой Вернуться к началу

000 писал(а):
Уточни.
Вот нашли 2 точки
(H,-6) < H > (H,+6) and
(H,-5) < H > (H,+5) and
(H,-4) < H > (H,+4) and
(H,-3) < H > (H,+3) and
(H,-2) < H > (H,+2) and
(H,-1) <=H> (H,+1)

(C,-6) > C < (C,+6) and
(C,-5) > C < (C,+5) and
(C,-4) > C < (C,+4) and
(C,-3) > C < (C,+3) and
(C,-2) > C < (C,+2) and
(C,-1) => C < (C,+1)
и соединяем их линией?
А если между несколькими точками
(H,-6) < H > (H,+6) and
(H,-5) < H > (H,+5) and
(H,-4) < H > (H,+4) and
(H,-3) < H > (H,+3) and
(H,-2) < H > (H,+2) and
(H,-1) <=H> (H,+1)
нет точек
C ???
Рисуем до пересечения? Линий получиться много и наверняка некоторые никогда не пересекут график....


Извиняюсь и чтобы не было путаницы прошу вместо "C" читать "L".
Точки "H" соединяем только с точками "H", а "L" только с "L".
Спасибо.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пт Сен 21, 2012 11:54 am Ответить с цитатой Вернуться к началу

Т.е. соединяем только соседние H и соседние L ???

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



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

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

000 писал(а):
Т.е. соединяем только соседние H и соседние L ???


Да, соседcтвующие H между собой - получаются линии сопротивления,
а
соседствующие L между собой - получаются линии поддержки,
и
продлеваем получающиеся линии вправо в бесконечность - некоторые пересекутся с графиком цены.
Посмотреть профиль Отправить личное сообщение
Atol



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

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

Доброго времени суток!
Вопрос №2 - по timeFrame'ам:
Как работая с визуализацией массива дневного графика рассчитать для каждого дневного Bar'а среднюю цену на основе составляющих его минутных данных?
Формула средней цены: (P1*V1+...+P60*V60)/(V1+...+V60)
С уважением,
Анатолий.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Вот смотри. Линий получается дохрена и анализировать каждую до пересечения это целый отдельный геморой.
Давай пока просто нарисуем линии уходящие в право.
Т.к. Линий очень много, то я пока нарисовал только линии идущие по H
Код:

SetBarsRequired(sbrAll, sbrAll);

Up = Ref(H,-6) < H AND Ref(H,-5) < H AND Ref(H,-4) < H AND Ref(H,-3) < H AND Ref(H,-2) < H AND Ref(H,-1) <= H AND
   Ref(H, 6) < H AND Ref(H, 5) < H AND Ref(H, 4) < H AND Ref(H, 3) < H AND Ref(H, 2) < H AND Ref(H, 1) < H;
Dw = Ref(L,-6) > L AND Ref(L,-5) > L AND Ref(L,-4) > L AND Ref(L,-3) > L AND Ref(L,-2) > L AND Ref(L,-1) >= L AND
   Ref(L, 6) > L AND Ref(L, 5) > L AND Ref(L, 4) > L AND Ref(L, 3) > L AND Ref(L, 2) > L AND Ref(L, 1) > L;
// Описываем точки

// задаем переменные используемые в цикле
CountUp = 0;
CountDw = 0;
XUp0 = XUp1 = YUp0 = YUp1 = 0;
// главный цикл. Просматриваем последние 300 баров...
for( i = BarCount - 300; i < BarCount - 7; i++ )
{
  if(Up[i] == 1) // если на этом баре точка H
  {
// Для построения линии нужны координаты 2ух точек X и Y для первой и X и Y для второй
// При этом вторая точка предыдущей линии становится первой точкой следующей
    XUp0 = XUp1;
    XUp1 = i;
    YUp0 = YUp1;
    YUp1 = H[i];
    CountUp++; // Это счетчик найденных точек
    if(CountUp >= 2) // если уже нашли минимум 2 точки, то начинаем рисовать линии
    {
      Plot(LineArray(XUp0, YUp0, XUp1, YUp1, extend = 1), "", colorRed);
    }
  }
}

Plot(C, "", colorBlack, styleCandle);

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



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

СообщениеДобавлено: Пн Сен 24, 2012 8:48 am Ответить с цитатой Вернуться к началу

1)
000 писал(а):

if(Up[i] == 1) // если на этом баре точка H
[/code]

Error 10. Subscript out of range. You must not access array elements outside 0..(BarCount-1) range.
??? как поправить ???

2)
Up = Ref(H,-6) < H AND Ref(H,-5) < H AND Ref(H,-4) < H AND Ref(H,-3) < H AND Ref(H,-2) < H AND Ref(H,-1) <= H AND
Ref(H, 6) < H AND Ref(H, 5) < H AND Ref(H, 4) < H AND Ref(H, 3) < H AND Ref(H, 2) < H AND Ref(H, 1) < H;
Dw = Ref(L,-6) > L AND Ref(L,-5) > L AND Ref(L,-4) > L AND Ref(L,-3) > L AND Ref(L,-2) > L AND Ref(L,-1) >= L AND
Ref(L, 6) > L AND Ref(L, 5) > L AND Ref(L, 4) > L AND Ref(L, 3) > L AND Ref(L, 2) > L AND Ref(L, 1) > L;

Есть возможность описать эти формулы через цикл? Т.к. здесь только сравнение с 6ю значениями до и 6ю после - а если надо 20 до и 20 после - как быть?

3)
SetBarsRequired(sbrAll, sbrAll); - это как я понимаю мое название функции, не понятно что такое sbrAll - если далее по тексту нигде sbrAll не встречается?
Как это работает и для чего применяется?
С уважением,
Анатолий.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Сен 24, 2012 9:36 am Ответить с цитатой Вернуться к началу

Цитата:

Error 10. Subscript out of range. You must not access array elements outside 0..(BarCount-1) range.
??? как поправить ???

Вероятно у тебя на графике баров меньше 300.
for( i = BarCount - 300; i < BarCount - 7; i++ )
уменьшай цифру 300


Цитата:

3)
SetBarsRequired(sbrAll, sbrAll); - это как я понимаю мое название функции, не понятно что такое sbrAll - если далее по тексту нигде sbrAll не встречается?
Как это работает и для чего применяется?

Нет. Это функция которая отключит квик АФЛ.
Для ускорения расчетов Ами расчитывает ценовые массивы не целиком, а только те, которые считает необходимым. Если это график, то расчитывается только видимая часть и немного за ее границы, если тест системы, то только в пределах границ теста + небольшой запас.

На второй вопрос отвечу позже. Там писать много.

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



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

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

[quote="000"]
Цитата:

На второй вопрос отвечу позже. Там писать много.


Спасибо за пояснения по пунктам 1) и 3), пожалуйста прокомментируйте пункт 2) и Вопрос №2.

С уважением,
Анатолий
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Если надо с помощью цикла, то так
Код:

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;
    Dw = Ref(L, -1) > L AND Ref(L, 1) >= L;
  }
  else
  {
    Up1 = Ref(H, -i) < H AND Ref(H, i) < H;
    Up = Up AND Up1;
    Dw1 = Ref(L, -i) > L AND Ref(L, i) > L;
    Dw = Dw AND Dw1;
  }
}

PlotShapes(shapeSmallUpTriangle*Up, colorGreen, 0, H, offset = 5 );
PlotShapes(shapeSmallDownTriangle*Dw, colorRed, 0, L, offset = 5 );

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



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

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

000 писал(а):

{
Up1 = Ref(H, -i) < H AND Ref(H, i) < H;
Up = Up AND Up1;
Dw1 = Ref(L, -i) > L AND Ref(L, i) > L;
Dw = Dw AND Dw1;
}


О как ! Прошу пояснить как работает

Up = Up AND Up1;

С уважением,
Анатолий.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Первый раз (когда i = 1) получаем массив Up = Ref(H, -1) < H AND Ref(H, 1) <= H
В следующий прогон i = 2 и сравниваем H c хаями отстоящими на 2бара. Получаем массив Up1 который равен 1 в тех местах где H > хаев отстоящих на 2
Далее преобразуем массив Up так, что он равен 1 там где он и раньше был равен 1 и массив Up1 тоже равен 1
И.т.д.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen