Общие вопросы по разработке > Ошибка при сравнении Bool и Double

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
Аватара пользователя
Den
Сообщения: 377
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 17 раз
Поблагодарили: 5 раз

Re: Ошибка при сравнении Bool и Double

Непрочитанное сообщение Den » 27 окт 2017, 15:33

а последнее значение разницы он в таком виде не выводит?

Аватара пользователя
evge
Администратор
Сообщения: 1812
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 367 раз
Контактная информация:

Re: Ошибка при сравнении Bool и Double

Непрочитанное сообщение evge » 27 окт 2017, 15:41

Конечно, его же нет, как просили :)

Отображение последних значений функция работает для последнего видимого бара. Откатите график так что бы стрелки и значения гистограммы были на последнем баре и увидите значение.
никогда такого не было и вот опять

Аватара пользователя
Den
Сообщения: 377
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 17 раз
Поблагодарили: 5 раз

Re: Ошибка при сравнении Bool и Double

Непрочитанное сообщение Den » 27 окт 2017, 16:02

Да точно, видно. Но тут отсчет же идет не от последнего , удовлетворившего условию ? Раз они отображаются не поочередно, или поочередности H L тут не достигнуть?

Аватара пользователя
Den
Сообщения: 377
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 17 раз
Поблагодарили: 5 раз

Re: Ошибка при сравнении Bool и Double

Непрочитанное сообщение Den » 02 ноя 2017, 21:29

Евгений, подскажите пожалуйста как ограничить высоту бара

То есть исключить бары ниже определенной высоты.

Код: Выделить всё

function Initialize()
{
IndicatorName = "A;
AddInput("Input1", Inputs.Candle);   
   
PriceStudy = true;   
AddSeries("H", DrawAs.Custom, Color.Coral);   
AddSeries("L", DrawAs.Custom, Color.LightGreen);   




}

function Evaluate()
{

if (Input.High[0] >= MY.индикатор_LAST(Input).GetValue("Last", 0)  )
{
     
          H[0] = Input1.High[0];

             
}     

if (Input.Low[0] <= MY.индикатор_LAST(Input).GetValue("Last", 0)  )
{
     
          L[0] = Input1.Low[0];
     
       
}     

               H.DrawArrowDown(Color.Fuchsia, LineStyles.Solid, 5, Color.Fuchsia, 100);
               L.DrawArrowUp(Color.Lime, LineStyles.Solid, 5, Color.Lime, 100);


}



Аватара пользователя
evge
Администратор
Сообщения: 1812
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 367 раз
Контактная информация:

Re: Ошибка при сравнении Bool и Double

Непрочитанное сообщение evge » 02 ноя 2017, 23:16

Код: Выделить всё

var HeightAll = Input1.High - Input1.Low;
var HeightBody = Math.Abs(Input1.Open - Input1.Close);

//Если тело свечи больше 10

if (HeightBody > 10)
{
...
}
никогда такого не было и вот опять

Аватара пользователя
Den
Сообщения: 377
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 17 раз
Поблагодарили: 5 раз

Re: Ошибка при сравнении Bool и Double

Непрочитанное сообщение Den » 03 ноя 2017, 11:35

Евгений , спасибо за ответ.

А как установить ограничение на высоту массива из нескольких баров (больше одного) ?

Число баров может быть разное (то есть не в пределах одного как он отметил).
Вложения
13.png
13.png (7.19 КБ) 19484 просмотра

Аватара пользователя
evge
Администратор
Сообщения: 1812
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 367 раз
Контактная информация:

Re: Ошибка при сравнении Bool и Double

Непрочитанное сообщение evge » 03 ноя 2017, 12:21

MinValue(Series, N=1, D=0) – возвращает минимальное значение из N точек ряд Series со смещением D назад
MaxValue(Series, N=1, D=0) – возвращает максимальное значение из N точек ряд Series со смещением D назад

Код: Выделить всё

int Count = 5;
double Min = MinValue(Input1.Low, Count, 0);
double Max = MaxValue(Input1.High, Count, 0);
double HeightAll = Max - Min;

//Если высота Count баров больше 10

if (HeightAll > 10)
{
...
}


Ранее (год назад) эти методы не работали в индикаторах, только в стратегиях. Может быть добавили и уже работают.

Если не сработает в индикаторе, значит ищем другим методом минимум и максимум за период.
никогда такого не было и вот опять

Аватара пользователя
Den
Сообщения: 377
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 17 раз
Поблагодарили: 5 раз

Re: Ошибка при сравнении Bool и Double

Непрочитанное сообщение Den » 03 ноя 2017, 12:38

а как его сюда интегрировать, исправьте пожалуйста :)


Код: Выделить всё

function Initialize()
{
IndicatorName = "A";
AddInput("Input1", Inputs.Candle);   

PriceStudy = true;   
AddSeries("H", DrawAs.Custom, Color.Coral);   
AddSeries("L", DrawAs.Custom, Color.LightGreen);   
AddShadowSeries("D", DrawAs.Custom, Color.HotPink);

}

function Evaluate()
{

var HeightAll = Input.High - Input.Low;
var HeightBody = Math.Abs(Input.High - Input.Low);



if (Input.High[0] >= MY.индикатор_LAST(Input).GetValue("Last", 0) )
{

if (HeightBody >= 0.14)

H[0] = Input1.High[0];


}

if (Input.Low[0] <= MY.индикатор_LAST(Input).GetValue("Last", 0) )
{

if (HeightBody >= 0.14)


L[0] = Input1.Low[0];


}

H.DrawArrowDown(Color.Fuchsia, LineStyles.Solid, 5, Color.Fuchsia, 100);
L.DrawArrowUp(Color.Lime, LineStyles.Solid, 5, Color.Lime, 100);

Аватара пользователя
evge
Администратор
Сообщения: 1812
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 367 раз
Контактная информация:

Re: Ошибка при сравнении Bool и Double

Непрочитанное сообщение evge » 03 ноя 2017, 12:48

Проверил, так и не добавили возможность в индикаторах АД4 использовать MinValue, MaxValue. Что странно!

Поэтому так:

Код: Выделить всё

function Initialize()
{
IndicatorName = "A";
AddInput("Input1", Inputs.Candle);   

PriceStudy = true;   
AddSeries("H", DrawAs.Custom, Color.Coral);   
AddSeries("L", DrawAs.Custom, Color.LightGreen);   
AddShadowSeries("D", DrawAs.Custom, Color.HotPink);

}

function Evaluate()
{
int Count = 5;
double Min = Double.MaxValue;
double Max = 0;
for (int x = 0; x < Count; x++)
{
   if (Input1.Close[x] > Max) Max = Input1.Close[x];
   if (Input1.Open[x] > Max) Max = Input1.Open[x];
   if (Input1.Close[x] < Min) Min = Input1.Close[x];
   if (Input1.Open[x] < Min) Min = Input1.Open[x];
}
double HeightBody = Max - Min;

if (Input.High[0] >= MY.индикатор_LAST(Input).GetValue("Last", 0) )
{

if (HeightBody >= 0.14)

H[0] = Input1.High[0];


}

if (Input.Low[0] <= MY.индикатор_LAST(Input).GetValue("Last", 0) )
{

if (HeightBody >= 0.14)


L[0] = Input1.Low[0];


}

H.DrawArrowDown(Color.Fuchsia, LineStyles.Solid, 5, Color.Fuchsia, 100);
L.DrawArrowUp(Color.Lime, LineStyles.Solid, 5, Color.Lime, 100);
}


никогда такого не было и вот опять

Аватара пользователя
Den
Сообщения: 377
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 17 раз
Поблагодарили: 5 раз

Re: Ошибка при сравнении Bool и Double

Непрочитанное сообщение Den » 03 ноя 2017, 13:17

в предыдущем виде с ограничением на высоту одного бара он показывает так,
Вложения
frr.png
frr.png (7.93 КБ) 19475 просмотров


Вернуться в «Общие вопросы по разработке»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 10 гостей