Страница 1 из 1

Добавление новых функций в код

Добавлено: 03 май 2020, 20:06
Kostyan777
Как добавить в код робота другие функции помимо условий?
Например сделал проверку экстремумов в отдельной функции, но компиллятор ее закомментировал .

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

function OnUpdate()
{
   a= CheckExtremums()

}

int function CheckExtremums()
{
   /// Пересчет ценовых экстремумов      
   ***
   
   /// Пересчет гистограммных экстремумов
***
}

Re: Добавление новых функций в код

Добавлено: 03 май 2020, 20:37
evge
Так не получится, ограничения АД4.

Обсуждалось ранее здесь. Было добавлено после в F.A.Q.

Получится вот так, в Evaluate(), в Update():

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

function Evaluate()
{
/*
Func<T,TResult> универсальный делегат
Экземпляр этого делегата можно создать как

 Func<int,bool> myFunc
 
где int — входной параметр, а bool — возвращаемое значение.
Возвращаемое значение всегда указывается в последнем параметре типа.
Func<int, string, bool> определяет делегат с двумя входными параметрами, int и string, и типом возвращаемого значения bool.
*/
 Func<int, string, bool> myFunc = (int x, string s) =>
  {
   s+="qq";
   return x == 5;
  };
 
 bool result = myFunc(4, "qq");
}

Пример 2

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

Func<int, int, int> myFunc = (int x, int y) =>
  {
   return x + y;
  };
 
 A = myFunc(1, 2) + myFunc(3, 4) + myFunc(5, 6);


в индикаторе выдало в серию A - 21

Re: Добавление новых функций в код

Добавлено: 03 май 2020, 21:59
Kostyan777
А как мне узнать, какой тип у MACD(Input1.Close, Pfast, Pslow, Psig).getValue ?

Re: Добавление новых функций в код

Добавлено: 04 май 2020, 05:47
evge
Double,

Но похоже речь не о типе, а о наименованиях серий,если их более чем одна.

Добавьте индикатор на график и посмотрите как названы серии в его настройках.

Проще получать серии не через GetValue, а так:

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

var M = MACD(Input1, Pfast, Pslow, Psig);
var L = M["Line"];
var S = M["Signal"];


Далее получать значения этих серий по смещению, вот так:

L[x], S[x]

x - смещение, 0 - текущий бар