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



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

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

Поскольку график цены показывается в абсолютных цифрах, масштаб постоянно меняется (в зависимости от предистории).
Иными словами свечка высотой в 1 см даже на одном инструменте разное обозначает.
Мог ли я как-то в ами узнать разницу между двумя ценами именно в процентах?
Типа тыкнул одну точку, потом вторую, а она взяла первую за 100% и показала, что вторая 80% (120%...)

Лениво в калькулятор бегать...
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Можно написать несложный код который будет показывать % изменение цены закрытия от начала, до конца выделенного диаппазона

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



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

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

000 писал(а):
Можно написать несложный код который будет показывать % изменение цены закрытия от начала, до конца выделенного диапазона


И правда AFL довольно мощный язык. Думал анализ, какая кнопка мыши нажата, сложной окажется. Ан нет. Как-то само собой получается.

Моя первая прога на AFL:

gmb = GetCursorMouseButtons();
cyp = GetCursorYPosition();

if( gmb == 9 )
if (StaticVarGet( "ButN" ))
{
StaticVarSet( "L2", cyp);
StaticVarSet( "ButN", 0);
}
else
{
StaticVarSet( "L1", cyp);
StaticVarSet( "L2", 0);
StaticVarSet( "ButN", 1);
}

Price1 = StaticVarGet( "L1" );
Price2 = StaticVarGet( "L2" );
Diff = Price2-Price1;

if (! (IsEmpty(Price1) OR IsEmpty(Price2)) )
if (Price1*Price2 > 0)
{
Ratio = round(Diff/Price1*1000)/10;
Diff=round(Diff*100)/100;
GfxTextOut(""+Diff+"руб : "+Ratio+"% ("+Price1+"\/"+Price2+")",1,30);
}
else
GfxTextOut(""+Price1+"\/",1,30);

Вот только пока не понял как отлаживать.
После изменения кода удаляю индиктор и кидаю на график снова.
Может можно "обновлять" его на графике?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Код:

Begin = BeginValue(C);
End = EndValue(C);
change = 100 * (End - Begin)/Begin;

Title = Name() + "  " + WriteVal(Change) + "%";

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


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

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

Или можно использовать коментарий
Код:

WriteVal( BeginValue( DateTime() ), formatDateTime );
WriteVal( EndValue( DateTime() ), formatDateTime );
"Precentage change of close is " +
WriteVal( 100 * (EndValue( Close ) - BeginValue( Close ))/BeginValue( Close ) ) + "%";

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



Зарегистрирован: 30.12.2008
Сообщения: 214
Откуда: Воображляндия

СообщениеДобавлено: Чт Янв 15, 2009 2:15 pm Ответить с цитатой Вернуться к началу

Обновленная версия кода с учетом лонгов и шортов:

Код:

_SECTION_BEGIN("Price");

Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
_SECTION_END();

Begin = BeginValue(C);
End = EndValue(C);
change1 = 100 * (End - Begin)/Begin;
change2 = 100 * (Begin - End)/END;

Title = "LONG= " + WriteVal(Change1) + "%" + "   SHORT=" + WriteVal(Change2) + "%";
Посмотреть профиль Отправить личное сообщение
Амиброкеровец



Зарегистрирован: 30.12.2008
Сообщения: 214
Откуда: Воображляндия

СообщениеДобавлено: Сб Фев 28, 2009 10:13 am Ответить с цитатой Вернуться к началу

Хочу сделать подобную штуку для объемов, те чтобы можно было легко сравнить объемы на росте и объемы на падении, выделив два диапазона

Общий принцип примерно понятен, только не знаю как сделать саму функцию суммирования объема от точки 1 до точки 2

Вот заготовка для кода (не моя), думаю ее будет легдо подправить. Кто может помочь?

Код:

SetChartOptions(0,chartShowDates);

Proc = Param("%", 50, 1, 100, 1);

FirstBar = BeginValue(BarIndex());
LastBar = EndValue(BarIndex());
Range = LastBar - FirstBar;
HighlightBar = BarIndex() == LastBar + round(Range*Proc/100);

Text = " ВЫБРАНО " + NumToStr(Range, format = 1) + " БАРОВ ";
Yposition = LastValue(ValueWhen(BarIndex() == LastBar, H + (H-L)*2));

Plot(C, "", colorBlack, styleCandle);
PlotText(text, LastBar, YPosition, colorBlack, colorLightYellow);

PlotShapes(shapeUpTriangle  *HighlightBar, colorRed, 0, H, 12);
PlotShapes(shapeDownTriangle*HighlightBar, colorRed, 0, L, 12);
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Один из вариантов
Код:

SetChartOptions(0,chartShowDates); // показывать дату

FirstBar = BeginValue(BarIndex()) == BarIndex(); // 1 в начале выделенного диапазона
LastBar = EndValue(BarIndex()) == BarIndex(); // 1 в конце выделенного диапазона
Range = Flip(FirstBar, LastBar); // 1 внутри выделенного диапазона

CumVolume = Cum(Nz(V)*Range);

Title = " Объем на выбранном диаппазоне " + NumToStr(CumVolume, format = 1);

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


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



Зарегистрирован: 30.12.2008
Сообщения: 214
Откуда: Воображляндия

СообщениеДобавлено: Вс Мар 01, 2009 12:44 am Ответить с цитатой Вернуться к началу

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



Зарегистрирован: 03.03.2009
Сообщения: 11
Откуда: Челяба

СообщениеДобавлено: Вт Апр 28, 2009 7:40 pm Ответить с цитатой Вернуться к началу

Слизал, пользуюсь, кланяюсь Wink
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen