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


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

СообщениеДобавлено: Пн Июл 28, 2014 12:05 pm Ответить с цитатой Вернуться к началу

Правильно уловил. Можно и так. Просто я эти ноты не люблю.

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



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

СообщениеДобавлено: Пн Июл 28, 2014 3:35 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Просто я эти ноты не люблю.

если не секрет - эта любовь полностью иррациональна и не имеет логического объяснения или есть что-то конкретное, что обуславливает более правильным не использовать ноты?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

иррациональна

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



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

СообщениеДобавлено: Вс Авг 10, 2014 2:31 pm Ответить с цитатой Вернуться к началу

Решил распознать в коде свечные паттерны.
Начал, как мне кажется, с самого простого:
Цитата:
Шаблон должен иметь два предыдущих и два последующих бара с более низкими максимумами (или более высокими минимумами, в случае нисходящего движения).
В покупающем шаблоне нас интересует только максимумы баров.
В продающем шаблоне нас интересует только минимумы баров.

Иными словами это же определение:
пятибарная последовательность, где центральный бар имеет более высокий максимум в случае восходящего шаблона и более низкий минимум в случае нисходящего шаблона.


код написал, он даже работает Laughing (правда пришлось искать чужой код - что бы подсмотреть как решить одну заморочку с которой я не мог справиться Embarassed ).

приведу код для отработки сигнала одного из шаблонов:
Код:
   //на ТЕКУЩЕМ БАРЕ CritDown - принимает значение TRUE, когда три бара назад сформировался шаблон.
   //При расчете шаблона текущий бар не используем, так как он не сформировался - и работаем с
   //самыми ближайшими полностью сформированными барами
CritDown = (Ref(High, -5) < Ref(High, -3)) AND
           (Ref(High, -4) < Ref(High, -3)) AND
           (Ref(High, -2) < Ref(High, -3)) AND
           (Ref(High, -1) < Ref(High, -3));

   //Если сработал шаблон, то получили значение, которое было 3 дня назад
   //Значение ValueDown на ТЕКУЩЕМ БАРЕ равно значению High три бара назад (при образовании шаблона)
ValueDown = ValueWhen(CritDown, Ref(High,-3), 1);


   //Если не использовать конструкцию: Ref(ValueDown, 3) != Ref(ValueDown, 2)
   //то рисуются стрелки на всех барах, пока не появится новый шаблон
   //например, как при отработки процедуры PLOT рисуются горизонтальные уровни
PlotShapes(IIf(Ref(ValueDown, 3) != Ref(ValueDown, 2), shapeHollowSmallDownTriangle, shapeNone), colorRed, 0, Ref(ValueDown, 3), -24);
Plot(Ref(ValueDown, 3), "Down line", ParamColor("Down Color",colorBlue), ParamStyle("Down Style", styleDashed));


Если рисовать процедурой
Plot(Ref(ValueDown, 2), "Down line", ParamColor("Down Color",colorBlue), ParamStyle("Down Style", styleDashed));
то линия начинает рисоваться начиная с бара, следующего за средним баром шаблона.
Если рисовать
Plot(Ref(ValueDown, 3), "Down line", ParamColor("Down Color",colorBlue), ParamStyle("Down Style", styleDashed));
то линия рисуется, начиная со среднего бара шаблона.


у меня возникли сложности с определением на каком баре какое значение возникает.

То, в чем я, похоже, сильно заблуждаюсь - по моему мнению, раскладка такая:
CritDown = ИСТИНА на текущем баре, когда шаблон сработал ТРИ бара назад.
Значение ValueDown на ТЕКУЩЕМ БАРЕ равно значению High ТРИ бара назад (при образовании шаблона).

И по моему мнению, при отрисовке линии, надо использовать обращение к прошлым значениям (то есть, Ref(ValueDown,-2)), а не заглядывание в будущее (то есть, Ref(ValueDown,2)).


(если бы не пример с аналогичным кодом на AFL, то до сих пор не смог бы сделать то, что мне требуется Sad )

Посему, вопросы:
Что не правильного в моем понимании бара, на которых CritDown и ValueDown принимают описанные выше значения при срабатывании шаблона?
В коде, приведенном выше, я правильно указал на каком баре принимают значения CritDown и ValueDown или не правильно?

Из-за полного, как выяснилось, непонимания бара с данными при отработки сигнала не берусь и другие шаблоны (где более одного бара) использовать Sad Crying or Very sad

Спасибо за ответ(ы).
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Авг 11, 2014 12:51 pm Ответить с цитатой Вернуться к началу

il-ir писал(а):

у меня возникли сложности с определением на каком баре какое значение возникает.

То, в чем я, похоже, сильно заблуждаюсь - по моему мнению, раскладка такая:
CritDown = ИСТИНА на текущем баре, когда шаблон сработал ТРИ бара назад.
Значение ValueDown на ТЕКУЩЕМ БАРЕ равно значению High ТРИ бара назад (при образовании шаблона).

Вот тут корень твоих заблуждений.
Шаблон сработал не 2 и не 3 бара назад. Он сработал только что. Это бар относительно которого ты определяешь шаблон был 3 бара назад.
il-ir писал(а):

И по моему мнению, при отрисовке линии, надо использовать обращение к прошлым значениям (то есть, Ref(ValueDown,-2)), а не заглядывание в будущее (то есть, Ref(ValueDown,2)).

Нет.
Объясню двумя способами.
1. Ты смотришь бар Ref(High, -3) Соответственно чтобы сдвинуть линию на него тебе надо совершить обратное действие т.е. Ref(ValueDown, 3)
2. Есть линия на графике. Чтобы сдвинуть ее вправо надо Ref(, -...), а чтобы сдвинуть влево Ref(, +...)

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



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

СообщениеДобавлено: Пн Авг 11, 2014 5:46 pm Ответить с цитатой Вернуться к началу

Спасибо, Олег.

Похоже, мне уже можно задумываться о создании "мемуаров" Smile с полезными советами (ну точнее не "мемуаров", а что-то типа ЧАВО или "секреты и советы" - что то на подобии FAQ или "tips and tricks").
По принципу:
задача такая.
Делаем так, потому что Олег сказал, что... Laughing
У тебя на сайте возможности блога есть? Ну или как-нибудь статьи писать?
А то в форуме ветку начнешь, так ее другие могут умными мыслями исписать вместо меня Laughing


Олег, поясни, пожалуйста, что возвращает функция ValueWhen.
В справке написано, что "Returns the value of the ARRAY when the EXPRESSION was true on the n -th most recent occurrence."
То есть, возвращает значение массива, когда EXPRESSION принимает значение ИСТИНА.
А что возвращается (или что происходит), когда EXPRESSION принимает значение ЛОЖЬ?
неопределенное значение?
в справке не нашел ответ на этот вопрос Sad
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Авг 11, 2014 10:52 pm Ответить с цитатой Вернуться к началу

Цитата:
У тебя на сайте возможности блога есть? Ну или как-нибудь статьи писать?

Пока нет, а надо?
Цитата:
Олег, поясни, пожалуйста, что возвращает функция ValueWhen.

"Значение когда".
Когда выражение выполняется принимает значение указанного массива и сохраняет это значение до тех пор, пока EXPRESSION снова не станет истинной.

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



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

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

000 писал(а):
Пока нет, а надо?

Сделаю немножко материалов - и в личку напишу Smile

вопрос по теме.
Можно из AFL узнать какой тайм фрейм выбран на графике?
сжимать и разжимать я научился Smile то есть, на 30-ти минутном графике перейти , к примеру, в 2-х часовой, что-то сделать и вернуться обратно в 30-ти минутный.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вс Авг 17, 2014 12:04 pm Ответить с цитатой Вернуться к началу

il-ir писал(а):
000 писал(а):
Пока нет, а надо?

Можно из AFL узнать какой тайм фрейм выбран на графике?

По моему нет.

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



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

СообщениеДобавлено: Ср Авг 20, 2014 5:52 pm Ответить с цитатой Вернуться к началу

Олег, а если написать:
Код:
Value = Ref(High, -3)

то переменная Value то же будет массивом?
Но в котором сегодня будут значения те, что были у High на три бара назад?

То есть, на текущем баре если смотреть значения массивов, то
High - это максимум в текущем баре
Value - это максимум в баре, который был три бара назад
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Авг 20, 2014 6:29 pm Ответить с цитатой Вернуться к началу

Value будет массив равный High но сдвинутый на 3 бара в право.

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



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

СообщениеДобавлено: Чт Авг 21, 2014 2:45 pm Ответить с цитатой Вернуться к началу

Подскажите, пожалуйста, можно ли написать цикл,который будет заглядывать вперёд? Допустим, открыта позиция BUY. Мне нужно, чтобы цикл пошёл вперёд, посмотрел: есть ли дальше SELL. Если есть, то вернул цену SELLPRICE c этого бара, а если нет, то дошёл бы до правого края и вернул NULL.
И ещё желательно, чтобы цикл совершал это действие за одно сканирование одного бара в тестере.
Посмотреть профиль Отправить личное сообщение
il-ir



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

СообщениеДобавлено: Чт Авг 21, 2014 3:54 pm Ответить с цитатой Вернуться к началу

icebraiker писал(а):
...который будет заглядывать вперёд?...

есть замечательная функция Ref( ARRAY, period ).
из описания: A positive period references "n" periods in the future; a negative period references "n" periods ago.
То есть - если отрицательное значение, то смотрим "n" баров назад, если положительное - то смотрим "n" баров вперед.

Подробно разбиралось выше.
Посмотреть профиль Отправить личное сообщение
icebraiker



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

СообщениеДобавлено: Чт Авг 21, 2014 4:40 pm Ответить с цитатой Вернуться к началу

Нет, этот вариант не подходит. В Ref( ARRAY, period ) надо указать period, т.е. на каком конкретно баре искать. В моём случае это неизвестно. Над этим вариантом я думал. Тут надо чтобы Олег или кто- то из гуру сказал своё мнение. У Олега в роботе на API есть цикл: Do - Wile. Я думаю, что он бы подошёл. Только как описать индекс ARRAY [i], чтобы он уходил вперёд? Я пробовал писать [i + k], но AFL выдаёт ошибку. Я набросал такой черновик:
k = 0;
pricesell = 0;
g = BarIndex();
Condend = (Условие правого края. Как-то нужно обозначить правый край графика);

do
{
j=g+k;
if(Sell[j] == 1)
pricesell = SellPrice[j];
k++;
} while(pricesell == 0 OR Condend != 1);


Последний раз редактировалось: icebraiker (Чт Авг 21, 2014 7:51 pm), всего редактировалось 2 раз(а)
Посмотреть профиль Отправить личное сообщение
X-Story



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

СообщениеДобавлено: Чт Авг 21, 2014 5:47 pm Ответить с цитатой Вернуться к началу

Всем привет!

ЧТо-то туплю по АЛертам. ВОт к примеру ТФ 10 мин.

Код:
AlertIf(RSIPSV>=50,
"EXEC  D:\\Program Files (x86)\\AmiBroker\\Bunner\\SignalUp10min.jpg", "Вверх", 0,1+2+4+8,1);


Нифига не выводит нарисованную мной картинку с текстом. А как просто рамку с текстом на центр экрана вывести, так и не понял.

Код:
AlertIf(RSIPSV>=50,
"SOUND D:\\Program Files (x86)\\AmiBroker\\Sound\\Signal10min.wav" , "Вверх", 0,1+2+4+8,1);


Звук выводится. но повторы не устраняются. Дербанит каждую минуту.


Последний раз редактировалось: X-Story (Чт Авг 21, 2014 6:35 pm), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen