Как в mql4 сделать так чтобы ценовой диапазон воспринимался как переменная? - страница 2

 
Seric29:

Смотрите ниже картинки. Значить есть график, на нём 2 уровня.

 Между этими уровнями есть ценовой диапазон и мне нужно указать в коде что этот диапазон между уровнями является переменной чтобы потом использовать его как переменную, т. е. переменная будет ссылаться на диапазон и машина будет выполнять определённые условия. Т. к. нет критериев определения этого диапазона (позже будут сформированы, вернее они сформированы но грузить форум тонкостями не хочу), для начала можно использовать верхнюю цену 1.1709 и нижнюю 1.1601. Кто что посоветует? 

Ввести логическую переменную, в которую записать условие. Далее через оператор if,  если условие выполняется производим нужные действия. Примерно так:

bool ur_bool=(ценовое значение<=1.1709 && ценовое значение >=1.1601);
if (ur_bool==true)//ценовое значение в пределах диапазона 
{
        //то тут производим действия
}

ценовое значение может быть самое разное в зависимости от того, что вам нужно. Например, bid или ask или еще что-то. Конечно, цены можно сначала записать в переменные, если это нужно

 
Aleksey Lebedev:

Это другое дело )))
Я обычно структуры использую для подменю в настройках, поэтому удивился.
А вот в start() нафига это надо, если можно обойтись 2мя строчками?

double Range_up=1.1709;
double Range_dn=1.1601;
 
Andrei Fandeev:

Это другое дело )))
Я обычно структуры использую для подменю в настройках, поэтому удивился.
А вот в start() нафига это надо, если можно обойтись 2мя строчками?

Ну так он же ж просил одну переменную, хранящую два значения. Ты ж сам на это и указывал. Вот ему и дали вариант. Можно ещё и union - там в одной переменной можно несколько типов хранить.

 
Andrei Fandeev:

Это другое дело )))
А вот нафига это надо если можно обойтись 2мя строчками?

Просто пример, можно и на глобальном уровне сразу присвоить значения:

struct_price_range PriceRange={1.1709,1.1601};

для примера былоб не очень понятно.


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

Но таки топикстартеру похоже надо не это, то ли классы хочет изобрести, то ли функции.

 
Andrei Fandeev:

Это другое дело )))
Я обычно структуры использую для подменю в настройках, поэтому удивился.
А вот в start() нафига это надо, если можно обойтись 2мя строчками?

Андрей, поясни как используешь структуры для подменю в настройках. Именованные списки - то понятно, а структуры?

 
Artyom Trishkin:

Андрей, поясни как используешь структуры для подменю в настройках. Именованные списки - то понятно, а структуры?

Артём, я по образованию дирижёр. Хоть и пишу код уже более 20 лет. Скорее всего применяю не правильные термины.
"Структуры, списки" - что как правильно называется - не в курсе. Главное - работает как мне нужно )))))

Я имел ввиду подменю типа такого:

enum ENUM_SIGNAL_BAR
{
        Current,
        Closed
};
extern ENUM_SIGNAL_BAR  Signal_Bar  =  Closed;

Наверное - это списки. Ок.

 
Ребята вы советов дали много буду что-то пробовать.
 
Aleksey Lebedev:

Структура - набор элементов, объединяет логически связанные данные разных типов.

struct struct_price_range
   {
   double up;
   double dn;
   };
struct_price_range PriceRange;
PriceRange.up=1.1709;
PriceRange.dn=1.1601;

Грубо говоря одна переменная PriceRange в которой два значения up и dn.

Вы хотите сказать что переменная PriceRange сохранит весь диапазон начиная от 1.1601 и заканчивая 1.1709 как один единый целый элемент, т. е. это и есть логика высказываний: мы нашли 2 уровня указав эти 2 уровня машина сама вычислит этот диапазон. Я так понимаю за это отвечает строка struct_price_range PriceRange;, которая автоматически сохраняет в себе верхний и нижний границы. Ещё у меня к вам вопрос как потом обратиться к переменной PriceRange, например я хочу записать такое выражение

   if (Bid> PriceRange)
   то нарисовать квадрат;
   else return;

или необходимо создать отдельную функцию которая будет находить этот диапазон а результат уже передавать дальше по программе?

 
Не весь диапазон а только границы диапазона и не автоматически  а указав их 
PriceRange.up=1.1709;
PriceRange.dn=1.1601;


Что бы что то рассчитать необходимо обратиться к конкретным переменным структуры например так

if (Bid > PriceRange.dn && Bid < PriceRange.up)//Цена находиться в диапазоне
   то нарисовать квадрат;
   else return;
 
Vitaly Gorbunov:
Не весь диапазон а только границы диапазона и не автоматически  а указав их 
if (Bid > PriceRange.dn && Bid < PriceRange.up)//Цена находиться в диапазоне
   то нарисовать квадрат;
   else return;

Что бы что то рассчитать необходимо обратиться к конкретным переменным структуры например так

А как вычислить весь диапазон, его же наверное нужно вычислить, структура хранит только границы и больше ничего машина не понимает или в этом нет нужды можно просто обращаться к элементам структуры через точку например PriceRange.dn и указывать что должно происходить.

Причина обращения: