Автор |
Сообщение |
Atlasraketa
Зарегистрирован: 12.07.2015
Сообщения: 136
|
Путаюсь приспособить под свои нужды индикатор 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 не функция, а почему это? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Atlasraketa
Зарегистрирован: 12.07.2015
Сообщения: 136
|
еще искал возможность вписать надпись в рибон, т.е. чтобы по середине линии была надпись что это моментум, но ничего похожего не нашел.
Такой возможности нету? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Эх у тебя там ошибок... )))
В общем ругается что 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
|
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
|
Например так.
Код: |
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
|
Не. Лучше вот так
Код: |
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
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|