Начать новую тему Ответить на тему |
Список форумов AmiSite.ru » Вопросы по AFL |
На страницу Пред. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 След. |
Автор |
Сообщение |
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
HighestVisibleValue()
LowestVisibleValue() |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Swell
Зарегистрирован: 18.01.2013
Сообщения: 117
|
Эти функции я знаю. Но они вычисляют мин/макс только одного индикатора. А когда несколько индикаторов на графике, то непонятно, по какому из них вычислять.
Я думал, что может есть какая-нибудь готовая функция, которая прочитывает непосредственно минимальное и максимальное значения оси Y. Т.е. то, что уже амиброкер сам отмасштабировал. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Leonid
Зарегистрирован: 01.12.2011
Сообщения: 6
|
Добрый день. Олег, ну или другие гуру AFL, подскажите пожалуйста. Как (какой функцией) можно получить цены открытия и закрытия предыдущего дня. Именно дня, а не свечи и именно конец дня, а не цена в 23:45 (т.к. есть дни когда биржа работает короткий день). |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Leonid
Зарегистрирован: 01.12.2011
Сообщения: 6
|
Leonid писал(а): |
Добрый день. Олег, ну или другие гуру AFL, подскажите пожалуйста. Как (какой функцией) можно получить цены открытия и закрытия предыдущего дня. Именно дня, а не свечи и именно конец дня, а не цена в 23:45 (т.к. есть дни когда биржа работает короткий день). |
Кажется нашёл то, что нужно. Хэлпер крайне полезная вещь
// Пример 5. получить максимум предыдущего дня при работе на внутридневных данных
TimeFrameGetPrice( "H", inDaily, -1 ) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Alex14
Зарегистрирован: 12.11.2010
Сообщения: 90
|
Олег или еще кто из шарящих, подскажите, что не так делаю. Хочу сделать некий индикатор волатильности инструмента
Код: |
ATRR = ATR(15)/C*100*1.1;
K1= Sum (ATRR,200);
Plot(K1,"K1",colorIndigo); |
хочу чтобы в одном окне сравнивалось несколько символов пишу
Код: |
ATRR1 = ATR(15)/C*100*1.1;
K1= Sum (Foreign("FEES","ATRR1"),200); |
или так
Код: |
ATRR1 = Foreign("FEES", "ATR(15)/C*100*1.1");
K1 = Sum (ATRR1,200); |
совершенно другие значения, при этом мне нужно, чтобы считало как в первом случае. При этов второй и третий варианты совпадают. Спасибо |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Как я понял тебе надо получить ATR внешнего символа.
Поскольку функция ATR() использует не один ценовой массив для расчета (не только Close) она может работать только с ценами базового символа.
Для того чтобы расчитать ATR на ценах внешнего символа надо подменить цены открытого символа ценами внешнего. Это делается функцией SetForeign(). Разумеется потом надо вернуть оригинальные цены функцией RestorePriceArrays() |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Alex14
Зарегистрирован: 12.11.2010
Сообщения: 90
|
Спасибо, вроде заработало. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Alex14
Зарегистрирован: 12.11.2010
Сообщения: 90
|
Олег, в продолжение темы. Хотел для своих целей модифицировать твой код, вставляю вот это
Код: |
SetForeign("FEES");
ATRR1 = ATR(15)/C*100*1.1;
RestorePriceArrays ();
SetForeign("Gazp");
ATRR2 = ATR(15)/C*100*1.1;
RestorePriceArrays ();
SetForeign("MRKH");
ATRR3 = ATR(15)/C*100*1.1;
RestorePriceArrays ();
SetForeign("ROSN ");
ATRR4 = ATR(15)/C*100*1.1;
RestorePriceArrays ();
...........................
s1 = Sum (ATRR1,200);
s2 = Sum (ATRR2,200);
s3 = Sum (ATRR3,200);
s4 = Sum (ATRR4,200);
..............................
Plot(s1, "s1", ParamColor( "Color", colorCycle ));
Plot(s2, "s2", ParamColor( "Color", colorCycle ));
Plot(s3, "s3", ParamColor( "Color", colorCycle ));
Plot(s4, "s4", ParamColor( "Color", colorCycle )); |
все показывает и работает, но при попытке всавить в твой код, считает только один символ, может чего не досмотрел...
Код: |
dat = ParamDate("Start Data", "01.01.2000", 0);
symb1 = ParamStr("Symbol 1","");
symb1S = ParamToggle("Show symbol 1?", "No|Yes", 0);
symb1C = ParamColor("color symbol 1", colorBlue);
symb2 = ParamStr("Symbol 2", "");
symb2S = ParamToggle("Show symbol 2?", "No|Yes", 0);
symb2C = ParamColor("color symbol 2", colorBlue);
symb3 = ParamStr("Symbol 3", "");
symb3S = ParamToggle("Show symbol 3?", "No|Yes", 0);
symb3C = ParamColor("color symbol 3", colorBlue);
symb4 = ParamStr("Symbol 4", "");
symb4S = ParamToggle("Show symbol 4?", "No|Yes", 0);
symb4C = ParamColor("color symbol 4", colorBlue);
symb5 = ParamStr("Symbol 5", "");
symb5S = ParamToggle("Show symbol 5?", "No|Yes", 0);
symb5C = ParamColor("color symbol 5", colorBlue);
symb6 = ParamStr("Symbol 6", "");
symb6S = ParamToggle("Show symbol 6?", "No|Yes", 0);
symb6C = ParamColor("color symbol 6", colorBlue);
symb7 = ParamStr("Symbol 7", "");
symb7S = ParamToggle("Show symbol 7?", "No|Yes", 0);
symb7C = ParamColor("color symbol 7", colorBlue);
symb8 = ParamStr("Symbol 8", "");
symb8S = ParamToggle("Show symbol 8?", "No|Yes", 0);
symb8C = ParamColor("color symbol 8", colorBlue);
symb9 = ParamStr("Symbol 9", "");
symb9S = ParamToggle("Show symbol 9?", "No|Yes", 0);
symb9C = ParamColor("color symbol 9", colorBlue);
symb0 = ParamStr("Symbol 0", "");
symb0S = ParamToggle("Show symbol 0?", "No|Yes", 0);
symb0C = ParamColor("color symbol 0", colorBlue);
symb10 = ParamStr("Symbol 10", "");
symb10C = ParamColor("color symbol 10", colorWhite);
symb11 = ParamStr("Symbol 11", "");
symb11C = ParamColor("color symbol 11", colorWhite);
symb12 = ParamStr("Symbol 12", "");
symb12C = ParamColor("color symbol 12", colorWhite);
Vol = ParamToggle("Volume weighted", "No|Yes", 0);
spread = ParamToggle("spread", "No|Yes", 0);
SetForeign("symb1");
ATRR1 = ATR(15)/C*100*1.1;
RestorePriceArrays ();
SetForeign("symb2");
ATRR2 = ATR(15)/C*100*1.1;
RestorePriceArrays ();
SetForeign("symb3 ");
ATRR3 = ATR(15)/C*100*1.1;
RestorePriceArrays ();
SetForeign("symb4 ");
ATRR4 = ATR(15)/C*100*1.1;
RestorePriceArrays ();
SetForeign("symb5 ");
ATRR5 = ATR(15)/C*100*1.1;
RestorePriceArrays ();
SetForeign("symb6 ");
ATRR6 = ATR(15)/C*100*1.1;
RestorePriceArrays ();
SetForeign("symb7 ");
ATRR7 = ATR(15)/C*100*1.1;
RestorePriceArrays ();
SetForeign("symb8 ");
ATRR8 = ATR(15)/C*100*1.1;
RestorePriceArrays ();
SetForeign("symb9 ");
ATRR9 = ATR(15)/C*100*1.1;
RestorePriceArrays ();
SetForeign("symb0 ");
ATRR0 = ATR(15)/C*100*1.1;
RestorePriceArrays ();
SetForeign("symb10 ");
ATRR10 = ATR(15)/C*100*1.1;
RestorePriceArrays ();
SetForeign("symb11 ");
ATRR11 = ATR(15)/C*100*1.1;
RestorePriceArrays ();
SetForeign("symb12 ");
ATRR12 = ATR(15)/C*100*1.1;
RestorePriceArrays ();
s1 = Sum (ATRR1,200);
s2 = Sum (ATRR2,200);
s3 = Sum (ATRR3,200);
s4 = Sum (ATRR4,200);
s5 = Sum (ATRR5,200);
s6 = Sum (ATRR6,200);
s7 = Sum (ATRR7,200);
s8 = Sum (ATRR8,200);
s9 = Sum (ATRR9,200);
s0 = Sum (ATRR0,200);
s10 = Sum (ATRR10,200);
s11 = Sum (ATRR11,200);
s12 = Sum (ATRR12,200);
if(symb1S)
{ Plot(s1, symb1, symb1C);
PlotText(symb1, BarCount, LastValue(s1), symb1C);}
if(symb2S)
{ Plot(s2, symb2, symb2C);
PlotText(symb2, BarCount, LastValue(s2), symb2C);}
if(symb3S)
{ Plot(s3, symb3, symb3C);
PlotText(symb3, BarCount, LastValue(s3), symb3C);}
if(symb4S)
{ Plot(s4, symb4, symb4C);
PlotText(symb4, BarCount, LastValue(s4), symb4C);}
if(symb5S)
{ Plot(s5, symb5, symb5C);
PlotText(symb5, BarCount, LastValue(s5), symb5C);}
if(symb6S)
{ Plot(s6, symb6, symb6C);
PlotText(symb6, BarCount, LastValue(s6), symb6C);}
if(symb7S)
{ Plot(s7, symb7, symb7C);
PlotText(symb7, BarCount, LastValue(s7), symb7C);}
if(symb8S)
{ Plot(s8, symb8, symb8C);
PlotText(symb8, BarCount, LastValue(s8), symb8C);}
if(symb9S)
{ Plot(s9, symb9, symb9C);
PlotText(symb9, BarCount, LastValue(s9), symb9C);}
if(symb0S)
{ Plot(s0, symb0, symb0C);
PlotText(symb0, BarCount, LastValue(s0), symb0C);}
if(symb10 != "")
{ Plot(s10, symb10, symb10C);
PlotText(symb10, BarCount, LastValue(s10), symb10C);}
if(symb11 != "")
{ Plot(s11, symb11, symb11C);
PlotText(symb11, BarCount, LastValue(s11), symb11C);}
if(symb12 != "")
{ Plot(s12, symb12, symb12C);
PlotText(symb12, BarCount, LastValue(s12), symb12C);} |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Конечно недосмотрел.
Вот тут
Код: |
SetForeign("symb1"); |
кавычки зачем? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Alex14
Зарегистрирован: 12.11.2010
Сообщения: 90
|
Спасибо, точно)) Пример из хелпера ввел в заблуждение... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Swell
Зарегистрирован: 18.01.2013
Сообщения: 117
|
Олег. А как в амиброкере обстоят дела с типами данных?
Как я понял, тип "number" включает в себя и целочисленные значения (integer), и дробные (real). Но тогда непонятно, какие они могут принимать максимальные значения.
Просто я заметил, что если число больше 9999, то начинает искажаться дробная часть. Возникает вопрос - может не стоит работать с дробными числами выше 9999? В мануале я не нашёл об этом никакой информации, кроме того, что есть такой тип данных "number". Хотя в описании любого языка указывается, какие типы данных в нём есть и какие они могут принимать значения (в каком диапазоне).
Нет ли у тебя какой-нибудь информации об этом? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
На сколько помню все ограничения в разрядности. 32 бита и все с этим связанное. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
il-ir
Зарегистрирован: 28.05.2013
Сообщения: 189
|
подскажите, пожалуйста, в чем ошибка в коде?
PeriodAPC=20;
SignalTop = abs(H - Ref(H, -PeriodAPC));
NoiseTop = Sum(abs(H – Ref(H, -1)), PeriodAPC);
После проверки синтаксиса, курсор стоит в третьей строчке перед первым знаком минус, но после пробела ("-" в коде выделен таким способом) и выдается ошибка 32 "Синтаксическая ошибка. Возможно, пропущена точка с запятой в конце предыдущей строки" (Error 32. Syntax error, probably missing semicolon at the end of the previous line).
Полный текст сообщения об ошибке:
Ln: 3, Col: 22 : Error 32. Syntax error, unexpected $end. Is there semicolon missing ft the end of the previous line?
(перевод сообщения об ошибке:
строка 3, колонка 22 : Ошибка 32, неожиданный $end. Может быть пропущена точка с запятой в конце предыдущей строки?
В чем может быть ляп?
Заранее спасибо за ответ(ы).
Добавлено.
Занятно, если закомментировать строку с ошибкой, то при проверке синтаксиса появляется ошибка 32 в строке 4, но эта строка 4 почти полностью идентична строке 2 (только массив High заменен на массив Close):
PeriodAPC=20;
SignalTop = abs(H - Ref(H, -PeriodAPC));
//NoiseTop = Sum(abs(H – Ref(H, -1)), PeriodAPC);
SignalBot = abs(C – Ref(C, - PeriodAPC));
Может у меня на компе что-то с синтаксическим анализатором AFL случилось? Например, по выходным он берет отгул и не работает |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
У тебя в третьей строке кокой то не правильный минус.
Копирую твой код в AFL editor, проверяю. Ругается. Удаляю минус, пишу по новому. Все ОК
Так работает.
Код: |
PeriodAPC = 20;
SignalTop = abs(H - Ref(H, -PeriodAPC));
NoiseTop = Sum(abs(H - Ref(H, -1)), PeriodAPC);
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
il-ir
Зарегистрирован: 28.05.2013
Сообщения: 189
|
Спасибо, Олег.
Все перепробовал, но заменить символ - не догадался
Видимо что-то скопировал с инета, - возможно, что там как раз какой-то левый знак минус и появился
Кстати, такое качество перевода с англ. на русский, как в моем сообщении с вопросом пойдет для перевода файла справки? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
Начать новую тему Ответить на тему |
Список форумов AmiSite.ru » Вопросы по AFL |
На страницу Пред. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 След. |
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|