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



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

СообщениеДобавлено: Ср Июл 14, 2010 8:55 am Ответить с цитатой Вернуться к началу

Доброго времени суток это мое дебютное сообщение на этом форуме. Решил перейти с WLD на amibroker и что-то у меня со скрипом получается

весь код с этого сайта
Пример первый
Код:

SetTradeDelays(0, 0, 0, 0);
FrUp  = H > Ref(H, -1) AND Ref(H, -1) > Ref(H, -2) AND H > Ref(H, 1) AND Ref(H, 1) > Ref(H, 2);

UpLevel = ValueWhen(FrUp, H);



получается frup некое условие и если H соответствует этому условию то UpLevel = H.
Но я не пойму в этом условии H > Ref(H, 1) AND Ref(H, 1) > Ref(H, 2) как это получается что амиброкер смотрит в будущее ведь H это настоящие.
Нечего не пойму понять!

Вопрос второй
в WLD все в массиве и чтобы обрабатывать бары применять к ним какието условия я должен делать все в цикле в коде что я написал выше я не вижу никого цикла.
Как это все работает????

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

Спасибо
Посмотреть профиль Отправить личное сообщение
snowkam



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

СообщениеДобавлено: Ср Июл 14, 2010 9:01 am Ответить с цитатой Вернуться к началу

И вот еще что чем отличается H от High?
Посмотреть профиль Отправить личное сообщение
Osiris



Зарегистрирован: 09.12.2009
Сообщения: 48
Откуда: Msk

СообщениеДобавлено: Ср Июл 14, 2010 10:14 am Ответить с цитатой Вернуться к началу

Привет!
H и Hight - это одно и то же.
Ref(H, 1) - это свеча сдвинутая на один бар вперёд, т.е. подглядывание.
Ref(H, -1) - сдвиг назад на один бар.

В твоём коде цикла нет, да и вообще он не обязателен, простые вещи можно без него закодить.

Коллекция исходных кодов, стянутая с Amibroker online library. Содержит около 580 файлов разной тематики, лежит на пауке:
http://forex.kbpauk.ru/showflat.php/Cat/0/Number/267946/an/0/page/1#Post267946
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Еще вот это почитай http://www.amisite.ru/begin/afl.htm

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



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

СообщениеДобавлено: Пт Июл 16, 2010 11:13 am Ответить с цитатой Вернуться к началу

вот еще что не понятно
предположим есть сигнал и нужно после сигнала покупать

buy = Cross(close, UpLevel);

что происходит если цена пересечет уровень с низу вверх и закроется выше уровня. То произойдет покупка. По логике так-как был close значит покупка произойдет по цене открытия следующего бара. Правильно?

А как написать если цена только пересекла с низу вверх а закрытие не произошло?

buy = Cross(high, UpLevel); так будет правильно?
а где и по какой цене произойдет сделка????

И как выставить лимитированную заявку на покупку?

buy = Cross(close, UpLevel);
BuyPrice = XXX; так будет правильно???
Посмотреть профиль Отправить личное сообщение
snowkam



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

СообщениеДобавлено: Пт Июл 16, 2010 11:42 am Ответить с цитатой Вернуться к началу

я почему спрашиваю не могу понять что там тестер выдает.
...
buy = Cross(close, UpLevel);

PlotShapes( shapeUpArrow * Buy + shapeDownArrow * Sell, IIf( Buy, colorGreen, colorRed ) );

Запускаю тестер и он мне все тестирует.

Рисует стрелку сделки где был сигнал
И в отчете пишет что купил он на этом же баре и по цене закрытия.
Как такое может произойти бар уже закрылся????!!!! он должен был купить на следующем баре.

В WLD я бы написал так

if CrossOver( bar, #close, UpLevel)
BuyAtMarker(bar+1,"");

если цена пересекла уровень и закрылась выше уровня значит купить на следующем баре!
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пт Июл 16, 2010 11:47 am Ответить с цитатой Вернуться к началу

snowkam писал(а):
вот еще что не понятно
предположим есть сигнал и нужно после сигнала покупать

buy = Cross(close, UpLevel);

что происходит если цена пересечет уровень с низу вверх и закроется выше уровня. То произойдет покупка. По логике так-как был close значит покупка произойдет по цене открытия следующего бара. Правильно?

А как написать если цена только пересекла с низу вверх а закрытие не произошло?

Если пишешь Cross(close, UpLevel) то никакие другие цены кроме закрытия код не смотрит и сделка будет осуществлена только если закрытие было ниже UpLevel а на следующем баре стала выше.
snowkam писал(а):

buy = Cross(high, UpLevel); так будет правильно?
а где и по какой цене произойдет сделка????

Эта запись будет обозначать покупку если хай бара превысил UpLevel. Сделка при такой записи будет по ценам сделак установленных в настройках по умолчанию.
snowkam писал(а):

И как выставить лимитированную заявку на покупку?

buy = Cross(close, UpLevel);
BuyPrice = XXX; так будет правильно???

Нет. Правильно так.
Код:

buy =  Cross(High, UpLevel);
BuyPrice = UpLevel;

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



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

СообщениеДобавлено: Пт Июл 16, 2010 1:15 pm Ответить с цитатой Вернуться к началу

Вот посмотри на скрине Бар который удовлетворил условию
Cross(close, UpLevl);

во втором скрине тестер осуществил сделку. Как он мог купить на этом же баре по цене закрытия. Он должен быть купить по какой угодно но только не по этой цене НА СЛЕДУЮЩЕМ баре.
Цена закрылась все бар в прошлом следующий бар настоящие здесь он должен был купить!!!!

Как сделать чтобы после сигнала покупка произошла по рынку на следующем баре?
Посмотреть профиль Отправить личное сообщение
snowkam



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

СообщениеДобавлено: Пт Июл 16, 2010 2:47 pm Ответить с цитатой Вернуться к началу

Опять вопрос, вы уж извините но он с картинками Smile

Вот взял код прям от сюда для экскрементов

var1=ValueWhen(
(Ref(H,-2) > Ref(H, -4)) AND
(Ref(H,-2) > Ref(H, -3)) AND
(Ref(H,-2) > Ref(H, -1)) AND
(Ref(H,-2) > H), Ref(H,-2),1);
FractalUp=HighestSince(var1>0,var1,1);


var2=
(Ref(L,-2) <= Ref(L, -1)) AND
(Ref(L,-2) <= Ref(L, 0)) AND
(Ref(L,-2) <= Ref(L, -3)) AND
(Ref(L,-2) <= Ref(L, -4));
FractalDown=ValueWhen( var2,Ref(L,-2),1);

Plot(FractalUp, "FrUp_V", colorWhite, 1);
Plot(FractalDown, "FrDown_V", colorWhite, 1);
Buy = Cross(Close, FractalDown);
Sell = Cross(Close, FractalUp);

PlotShapes( shapeUpArrow * Buy + shapeDownArrow * Sell, IIf( Buy, colorGreen, colorRed ) );


почему сделка произошла не по пересечению уровня а по пересечению линии?
Посмотреть профиль Отправить личное сообщение
Osiris



Зарегистрирован: 09.12.2009
Сообщения: 48
Откуда: Msk

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

Код:
Buy =  Cross(Ref(Close,-1), Ref(UpLevel,-1));
BuyPrice = Open;


Если прошлый бар закрылся выше прошлого уровня, то на открытии нового бара покупаем.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Сб Июл 17, 2010 8:04 am Ответить с цитатой Вернуться к началу

snowkam писал(а):
Вот посмотри на скрине Бар который удовлетворил условию
Cross(close, UpLevl);

во втором скрине тестер осуществил сделку. Как он мог купить на этом же баре по цене закрытия. Он должен быть купить по какой угодно но только не по этой цене НА СЛЕДУЮЩЕМ баре.
Цена закрылась все бар в прошлом следующий бар настоящие здесь он должен был купить!!!!

Как сделать чтобы после сигнала покупка произошла по рынку на следующем баре?

Тестер не настолько умный чтобы определять когда и почем покупать. По какой цене и когда он совершит сделку ему надо сообщать самостоятельно. Почитай http://www.amisite.ru/begin/bk_set3.htm
Чтобы сделка была на следующем баре по открытию ставь dalay 1, а price Open.

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



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

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

я все учусь на этих фракталах опять не выходит
вот условие

var1=ValueWhen(
(Ref(H,-2) > Ref(H, -4)) AND
(Ref(H,-2) > Ref(H, -3)) AND
(Ref(H,-2) > Ref(H, -1)) AND
(Ref(H,-2) > H), Ref(H,-2),1);
FractalUp=HighestSince(var1>0,var1,1);


var2=
(Ref(L,-2) <= Ref(L, -1)) AND
(Ref(L,-2) <= Ref(L, 0)) AND
(Ref(L,-2) <= Ref(L, -3)) AND
(Ref(L,-2) <= Ref(L, -4));
FractalDown=ValueWhen( var2,Ref(L,-2),1);

Plot(FractalUp, "FrUp_V", colorWhite, 1);
Plot(FractalDown, "FrDown_V", colorWhite, 1);

Buy = Cross(Close, FractalDown);
Sell = Cross(Close, FractalUp);

ну понятно покупаем если цена пересекает уровень FractalDown

Теперь маленько усложним задачу и вот здесь у меня затор к примеру если фрактал выше предыдущего и цена пересекает последний.
по идеи код должен быть такой
BuyTrendUp = FractalDown > ref(FractalDown, -1);
BuyCrossFractalDown = Cross(Close, FractalDown);

Buy = BuyTrendUp and BuyCrossFractalDown;
Sell = Cross(Close, FractalUp);

И вот эта вещь не работает ни одной сделки может я чтото не правильно сделал.
Посмотреть профиль Отправить личное сообщение
snowkam



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

СообщениеДобавлено: Вт Июл 20, 2010 4:03 pm Ответить с цитатой Вернуться к началу

ой извините это я запарился вопрос снят. такого не может быть!
Посмотреть профиль Отправить личное сообщение
snowkam



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

СообщениеДобавлено: Ср Июл 21, 2010 8:23 am Ответить с цитатой Вернуться к началу

а как написать если выражение верно то купить по цене такой?

Пример
если FractalDown > ref(FractalDown, -1); то выставить заявку на покупку по цене FractalUp
Посмотреть профиль Отправить личное сообщение
Osiris



Зарегистрирован: 09.12.2009
Сообщения: 48
Откуда: Msk

СообщениеДобавлено: Ср Июл 21, 2010 9:43 am Ответить с цитатой Вернуться к началу

snowkam писал(а):
а как написать если выражение верно то купить по цене такой?

Пример
если FractalDown > ref(FractalDown, -1); то выставить заявку на покупку по цене FractalUp


Код:
Buy = FractalDown > ref(FractalDown, -1);
BuyPrice = FractalUp;
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen