Допустим нужно прокрутить какой нибудь параметр индикатора "от и до" и тут же визульно прикинуть результат.
Ренат, пишу последний раз, вы в жизни не понимаете одного важного момента. Если просите о помощи, уважайте время людей, которые могут помочь.
Я бы в первом посте написал вот так:
Я создал эксперт ControlsScrollH.mq5, вот его код, файл прилагаю в аттаче.
// прилагаем код тут или в аттаче, если он очень большой
Можно ли делать так, чтобы в выделенной строке задавать отрицательное значение?
bool CControlsDialog::CreateScrollsH(void)
{
//--- coordinatesint x1=INDENT_LEFT;
int y1=INDENT_TOP;
int x2=x1+3*BUTTON_WIDTH;
int y2=y1+18;
//--- createif(!m_scroll_v.Create(m_chart_id,m_name+"ScrollsH",m_subwin,x1,y1,x2,y2))
return(false);
//--- set up the scrollbarm_scroll_v.MinPos(0);//--- set up the scrollbar
m_scroll_v.MaxPos(10);
if(!Add(m_scroll_v))
return(false);
Comment("Позиция полосы прокрутки ",m_scroll_v.CurrPos());
//--- succeedreturn(true);
}
И тогда спецы быстренько откроют ваш файл в редакторе, во всем разберутся и напишут ответ. А ваш подход - давайте-ка, быстренько
догадайтесь холопы, что барину надо и ответьте. Ведь я пуп земли и царь Вселенной, мне все должны по жизни )))
С таким подходом никто вам помогать не будет, один я, дурак, тут редко появляюсь и ввязался.
Меняйте подход к людям, короче. Уважайте чужое время.
Alexey Navoykov: Ай-яй-яй! Ну зачем вы отняли 20
минут жизни у Алексея? Он за это время мог сочинить великолепную историю про баб. Теперь это невосполнимая потеря для мирового
искусства
У вас женщины нет? Так выйдите на улицу и познакомьтесь, делов-то.
За 30 уже минут я мог бы написать много кода в анализаторе портфельной торговли в Матлабе, над которым с утра работаю.
ЗЫ: только вот не пиши через минуту, не компилируется, это вопрос уже из другой плоскости как сделать )))
формулы я уже прокрутил в голове, будет, будет работать внешне
но нужно параметр минимум и максимум поменять, а не в комментарий всунуть то что хочешь увидеть, как ты предлагаешь
там еще проще CurrPos() - 5, если чо
--------
сделал, работает (почти):
//+------------------------------------------------------------------+ //| ControlsScrollH.mq5 | //|
Copyright 2017, MetaQuotes Software Corp. |
//| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright
"Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com" #property version "1.00" #property
description "Панель индикации и диалогов управления. Демонстрация работы класса CScrollH"
#include <Controls\Dialog.mqh> #include <Controls\Scrolls.mqh> //+------------------------------------------------------------------+ //|
defines
|
//+------------------------------------------------------------------+ //--- indents and gaps #define
INDENT_LEFT
(11) // indent from left (with allowance for border width)
#define
INDENT_TOP
(11) // indent from top (with allowance for border width)
#define
INDENT_RIGHT
(11) // indent from right (with allowance for border width)
#define
INDENT_BOTTOM
(11) // indent from bottom (with allowance for border width)
#define
CONTROLS_GAP_X
(5) // gap by X coordinate
#define
CONTROLS_GAP_Y
(5) // gap by Y coordinate
//--- for buttons #define
BUTTON_WIDTH
(100) // size by X coordinate
#define
BUTTON_HEIGHT
(20) // size by Y coordinate
//--- for the indication area #define
EDIT_HEIGHT
(20) // size by Y coordinate
//--- for group controls #define
GROUP_WIDTH
(150) // size by X coordinate
#define
LIST_HEIGHT
(179) // size by Y coordinate
#define
RADIO_HEIGHT
(56) // size by Y coordinate
#define
CHECK_HEIGHT
(93) // size by Y coordinate
//+------------------------------------------------------------------+ //| Class
CControlsDialog
|
//| Usage: main dialog of the Controls
application
|
//+------------------------------------------------------------------+ class CControlsDialog : public CAppDialog { private:
CScrollH
m_scroll_v;
// CScrollH объект
public: CControlsDialog(void); ~CControlsDialog(void); //--- create virtual
bool Create(const long chart,const string name,const int subwin,const int x1,const int y1,const
int x2,const int y2);
//--- chart event handler virtual bool OnEvent(const int id,const long
&lparam,const double &dparam,const string &sparam);
protected: //--- create dependent controls
bool CreateScrollsH(void);
//--- handlers of the dependent controls events
void OnScrollInc(void);
void OnScrollDec(void); }; //+------------------------------------------------------------------+ //|
Event
Handling
|
//+------------------------------------------------------------------+ EVENT_MAP_BEGIN(CControlsDialog) ON_EVENT(ON_SCROLL_INC,m_scroll_v,OnScrollInc) ON_EVENT(ON_SCROLL_DEC,m_scroll_v,OnScrollDec) EVENT_MAP_END(CAppDialog) //+------------------------------------------------------------------+ //|
Constructor
|
//+------------------------------------------------------------------+ CControlsDialog::CControlsDialog(void)
{
} //+------------------------------------------------------------------+ //|
Destructor
|
//+------------------------------------------------------------------+ CControlsDialog::~CControlsDialog(void) { } //+------------------------------------------------------------------+ //|
Create
|
//+------------------------------------------------------------------+ bool CControlsDialog::Create(const long
chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
{ if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2)) return(false); //--- create
dependent controls
if(!CreateScrollsH()) return(false); //--- succeed
return(true);
} //+------------------------------------------------------------------+ //| Create the CScrollsH
object
|
//+------------------------------------------------------------------+ bool CControlsDialog::CreateScrollsH(void)
{
//--- coordinates int x1=INDENT_LEFT; int y1=INDENT_TOP; int
x2=x1+3*BUTTON_WIDTH;
int y2=y1+18; //--- create
if(!m_scroll_v.Create(m_chart_id,m_name+"ScrollsH",m_subwin,x1,y1,x2,y2))
return(false); //--- set up the scrollbar m_scroll_v.MinPos(-5); //--- set up
the scrollbar
m_scroll_v.MaxPos(5); if(!Add(m_scroll_v)) return(false); Comment("Позиция
полосы прокрутки ",m_scroll_v.CurrPos()+m_scroll_v.MinPos());
//--- succeed return(true); } //+------------------------------------------------------------------+ //| Event
handler
|
//+------------------------------------------------------------------+ void CControlsDialog::OnScrollInc(void)
{
Comment("Позиция полосы прокрутки ",m_scroll_v.CurrPos()+m_scroll_v.MinPos()); } //+------------------------------------------------------------------+ //|
Event
handler
|
//+------------------------------------------------------------------+ void CControlsDialog::OnScrollDec(void)
{
Comment("Позиция полосы прокрутки ",m_scroll_v.CurrPos()+m_scroll_v.MinPos()); } //+------------------------------------------------------------------+ //|
Global
Variables
|
//+------------------------------------------------------------------+ CControlsDialog ExtDialog; //+------------------------------------------------------------------+ //|
Expert initialization
function
|
//+------------------------------------------------------------------+ int OnInit() { //--- create
application dialog
if(!ExtDialog.Create(0,"Controls",0,40,40,380,344)) return(INIT_FAILED); //--- run application
ExtDialog.Run();
//--- succeed return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization
function
|
//+------------------------------------------------------------------+ void OnDeinit(const int reason) { //---
очистим комментарии
Comment(""); //--- destroy dialog ExtDialog.Destroy(reason); } //+------------------------------------------------------------------+ //|
Expert chart event
function
|
//+------------------------------------------------------------------+ void OnChartEvent(const int
id, // event ID
const long& lparam, // event parameter of the long type const double& dparam, // event parameter of the
double type
const string& sparam) // event parameter of the string type {
ExtDialog.ChartEvent(id,lparam,dparam,sparam);
}
а вот например от -15 до -5, опять запнулся код...
а от -5 до +5, кнопка сдвига ползунка вправо, работает только от -5 до 0
Очень жаль, что не стали заниматься.
Полезная вещица.
Допустим нужно прокрутить какой нибудь параметр индикатора "от и до" и тут же визульно прикинуть результат.
Ренат, пишу последний раз, вы в жизни не понимаете одного важного момента. Если просите о помощи, уважайте время людей, которые могут помочь.
Я бы в первом посте написал вот так:
Я создал эксперт ControlsScrollH.mq5, вот его код, файл прилагаю в аттаче.
// прилагаем код тут или в аттаче, если он очень большойМожно ли делать так, чтобы в выделенной строке задавать отрицательное значение?
И тогда спецы быстренько откроют ваш файл в редакторе, во всем разберутся и напишут ответ. А ваш подход - давайте-ка, быстренько догадайтесь холопы, что барину надо и ответьте. Ведь я пуп земли и царь Вселенной, мне все должны по жизни )))
С таким подходом никто вам помогать не будет, один я, дурак, тут редко появляюсь и ввязался.
Меняйте подход к людям, короче. Уважайте чужое время.
Ай-яй-яй! Ну зачем вы отняли 20 минут жизни у Алексея? Он за это время мог сочинить великолепную историю про баб. Теперь это невосполнимая потеря для мирового искусства
У вас женщины нет? Так выйдите на улицу и познакомьтесь, делов-то.
За 30 уже минут я мог бы написать много кода в анализаторе портфельной торговли в Матлабе, над которым с утра работаю.
ну и крутите что мешает?
есть методы Get чтобы узнать мин/макс ползунка https://www.mql5.com/ru/docs/standardlibrary/controls/cscroll/cscrollminpos
нужно отрицательные значения, используйте: CurrPos() - ( MaxPos() - MinPos () )/2.0
или для зеркального значения: ( MaxPos() - MinPos () )/2.0 - CurrPos()
минус то зачем у скрола должен быть?
ЗЫ: MaxPos() и MinPos () подозреваю, что у Вас не будут изменяться, сохраните их заранее и используйте запомненные значения
допустим нужно менять параметр не от нуля до 10, а от минус 5 до плюс 5
ять! проверь!
ЗЫ: мин = 0, мах = 10, вот твой CurrPos -- > 0,1.2.3.4.5.6.7.8.9.10 . Вот моя формула.... сколько будет 10/2 ?
а если CurrPos = 10 и минус 5 = ?
а если CurrPos = 2 и минус 5 = ?
ять! проверь!
ЗЫ: мин = 0, мах = 10, вот твой CurrPos -- > 0,1.2.3.4.5.6.7.8.9.10 . Вот моя формула.... сколько будет 10/2 ?
а если CurrPos = 10 и минус 5 = ?
а если CurrPos = 2 и минус 5 = ?
не, подожди
//--- set up the scrollbar
m_scroll_v.MinPos(0);
//--- set up the scrollbar
m_scroll_v.MaxPos(10);
Я правильно понимаю, что "set up" на английском - это установить?
в данном случае min и max
Вопрос: как установить min = -5 ?
---
CurrPos() - ( MaxPos() - MinPos () )/2.0 при max=10 и min=0 даст неверный результат
не, подожди
//--- set up the scrollbar
m_scroll_v.MinPos(0);
//--- set up the scrollbar
m_scroll_v.MaxPos(10);
Я правильно понимаю, что "set up" на английском - это установить?
в данном случае min и max
Вопрос: как установить min = -5 ?я не пользовался никогда СScrollH , как и не проверял твой код
есть конкретная проблема - есть решение!
мое решение будет работать
или вопрос из разряда " как решить " перетекает в " как уйти увлекательный мир СБ MQL и не потерять свои мысли там? " - это уже без меня
CurrPos() - ( MaxPos() - MinPos () )/2.0 при max=10 и min=0 даст неверный результат
на единичку могу ошибиться, но сути это не меняет
я не пользовался никогда СScrollH , как и не проверял твой код
есть конкретная проблема - есть решение!
мое решение будет работать
или вопрос из разряда " как решить " перетекает в " как уйти увлекательный мир СБ MQL и не потерять свои мысли там? " - это уже без меня
да я ничего не писал, код из документации
полезный, ничего не имею против
просто возник вопрос - как реализоватьпросто возник вопрос - как реализовать
подставь мои формулы в коммент!
ЗЫ: только вот не пиши через минуту, не компилируется, это вопрос уже из другой плоскости как сделать )))
подставь мои формулы в коммент!
ЗЫ: только вот не пиши через минуту, не компилируется, это вопрос уже из другой плоскости как сделать )))
формулы я уже прокрутил в голове, будет, будет работать внешне
но нужно параметр минимум и максимум поменять, а не в комментарий всунуть то что хочешь увидеть, как ты предлагаешь
там еще проще CurrPos() - 5, если чо
--------
сделал, работает (почти):
//+------------------------------------------------------------------+
//| ControlsScrollH.mq5 |
//| Copyright 2017, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property description "Панель индикации и диалогов управления. Демонстрация работы класса CScrollH"
#include <Controls\Dialog.mqh>
#include <Controls\Scrolls.mqh>
//+------------------------------------------------------------------+
//| defines |
//+------------------------------------------------------------------+
//--- indents and gaps
#define INDENT_LEFT (11) // indent from left (with allowance for border width)
#define INDENT_TOP (11) // indent from top (with allowance for border width)
#define INDENT_RIGHT (11) // indent from right (with allowance for border width)
#define INDENT_BOTTOM (11) // indent from bottom (with allowance for border width)
#define CONTROLS_GAP_X (5) // gap by X coordinate
#define CONTROLS_GAP_Y (5) // gap by Y coordinate
//--- for buttons
#define BUTTON_WIDTH (100) // size by X coordinate
#define BUTTON_HEIGHT (20) // size by Y coordinate
//--- for the indication area
#define EDIT_HEIGHT (20) // size by Y coordinate
//--- for group controls
#define GROUP_WIDTH (150) // size by X coordinate
#define LIST_HEIGHT (179) // size by Y coordinate
#define RADIO_HEIGHT (56) // size by Y coordinate
#define CHECK_HEIGHT (93) // size by Y coordinate
//+------------------------------------------------------------------+
//| Class CControlsDialog |
//| Usage: main dialog of the Controls application |
//+------------------------------------------------------------------+
class CControlsDialog : public CAppDialog
{
private:
CScrollH m_scroll_v; // CScrollH объект
public:
CControlsDialog(void);
~CControlsDialog(void);
//--- create
virtual bool Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
//--- chart event handler
virtual bool OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
protected:
//--- create dependent controls
bool CreateScrollsH(void);
//--- handlers of the dependent controls events
void OnScrollInc(void);
void OnScrollDec(void);
};
//+------------------------------------------------------------------+
//| Event Handling |
//+------------------------------------------------------------------+
EVENT_MAP_BEGIN(CControlsDialog)
ON_EVENT(ON_SCROLL_INC,m_scroll_v,OnScrollInc)
ON_EVENT(ON_SCROLL_DEC,m_scroll_v,OnScrollDec)
EVENT_MAP_END(CAppDialog)
//+------------------------------------------------------------------+
//| Constructor |
//+------------------------------------------------------------------+
CControlsDialog::CControlsDialog(void)
{
}
//+------------------------------------------------------------------+
//| Destructor |
//+------------------------------------------------------------------+
CControlsDialog::~CControlsDialog(void)
{
}
//+------------------------------------------------------------------+
//| Create |
//+------------------------------------------------------------------+
bool CControlsDialog::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
{
if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
return(false);
//--- create dependent controls
if(!CreateScrollsH())
return(false);
//--- succeed
return(true);
}
//+------------------------------------------------------------------+
//| Create the CScrollsH object |
//+------------------------------------------------------------------+
bool CControlsDialog::CreateScrollsH(void)
{
//--- coordinates
int x1=INDENT_LEFT;
int y1=INDENT_TOP;
int x2=x1+3*BUTTON_WIDTH;
int y2=y1+18;
//--- create
if(!m_scroll_v.Create(m_chart_id,m_name+"ScrollsH",m_subwin,x1,y1,x2,y2))
return(false);
//--- set up the scrollbar
m_scroll_v.MinPos(-5);
//--- set up the scrollbar
m_scroll_v.MaxPos(5);
if(!Add(m_scroll_v))
return(false);
Comment("Позиция полосы прокрутки ",m_scroll_v.CurrPos()+m_scroll_v.MinPos());
//--- succeed
return(true);
}
//+------------------------------------------------------------------+
//| Event handler |
//+------------------------------------------------------------------+
void CControlsDialog::OnScrollInc(void)
{
Comment("Позиция полосы прокрутки ",m_scroll_v.CurrPos()+m_scroll_v.MinPos());
}
//+------------------------------------------------------------------+
//| Event handler |
//+------------------------------------------------------------------+
void CControlsDialog::OnScrollDec(void)
{
Comment("Позиция полосы прокрутки ",m_scroll_v.CurrPos()+m_scroll_v.MinPos());
}
//+------------------------------------------------------------------+
//| Global Variables |
//+------------------------------------------------------------------+
CControlsDialog ExtDialog;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create application dialog
if(!ExtDialog.Create(0,"Controls",0,40,40,380,344))
return(INIT_FAILED);
//--- run application
ExtDialog.Run();
//--- succeed
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- очистим комментарии
Comment("");
//--- destroy dialog
ExtDialog.Destroy(reason);
}
//+------------------------------------------------------------------+
//| Expert chart event function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id, // event ID
const long& lparam, // event parameter of the long type
const double& dparam, // event parameter of the double type
const string& sparam) // event parameter of the string type
{
ExtDialog.ChartEvent(id,lparam,dparam,sparam);
}
а вот например от -15 до -5, опять запнулся код...
а от -5 до +5, кнопка сдвига ползунка вправо, работает только от -5 до 0
;)
формулы я уже прокрутил в голове, будет, будет работать внешне
а от -5 до +5, кнопка сдвига ползунка вправо, работает только от -5 до 0
даже не знаю как еще обьяснять, и так и эдак обьяснял, вот в терминале код твой написал, у меня работает от -25 до +25