Общие вопросы по разработке > Как найти минимум и максимум полученного значения за период

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
Valdemar
Сообщения: 2
Зарегистрирован: 17 июн 2020, 15:11

Как найти минимум и максимум полученного значения за период

Непрочитанное сообщение Valdemar » 22 июн 2020, 12:04

Коллеги, прошу Вашей помощи.
Как на основе полученного значения (назовём его CSV) рассчитать его максимум(CSVmax26) и минимум(CSVmin26) за период равный 26, а потом произвести вычисления по формуле CSV1_2 = (CSV - CSVmin26)/(CSVmax26-CSVmin26)*100 и вычислить среднюю равную 14. С расчетом CSV я смог справиться, а дальше не получается.

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

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

function Initialize()
{
IndicatorName = "CSV1_2";
AddInput("Input", Inputs.Candle);
PriceStudy = false;   
AddParameter("Period1", 26);
AddSeries("CSV1_2", DrawAs.Line, Color.Blue);
AddGlobalVariable("CSV", Types.Double, 0.0);
AddLevel(20 , Color.Red, "CSV1_2");
AddLevel(40 , Color.Gray, "CSV1_2");   
}

function Evaluate()
{
// Alfadirect 2017. OX   

if ( CurrentIndex > 0)
     if (Input.Close[0] > Input.Close[-3])
     CSV = Input.OpenInterest[-3] + Input.OpenInterest[-2] + Input.OpenInterest[-1] + Input.OpenInterest[0];
   else
     CSV = Input.OpenInterest[-3] - Input.OpenInterest[-2] - Input.OpenInterest[-1] - Input.OpenInterest[0];
}


//----------- Код, оказавшийся вне методов -----------//
//function OnUpdate()
//{
//if (CSV >= Period)
//   var max26 = eMaxCSV
//   var min26 = eMinCSV
//   if ( CurrentIndex >= Period )
//   {
//        int i = 0;
//        for (i = 1; i < Period; i++)
//        max26 = Math.Max(CSV[i], max26);
//        for (i = 1; i < Period; i++)
//        min26 = Math.Min(CSV[i], min26);
//       
//      CSV1_2 = (CSV - min26)/(max26 - min26)*100;
//   }
//}
//}

Вернуться к началу

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

Re: Как найти минимум и максимум полученного значения за период

Непрочитанное сообщение evge » 23 июн 2020, 14:14

Что вычисляет CSV?

В первом случае, когда Close текущего бара выше Close 3 бара назад, понятно, берет сумму всех OpenInterest.

В случае если Close текущего бара ниже (или равно) Close 3 бара назад:
Почему берем тогда OpenInterest 3 бара назад (положительное значение) и начинаем от него вычитать все последующие (2,1,0 - текущий)?
В чем смысл?

В итоге в первом условии получим грубо
CSV = 4*OpenInterest
во втором случае грубо
CSV = -3*OpenInterest

Вам точно такой CSV нужно получить?
никогда такого не было и вот опять


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

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

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