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



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

СообщениеДобавлено: Вс Окт 18, 2015 2:13 pm Ответить с цитатой Вернуться к началу

Путаюсь приспособить под свои нужды индикатор anchored momentum, больше всего удобным кажется риббон. Сделать рибон простой по пересечению базовой линии довольно просто, но идея сделать такой чтобы он менял цвет в зависимости от того растет или падает значения anchored momentum.
Т.е. например пересекли базовую линию вверх и значение растет, цвет темно зеленый, значение стало падать - цвет светло зеленый, пересекли базовую линию цвет красный, значение стало расти, розовой.

Первая формула такая, она работает и имхо удобнее чем график с линией:

_SECTION_BEGIN("Anch.Mom.");
Mode = ParamToggle("Smoothing", "On|Off" );
MomPer = Param("Momentum Periods", 10, 1, 100, 1);
SmaPer = Param("Moving Average Periods", 7, 1, 1000, 1);
EmaPer = Param("Exponential Moving Average Periods", 7, 1, 1000, 1);
BaseLine = 0;
HiLine = 1;
Lowline = -1;

if( Mode == 1)
{
Mom = 100 * ((Close / MA(Close, (2 * MomPer) + 1) ) - 1);
}
else
{
Mom = 100 * ((EMA(Close, EmaPer) / MA(Close, (2 * MomPer) + 1) ) - 1);
}
uptrend= (mom > baseline);
downtrend= (mom < baseline);
Plot( 2, "ribbon", IIf( uptrend, colorGreen, IIf( downtrend, colorRed, 0 )), styleOwnScale|styleArea|styleNoLabel, -0.5, 100 );

_SECTION_END();


А со второй у меня чего-то проблемы большие...

_SECTION_BEGIN("Anch.Mom.");
Mode = ParamToggle("Smoothing", "On|Off" );
MomPer = Param("Momentum Periods", 10, 1, 100, 1);
SmaPer = Param("Moving Average Periods", 7, 1, 1000, 1);
EmaPer = Param("Exponential Moving Average Periods", 7, 1, 1000, 1);
BaseLine = 0;
HiLine = 1;
Lowline = -1;

if( Mode == 1)
{
Mom = 100 * ((Close / MA(Close, (2 * MomPer) + 1) ) - 1);
}
else
{
Mom = 100 * ((EMA(Close, EmaPer) / MA(Close, (2 * MomPer) + 1) ) - 1);
}

uptrend= (mom > baseline);
downtrend= (mom < baseline);
upline=mom(C, momper) > Ref(mom(C, momper), -1);
downline=mom(C, momper) > Ref(mom(C, momper), -1);

Plot( 2, "ribbon", IIf( uptrend AND Upline, colorDarkGreen), if (uptrend AND downline, colorLime), IIf( downtrend AND upline, colorRose ) IIf( downtrend AND downline, colorRed, 0 )), styleOwnScale|styleArea|styleNoLabel, -0.5, 100 );

_SECTION_END();


Во-первых ругается что mom не функция, а почему это? Shocked
Посмотреть профиль Отправить личное сообщение
Atlasraketa



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

СообщениеДобавлено: Вс Окт 18, 2015 2:17 pm Ответить с цитатой Вернуться к началу

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


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

СообщениеДобавлено: Вс Окт 18, 2015 6:44 pm Ответить с цитатой Вернуться к началу

Эх у тебя там ошибок... )))
В общем ругается что mom не функция потому, что mom это не функция. Такой встроенной функции нет а если тебе нужна пользовательская, то оформляй ее соответственно
Код:
Mode = ParamToggle("Smoothing", "On|Off" );
MomPer = Param("Momentum Periods", 10, 1, 100, 1);
SmaPer = Param("Moving Average Periods", 7, 1, 1000, 1);
EmaPer = Param("Exponential Moving Average Periods", 7, 1, 1000, 1);
BaseLine = 0;
HiLine = 1;
Lowline = -1;

function MOM(per, Mod)
{
   if( Mod == 1)
      Res = 100 * ((Close / MA(Close, (2 * Per) + 1) ) - 1);
   else
      Res = 100 * ((EMA(Close, EmaPer) / MA(Close, (2 * Per) + 1) ) - 1);
   return Res;
}

uptrend= (MOM(C, momper) > baseline);
downtrend= (MOM(C, momper) < baseline);
upline=MOM(C, momper) > Ref(MOM(C, momper), -1);
downline=MOM(C, momper) > Ref(MOM(C, momper), -1);

Plot( 2, "ribbon", IIf( uptrend AND Upline, colorDarkGreen,
                              IIf(uptrend AND downline, colorLime,
                              IIf( downtrend AND upline, colorRose,
                              IIf( downtrend AND downline, colorRed, 0 )))), styleOwnScale|styleArea|styleNoLabel, -0.5, 20 );

Ну это если тебе надо побольше гемороя и чтобы тормозило.
А если по простому, то так
Код:
Mode = ParamToggle("Smoothing", "On|Off" );
MomPer = Param("Momentum Periods", 10, 1, 100, 1);
SmaPer = Param("Moving Average Periods", 7, 1, 1000, 1);
EmaPer = Param("Exponential Moving Average Periods", 7, 1, 1000, 1);
BaseLine = 0;
HiLine = 1;
Lowline = -1;

if( Mode == 1)
   mom = 100 * ((Close / MA(Close, (2 * MomPer) + 1) ) - 1);
else
   mom = 100 * ((EMA(Close, EmaPer) / MA(Close, (2 * MomPer) + 1) ) - 1);

uptrend= (mom > baseline);
downtrend= (mom < baseline);
upline=mom > Ref(mom, -1);
downline=mom > Ref(mom, -1);

Plot( 2, "ribbon", IIf( uptrend AND Upline, colorDarkGreen,
                              IIf(uptrend AND downline, colorLime,
                              IIf( downtrend AND upline, colorRose,
                              IIf( downtrend AND downline, colorRed, 0 )))), styleOwnScale|styleArea|styleNoLabel, -0.5, 20 );


А на счет текста копай в сторону

Код:
GfxTextOut("Всякая фигня", 50, 100);

Но лучше забей и пиши в правом верхнем углу.
Код:
Title = "Всякая фигня";

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



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

СообщениеДобавлено: Сб Ноя 14, 2015 12:19 am Ответить с цитатой Вернуться к началу

000 писал(а):
Эх у тебя там ошибок... )))
В общем ругается что mom не функция потому, что mom это не функция. Такой встроенной функции нет а если тебе нужна пользовательская, то оформляй ее соответственно
Код:
Mode = ParamToggle("Smoothing", "On|Off" );
MomPer = Param("Momentum Periods", 10, 1, 100, 1);
SmaPer = Param("Moving Average Periods", 7, 1, 1000, 1);
EmaPer = Param("Exponential Moving Average Periods", 7, 1, 1000, 1);
BaseLine = 0;
HiLine = 1;
Lowline = -1;

function MOM(per, Mod)
{
   if( Mod == 1)
      Res = 100 * ((Close / MA(Close, (2 * Per) + 1) ) - 1);
   else
      Res = 100 * ((EMA(Close, EmaPer) / MA(Close, (2 * Per) + 1) ) - 1);
   return Res;
}

uptrend= (MOM(C, momper) > baseline);
downtrend= (MOM(C, momper) < baseline);
upline=MOM(C, momper) > Ref(MOM(C, momper), -1);
downline=MOM(C, momper) > Ref(MOM(C, momper), -1);

Plot( 2, "ribbon", IIf( uptrend AND Upline, colorDarkGreen,
                              IIf(uptrend AND downline, colorLime,
                              IIf( downtrend AND upline, colorRose,
                              IIf( downtrend AND downline, colorRed, 0 )))), styleOwnScale|styleArea|styleNoLabel, -0.5, 20 );

Ну это если тебе надо побольше гемороя и чтобы тормозило.
А если по простому, то так
Код:
Mode = ParamToggle("Smoothing", "On|Off" );
MomPer = Param("Momentum Periods", 10, 1, 100, 1);
SmaPer = Param("Moving Average Periods", 7, 1, 1000, 1);
EmaPer = Param("Exponential Moving Average Periods", 7, 1, 1000, 1);
BaseLine = 0;
HiLine = 1;
Lowline = -1;

if( Mode == 1)
   mom = 100 * ((Close / MA(Close, (2 * MomPer) + 1) ) - 1);
else
   mom = 100 * ((EMA(Close, EmaPer) / MA(Close, (2 * MomPer) + 1) ) - 1);

uptrend= (mom > baseline);
downtrend= (mom < baseline);
upline=mom > Ref(mom, -1);
downline=mom > Ref(mom, -1);

Plot( 2, "ribbon", IIf( uptrend AND Upline, colorDarkGreen,
                              IIf(uptrend AND downline, colorLime,
                              IIf( downtrend AND upline, colorRose,
                              IIf( downtrend AND downline, colorRed, 0 )))), styleOwnScale|styleArea|styleNoLabel, -0.5, 20 );


А на счет текста копай в сторону

Код:
GfxTextOut("Всякая фигня", 50, 100);

Но лучше забей и пиши в правом верхнем углу.
Код:
Title = "Всякая фигня";



Спасибо!
С текстом разобрался, по сути накладывается текст, а потом подгоняется координатами. Но не очень то это и нужно.
С риббоном вариант так и не получился такой, пробовал ваш вариант пилить, но чего-то не хочет работать как-надо.
В итоге подумал не очень то и нужно так.

Но появилась другая идея.
Использую моментум и MFI, но куча индикаторов мне графике не нравится, а для справки видеть хотелось бы. Вот я подумал оформить моментум и MFI в углу графика, двумя небольшими столбиками, с условной 0 отметкой.
Возможно такое?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Сб Ноя 14, 2015 9:58 pm Ответить с цитатой Вернуться к началу

Например так.
Код:

MomPer = 10;

MF = MFI(10);
mom = 100 * ((Close / MA(Close, (2 * MomPer) + 1) ) - 1);

FVB = Status("firstvisiblebar");
LVB = Status("lastvisiblebar");
mom = IIf(BarIndex() == LVB, mom, Null);

Plot(C, "", colorBlack, styleCandle);
Plot(MF, "", colorRed, styleOwnScale|styleArea, 0, 100, -LVB + FVB);
Plot(mom, "", colorBlue, styleOwnScale|styleArea, -2, 2, -LVB + FVB + 1);

Разбирайся, совершенствуй....

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


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

СообщениеДобавлено: Сб Ноя 14, 2015 11:18 pm Ответить с цитатой Вернуться к началу

Не. Лучше вот так
Код:

MomPer = 10;

MF = MFI(10);
mom = 100 * ((Close / MA(Close, (2 * MomPer) + 1) ) - 1);

MF = SelectedValue(MF);
mom = SelectedValue(mom);

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

PH = Status("pxchartheight");


if(mom > 0)
   colorMOM = colorGreen;
else
   colorMOM = colorRed;   

GfxSelectSolidBrush( colorMOM );
GfxRectangle( 5, PH/2, 15, PH/2 - PH/3*mom );

GfxSelectSolidBrush( colorBlue );
GfxRectangle( 18, PH/2, 28, PH/2 - PH/200*MF );

GfxTextOut(NumToStr(mom), 5, PH/2 - PH/3*mom);
GfxTextOut(NumToStr(MF), 18, PH/2 - PH/200*MF);

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen