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



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

СообщениеДобавлено: Ср Фев 15, 2017 10:47 pm Ответить с цитатой Вернуться к началу

Здравствуйте!

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

Код:
periods_60m = Param( "Periods 60", 10, 1, 200, 1 );
Ksmooth_60m = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_60m = Param( "%D avg", 4, 1, 200, 1 );

periods_15m = Param( "Periods 15", 15, 1, 200, 1 );
Ksmooth_15m = Param( "%K avg", 5, 1, 200, 1 );
Dsmooth_15m = Param( "%D avg", 9, 1, 200, 1 );

periods_5m = Param( "Periods 5", 20, 1, 200, 1 );
Ksmooth_5m = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_5m = Param( "%D avg", 8, 1, 200, 1 );

i=Interval(0);
Stoch60m = IIf( i==3600, StochD( periods_60m , Ksmooth_60m, DSmooth_60m ), StochD()); //Hourly
Plot( StochD(), _DEFAULT_NAME(), Stoch60m, ParamColor( "Color", colorRed ), ParamStyle("Style"));

Stoch15m = IIf( i==900, StochD( periods_15m , Ksmooth_15m, DSmooth_15m ), StochD()); //15 minute
Plot( StochD(), _DEFAULT_NAME(), Stoch15m, ParamColor( "Color", colorGreen ), ParamStyle("Style"));

Stoch5m = IIf( i==300, StochD( periods_5m , Ksmooth_5m, DSmooth_5m ), StochD()); //5 minute
Plot( StochD(), _DEFAULT_NAME(), Stoch5m, ParamColor( "Color", colorLightOrange ), ParamStyle("Style"));
_SECTION_END();
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Фев 16, 2017 12:17 am Ответить с цитатой Вернуться к началу

Ну вопрос же аналогичен предыдущему. И решение соответственно тоже.
Код:
periods_60m = Param( "Periods 60", 10, 1, 200, 1 );
Ksmooth_60m = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_60m = Param( "%D avg", 4, 1, 200, 1 );

periods_15m = Param( "Periods 15", 15, 1, 200, 1 );
Ksmooth_15m = Param( "%K avg", 5, 1, 200, 1 );
Dsmooth_15m = Param( "%D avg", 9, 1, 200, 1 );

periods_5m = Param( "Periods 5", 20, 1, 200, 1 );
Ksmooth_5m = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_5m = Param( "%D avg", 8, 1, 200, 1 );

if(Interval(0) == 3600)
   St = StochD( periods_60m , Ksmooth_60m, DSmooth_60m ); //Hourly

else if(Interval(0) == 900)
   St = StochD( periods_15m , Ksmooth_15m, DSmooth_15m ); //15 minute
else
   St = StochD( periods_5m , Ksmooth_5m, DSmooth_5m ); //5 minute

Plot( St, _DEFAULT_NAME(), Stoch60m, ParamColor( "Color", colorRed ), ParamStyle("Style"));

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



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

СообщениеДобавлено: Чт Фев 16, 2017 3:33 pm Ответить с цитатой Вернуться к началу

Спасибо. В данном варианте цвет, стиль и вид для всех вариантов один. А как назначить для каждого периода свой цвет стиль и вид? Добавить еще одну конструкцию if else или есть более простое и элегантное решение?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Код:

periods_60m = Param( "Periods 60", 10, 1, 200, 1 );
Ksmooth_60m = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_60m = Param( "%D avg", 4, 1, 200, 1 );

periods_15m = Param( "Periods 15", 15, 1, 200, 1 );
Ksmooth_15m = Param( "%K avg", 5, 1, 200, 1 );
Dsmooth_15m = Param( "%D avg", 9, 1, 200, 1 );

periods_5m = Param( "Periods 5", 20, 1, 200, 1 );
Ksmooth_5m = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_5m = Param( "%D avg", 8, 1, 200, 1 );

if(Interval(0) == 3600)
{
   St = StochD( periods_60m , Ksmooth_60m, DSmooth_60m ); //Hourly
   color = ColorRed;
и т.д.
}
else if(Interval(0) == 900)
{
   St = StochD( periods_15m , Ksmooth_15m, DSmooth_15m ); //15 minute
   color = ColorGreen;
и т.д.
}
else
{
   St = StochD( periods_5m , Ksmooth_5m, DSmooth_5m ); //5 minute
   color = ColorBlue;
и т.д.

}
Plot( St, _DEFAULT_NAME(), Stoch60m, color, ParamStyle("Style"));

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



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

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

Благодарю за быстрый ответ. Поясню почему меня так интересуют индивидуальные стили. Дело в том, что в параметрах стохастика который я нашел в интернете помимо основных есть еще параметр
dsx_5m и для каждого таймфрейма он свой и он отвечает за смещение графика влево или вправо (функция XShift). Все работало так:

Код:
dsx_5m = Param("DSX", -5, -50, 50 );
periods_5m = Param( "Periods", 15, 1, 200, 1 );
Ksmooth_5m = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_5m = Param( "%D avg", 3, 1, 200, 1 );

Plot( StochD( periods_5m , Ksmooth_5m, DSmooth_5m ), _DEFAULT_NAME(), ParamColor( "Color", colorCycle ), ParamStyle("Style"), 0, 0, dsx_5m);


Попытался указать так,
Код:
if(Interval(0) == 300)
   St = StochD( periods_5m , Ksmooth_5m, DSmooth_5m );
   DPT =  dsx_5m;

сообщает о том что переменная не инициализирована
Как добавить возможность регулировки XShift индивидуально для каждого таймфрейма (5, 15, 60)?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пт Фев 17, 2017 7:03 am Ответить с цитатой Вернуться к началу

Покажи весь свой код.

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



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

СообщениеДобавлено: Пт Фев 17, 2017 4:17 pm Ответить с цитатой Вернуться к началу

Код:
_SECTION_BEGIN("Background_Setting");
SetChartBkGradientFill( ParamColor("BgTop", colorBlack),
ParamColor("BgBottom", colorBlack),ParamColor("titleblock",colorBlack ));
_SECTION_END();

_SECTION_BEGIN("Stochastic %D");
periods = Param( "Periods", 15, 1, 200, 1 );
Ksmooth = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth = Param( "%D avg", 3, 1, 200, 1 );
_SECTION_END();

////////////////////////////////////////////////////////

_SECTION_BEGIN("Stochastic %D 5 minute");
DSP_5m = Param("DSP", -2, -50, 50 );
periods_5m = Param( "Periods", 21, 1, 200, 1 );
Ksmooth_5m = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_5m = Param( "%D avg", 2, 1, 200, 1 );
_SECTION_END();

_SECTION_BEGIN("Stochastic %D 5 minute A");
DSP_5m_a = Param("DSP", -3, -50, 50 );
periods_5m_a = Param( "Periods", 21, 1, 200, 1 );
Ksmooth_5m_a = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_5m_a = Param( "%D avg", 2, 1, 200, 1 );
_SECTION_END();

////////////////////////////////////////////////////////

_SECTION_BEGIN("Stochastic %D 15 minute");
DSP_15m = Param("DSP", -1, -50, 50 );
periods_15m = Param( "Periods", 23, 1, 200, 1 );
Ksmooth_15m = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_15m = Param( "%D avg", 2, 1, 200, 1 );
_SECTION_END();

_SECTION_BEGIN("Stochastic %D 15 minute A");
DSP_15m_a = Param("DSP", -2, -50, 50 );
periods_15m_a = Param( "Periods", 23, 1, 200, 1 );
Ksmooth_15m_a = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_15m_a = Param( "%D avg", 2, 1, 200, 1 );
_SECTION_END();

////////////////////////////////////////////////////////
_SECTION_BEGIN("Stochastic %D 60 minute");
DSP_60m = Param("DSP", -1, -50, 50 );
periods_60m = Param( "Periods", 12, 1, 200, 1 );
Ksmooth_60m = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_60m = Param( "%D avg", 4, 1, 200, 1 );
_SECTION_END();

_SECTION_BEGIN("Stochastic %D 60 minute A");
DSP_60m_a = Param("DSP", -2, -50, 50 );
periods_60m_a = Param( "Periods", 10, 1, 200, 1 );
Ksmooth_60m_a = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_60m_a = Param( "%D avg", 4, 1, 200, 1 );
_SECTION_END();

////////////////////////////////////////////////////////

_SECTION_BEGIN("Stochastic %D 12 hours");
DSP_12h = Param("DSP", -2, -50, 50 );
periods_12h = Param( "Periods", 16, 1, 200, 1 );
Ksmooth_12h = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_12h = Param( "%D avg", 4, 1, 200, 1 );
_SECTION_END();

_SECTION_BEGIN("Stochastic %D 12 hours A");
DSP_12h_a = Param("DSP", -1, -50, 50 );
periods_12h_a = Param( "Periods", 18, 1, 200, 1 );
Ksmooth_12h_a = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_12h_a = Param( "%D avg", 4, 1, 200, 1 );
_SECTION_END();

////////////////////////////////////////////////////////

if(Interval(0) == 43200)
   St = StochD( periods_12h , Ksmooth_12h, DSmooth_12h );

else if(Interval(0) == 3600)
   St = StochD( periods_60m , Ksmooth_60m, DSmooth_60m );

else if(Interval(0) == 900)
   St = StochD( periods_15m , Ksmooth_15m, DSmooth_15m );

else if(Interval(0) == 300)
   St = StochD( periods_5m , Ksmooth_5m, DSmooth_5m );
else
   St = StochD( periods , Ksmooth, DSmooth );

Plot( St, _DEFAULT_NAME(), ParamColor( "Color", colorGrey50 ), ParamStyle("Style"), 0, 0, DSP_5m);

if(Interval(0) == 43200)
   St_a = StochD( periods_12h_a , Ksmooth_12h_a, DSmooth_12h_a );

else if(Interval(0) == 3600)
   St_a = StochD( periods_60m_a , Ksmooth_60m_a, DSmooth_60m_a );

else if(Interval(0) == 900)
   St_a = StochD( periods_15m_a , Ksmooth_15m_a, DSmooth_15m_a );

else if(Interval(0) == 300)
   St_a = StochD( periods_5m_a , Ksmooth_5m_a, DSmooth_5m_a );
else
   St_a = StochD( periods , Ksmooth, DSmooth );

Plot( St_a, _DEFAULT_NAME(), ParamColor( "Color A", colorCycle ), ParamStyle("Style"), 0, 0, DSP_5m_a);

_SECTION_BEGIN("Border");
UPline = Param("Upper Limit",90,50,100,1);
DNline = Param("Down Limit",10,0,50,1);
Plot(UPline,"",ParamColor("Upper Limit Color",colorDarkRed),ParamStyle("Upper Limit Style",styleNoLabel|styleDashed ));
Plot(DNline,"",ParamColor("Down Limit Color",colorDarkRed),ParamStyle("Down Limit Style",styleNoLabel|styleDashed ));
Plot(50,"",colorGrey40, styleLine|styleDashed|styleNoLabel);
_SECTION_END();
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Код:

_SECTION_BEGIN("Background_Setting");
SetChartBkGradientFill( ParamColor("BgTop", colorBlack),
ParamColor("BgBottom", colorBlack),ParamColor("titleblock",colorBlack ));
_SECTION_END();

_SECTION_BEGIN("Stochastic %D");
periods = Param( "Periods", 15, 1, 200, 1 );
Ksmooth = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth = Param( "%D avg", 3, 1, 200, 1 );
_SECTION_END();

////////////////////////////////////////////////////////

_SECTION_BEGIN("Stochastic %D 5 minute");
DSP_5m = Param("DSP", -2, -50, 50 );
periods_5m = Param( "Periods", 21, 1, 200, 1 );
Ksmooth_5m = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_5m = Param( "%D avg", 2, 1, 200, 1 );
_SECTION_END();

_SECTION_BEGIN("Stochastic %D 5 minute A");
DSP_5m_a = Param("DSP", -3, -50, 50 );
periods_5m_a = Param( "Periods", 21, 1, 200, 1 );
Ksmooth_5m_a = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_5m_a = Param( "%D avg", 2, 1, 200, 1 );
_SECTION_END();

////////////////////////////////////////////////////////

_SECTION_BEGIN("Stochastic %D 15 minute");
DSP_15m = Param("DSP", -1, -50, 50 );
periods_15m = Param( "Periods", 23, 1, 200, 1 );
Ksmooth_15m = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_15m = Param( "%D avg", 2, 1, 200, 1 );
_SECTION_END();

_SECTION_BEGIN("Stochastic %D 15 minute A");
DSP_15m_a = Param("DSP", -2, -50, 50 );
periods_15m_a = Param( "Periods", 23, 1, 200, 1 );
Ksmooth_15m_a = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_15m_a = Param( "%D avg", 2, 1, 200, 1 );
_SECTION_END();

////////////////////////////////////////////////////////
_SECTION_BEGIN("Stochastic %D 60 minute");
DSP_60m = Param("DSP", -1, -50, 50 );
periods_60m = Param( "Periods", 12, 1, 200, 1 );
Ksmooth_60m = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_60m = Param( "%D avg", 4, 1, 200, 1 );
_SECTION_END();

_SECTION_BEGIN("Stochastic %D 60 minute A");
DSP_60m_a = Param("DSP", -2, -50, 50 );
periods_60m_a = Param( "Periods", 10, 1, 200, 1 );
Ksmooth_60m_a = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_60m_a = Param( "%D avg", 4, 1, 200, 1 );
_SECTION_END();

////////////////////////////////////////////////////////

_SECTION_BEGIN("Stochastic %D 12 hours");
DSP_12h = Param("DSP", -2, -50, 50 );
periods_12h = Param( "Periods", 16, 1, 200, 1 );
Ksmooth_12h = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_12h = Param( "%D avg", 4, 1, 200, 1 );
_SECTION_END();

_SECTION_BEGIN("Stochastic %D 12 hours A");
DSP_12h_a = Param("DSP", -1, -50, 50 );
periods_12h_a = Param( "Periods", 18, 1, 200, 1 );
Ksmooth_12h_a = Param( "%K avg", 3, 1, 200, 1 );
Dsmooth_12h_a = Param( "%D avg", 4, 1, 200, 1 );
_SECTION_END();

////////////////////////////////////////////////////////

if(Interval(0) == 43200)
{
   St = StochD( periods_12h , Ksmooth_12h, DSmooth_12h );
   St_a = StochD( periods_12h_a , Ksmooth_12h_a, DSmooth_12h_a );
   DSP = DSP_12h;
   DSP_a = DSP_12h_a;
}
else if(Interval(0) == 3600)
{
   St = StochD( periods_60m , Ksmooth_60m, DSmooth_60m );
   St_a = StochD( periods_60m_a , Ksmooth_60m_a, DSmooth_60m_a );
   DSP = DSP_60m;
   DSP_a = DSP_60m_a;
}
else if(Interval(0) == 900)
{
   St = StochD( periods_15m , Ksmooth_15m, DSmooth_15m );
   St_a = StochD( periods_15m_a , Ksmooth_15m_a, DSmooth_15m_a );
   DSP = DSP_15m;
   DSP_a = DSP_15m_a;
}
else if(Interval(0) == 300)
{
   St = StochD( periods_5m , Ksmooth_5m, DSmooth_5m );
   St_a = StochD( periods_5m_a , Ksmooth_5m_a, DSmooth_5m_a );
   DSP = DSP_5m;
   DSP_a = DSP_5m_a;
}
else
{
   St = StochD( periods , Ksmooth, DSmooth );
   St_a = StochD( periods , Ksmooth, DSmooth );
   DSP = 0;
   DSP_a = 0;
}
Plot( St, _DEFAULT_NAME(), ParamColor( "Color", colorGrey50 ), ParamStyle("Style"), 0, 0, DSP);
Plot( St_a, _DEFAULT_NAME(), ParamColor( "Color A", colorCycle ), ParamStyle("Style"), 0, 0, DSP_a);

_SECTION_BEGIN("Border");
UPline = Param("Upper Limit",90,50,100,1);
DNline = Param("Down Limit",10,0,50,1);
Plot(UPline,"",ParamColor("Upper Limit Color",colorDarkRed),ParamStyle("Upper Limit Style",styleNoLabel|styleDashed ));
Plot(DNline,"",ParamColor("Down Limit Color",colorDarkRed),ParamStyle("Down Limit Style",styleNoLabel|styleDashed ));
Plot(50,"",colorGrey40, styleLine|styleDashed|styleNoLabel);
_SECTION_END();

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



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

СообщениеДобавлено: Сб Фев 18, 2017 8:56 pm Ответить с цитатой Вернуться к началу

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen