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


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

СообщениеДобавлено: Чт Апр 28, 2011 8:38 am Ответить с цитатой Вернуться к началу

Так нельзя писать
Код:
IIf(SignBuy == 1, PlotShapes(shapeUpArrow * SignBuy, colorGreen, 0, L, -17), Null); //Рисуем Бай сигнал
 IIf(SignSell == 1, PlotShapes(shapeDownArrow * SignSell, colorRed, 0, H, -17), Null); //Рисуем Селл сигнал

Потом напишу почему....

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



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

СообщениеДобавлено: Чт Апр 28, 2011 8:49 am Ответить с цитатой Вернуться к началу

cowboy писал(а):
Все как бы работает, но есть одно НО!, понять не могу что это, скорее всего баг Ами...

Может кто попробует у себя, чтобы убедиться, что это все таки баг?

Попробовал, есть тонкие красные стрелочки на каждом баре, если в начало кода вставить строчку
SetBarsRequired(sbrAll,sbrAll);
и этим заставить Ами учитывать все бары, они перестают пропадать и рисуются стабильно.
Может это и глюк Ами, не знаю, но лучше всё же сначала вычислять массив, а потом плотить его, а не Plot внутри IIF. И взгляни в хелпе, наводишь курсор на IIF в редакторе и жмешь F1:
Please note that IIF is a function - so the result of evaluation is returned by that function and should be assigned to some variable. IIf always evaluates both TRUE_PART and FALSE_PART, even though it returns only one of them. Because of this, you should watch for undesirable side effects. The following example shows one common error made with IIF function: IIF( condition, result = 7, result = 9 ); // THIS IS WRONG Correct usage is: result = IIF( condition, 7, 9 ); /* 7 or 9 is *returned* and assigned to a variable depending on condition */
Посмотреть профиль Отправить личное сообщение
cowboy



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

СообщениеДобавлено: Ср Май 04, 2011 1:52 pm Ответить с цитатой Вернуться к началу

Всем Привет! Съездил не много отдохнул, на майские праздники... приступим к работе со свежими силами..
Посмотреть профиль Отправить личное сообщение
cowboy



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

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

Я тут так то кодю во всю уже разные простые вещи...базовых функций для этого оказалось вполне достаточно, вот попробывал закодить Импульсную систему элдера (Окрашает бар в зеленый цвет если MA + MACD растет, в красный - если они падают, и в синий - если разнонаправленное движение), получился бред какой то, опять перерисовывает понять не могу почему... может кто скажет где ошибка?

__________________________________

Код:

Fast_MACD = Param( "Fast avg", 12, 2, 200, 1 );
Slow_MACD = Param( "Slow avg", 26, 2, 200, 1 );
SignalLine_MACD = Param( "Signal avg", 9, 2, 200, 1 );
EMA_Periods = Param( "EMA", 12, 2, 200, 1 );

fl = Fast_MACD;
sl = Slow_MACD;
sil = SignalLine_MACD;
ep = EMA_Periods;

//-----------------------------------------------------------------------

sil_l = Ref(Signal(fl,sl,sil), 0); // текущее значение сигнальной линии
sil_p = Ref(Signal(fl,sl,sil), -1); // предыдущее значение сигнальной линии

ep_l = Ref(EMA(C, ep), 0); // текущее значение EMA
ep_p = Ref(EMA(C, ep), -1); // предыдущее значение EMA

//-----------------------------------------------------------------------

Rise = IIf((sil_l > sil_p & ep_l > ep_p), 1, Null);
Fall = IIf((sil_l < sil_p & ep_l < ep_p), 1, Null);
None = IIf((sil_l > sil_p & ep_l < ep_p) OR (sil_l < sil_p & ep_l > ep_p), 1, Null);

PlotOHLC( Rise*Open, Rise* High, Rise* Low, Rise* Close, "Rise", colorGreen, styleCandle );
PlotOHLC( Fall*Open, Fall* High, Fall* Low, Fall* Close, "Fall", colorRed, styleCandle );
PlotOHLC( None*Open, None* High, None* Low, None* Close, "None", colorBlue, styleCandle );
Посмотреть профиль Отправить личное сообщение
cowboy



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

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

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


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

СообщениеДобавлено: Вс Май 08, 2011 9:37 pm Ответить с цитатой Вернуться к началу

Код:

fl = Param( "Fast avg", 12, 2, 200, 1 );
sl = Param( "Slow avg", 26, 2, 200, 1 );
sil = Param( "Signal avg", 9, 2, 200, 1 );
ep = Param( "EMA", 12, 2, 200, 1 );

//-----------------------------------------------------------------------

sil = Signal(fl, sl, sil);

ep = EMA(C, ep);
 
//-----------------------------------------------------------------------

Rise = sil > Ref(sil, -1) AND ep > Ref(ep, -1);
Fall = sil < Ref(sil, -1) AND ep < Ref(ep, -1);
 

Color = IIf(Rise, colorGreen, IIf(Fall, colorRed, colorBlue));
SetBarFillColor(IIf(C > O, Color, colorWhite));

Plot(C, "Close", Color, styleCandle);

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



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

СообщениеДобавлено: Ср Май 11, 2011 1:22 pm Ответить с цитатой Вернуться к началу

Олег Привет! Спасибо за код, делаю пока что много "лишних тело-движений", т.е. код получается не компактным...
Есть пара вопросов:
Как вставлять код на форум чтобы был как у тебя в посте?

В прошлом моем "творении" я использовал условие для сигнала Bar(-2) < Bar(-1) .. в этом коде я специально сделал условие Bar(-1) < Bar(0), думал можт кто заметит и поправит....просто я не знаю как по идеи правильно, вроде нулевой бар еще не сформирован же, т.е. правильней составлять условия -2<-1 или все же -1<0 ?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Код:

 Plot(C, "Close", ColorBlack, styleCandle);

На счет Bar(-1) < Bar(0)
Если сделка планируется по закрытию бара, то можно и 0 Если внутри бара, то с прошлого бара. Есть случаи когда можно и не по закрытию но 0. Например условие High > Ref(High, -1). Если на текущем (строящемся) баре хай стал выше прошлого, то до закрытия он уже ниже никак не станет.

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



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

СообщениеДобавлено: Вс Май 22, 2011 8:20 pm Ответить с цитатой Вернуться к началу

Парни, а как в ами свой индекс сделать? Только через AddToComposite? ..если у меня индекс предполагает 200 бумаг, и этих индексов должно быть 30...этож месяц делать надо будет.. Shocked есть иные способы, или как можно этот процесс автоматизировать?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Через AddToComposite не обязательно. Можно через Foreign()
Вот пример
Как автоматизировать.... А бог его знает. Зависит от того какой индекс....

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



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

СообщениеДобавлено: Пн Май 23, 2011 8:05 pm Ответить с цитатой Вернуться к началу

Олег спасибо за ссылку! Что то не видел этого на сайте.. Решил не изобретать велосипед заново, а взял твой код в качестве шаблона..
В программировании оказалось это очень полезно..Smile
Пара вопросов тебе, если разрешишь..

000 писал(а):

Зависит от того какой индекс....


Эт как? Всмысле аверидж или взвешанный?

Можно ли индекс использовать не как индюк, а как инструмент, т.е. к нему применять индюки?

Создал пару индексов по твоему шаблону, можно ли теперь их как нибудь "склеить", что то код такой придумать не могу, или придется фактически новый создавать , тупо копируя все бумаги в один?

И еще, могу ли я в коде как то использовать свои кастомные индюки, т.е. как функцию, например MA + MY_INDICATOR, если он у меня сохранен в трее инструментов, или каждый раз код дублировать нужно?
Посмотреть профиль Отправить личное сообщение
cowboy



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

СообщениеДобавлено: Пн Май 23, 2011 9:52 pm Ответить с цитатой Вернуться к началу

И забыл еще, можно ли в одном окне совмещать несколько инструментов чтобы они не плясали относительно друг друга при прокрутке графика, а были статичны?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Конечно можно. Более того. Оно в принципе само получится. Это чтобы плясали надо специально использовать при выводе (ф-ция Plot) стиль styleOwnScale

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


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

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

cowboy писал(а):

Эт как? Всмысле аверидж или взвешанный?

В смысле возможно создать некий индекс милионом способов. Что такое индекс? Это некая сумма разных инструментов. А суммировать их можно как угодно в зависимости что ищем..
cowboy писал(а):

Можно ли индекс использовать не как индюк, а как инструмент, т.е. к нему применять индюки?

Вот если его использовать как инструмент, то тогда проще создать индекс как отдельную бумагу при помощи AddToComposite(). Тогда к нему можно применять любые обычные индикаторы. Если индекс вычисляется в индикаторе, то придется писать отдельно код индикатора именно для этого случая.

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



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

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

Всем привет! Давно здесь не был))
Спасибо всем, кто помогал мне вникнуть в это интересное занятие, сейчас программирую уже на C# Smile
По сабжу, все оказалось более чем просто, берем самый простой пример и разбираем построчно, далее берем пример сложнее и проделываем тоже самое, понимание, как оказалось приходит само-собой...и так далее, вперед к новым вершинам...
Некоторые вопросы конечно будут возникать, но всегда найдутся хорошие люди на форумах, которые обязательно подскажут Wink
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen