Полезные функции от KimIV - страница 65

 
nord >>:

Игорь Спасибо за функции !!!

А случайно нет функции для определения убытка открытой позицции.....или я ее пропустил

Есть такая:

double OrderProfit(  	)
Возвращает значение чистой прибыли (без учёта свопов и комиссий) для выбранного ордера. 
Для открытых позиций это - текущая нереализованная прибыль. Для закрытых ордеров - зафиксированная прибыль.
Ордер должен быть предварительно выбран с помощью функции OrderSelect(). 

Если нужен профит/лосс в пунктах, то в зависимости от того какая позиция (бай/селл) вычитайте:

OrderOpenPrice(...) - (Bid или Ask).

 

список функций в хтмл-файле...

откроются в новом окне...

;) енджой...

Файлы:
func2_1.zip  4 kb
 
Игорь, если Вас не затруднит, перелопатил все, но так и не нашел, может есть в закромах функция которая бы возвращала угол наклона лин. регрессии, или начальную и конечную цену на опр. кол-ве баров ? Буду Вам весьма признателен....
 
xrust писал(а) >>
Игорь, если Вас не затруднит, перелопатил все, но так и не нашел, может есть в закромах функция которая бы возвращала угол наклона лин. регрессии, или начальную и конечную цену на опр. кол-ве баров ? Буду Вам весьма признателен....

В уравнении ЛР y(x)=a*x + b

коэфициенты можно расчитать по этим формулам.

коэфициент а

коэфициент b

'Регрессия: что это такое?'

 

Игорь, СПАСИБО БОЛЬШОЕ

всё нашёл на Вашем сайте

http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&id=35&func=fileinfo
 

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


Для полного понимания. открыто несколько позаций по паре или нескольким парам. нужно поставить отложенный ордер на X пипсов от текущей цены, а вот как правильно лот рассчитать, т.е. что-бы он 100% открылся этот отложенный ордер пока кумекаю, но каменная чаша не выходит, ошибка в расчётах. Так же учитывать нужно свопы, комиссию прибыль ордеров и убыток.


Было бы чудесно если бы нашлось у тебя время написать такую функцию.

 

Игорь, а может вы тут дадите функцию, которая закрывала бы перекрытые ордера? Может это еще кому нибудь понадобится. Если конечно вам это интересно и у вас есть на это время?

И если не трудно, какие нибудь рекомендации по тому, как функцию вставить в советник. Я пробовал заменить вашу функцию «закрытия сначала прибыльных» на закрытие по убыванию размера лота. Но дает при компиляции ошибки.

С уважением, Азер.

 
KimIV писал(а) >>

Функция StringToArrayInt().

ЗЫ. Во вложении скрипт для тестирования функции StringToArrayInt().

опыт показывает, что бывает нужна ещё функция типа StringToArrayStr() - если в твоей нотации.. :-)

 
Shu писал(а) >>

опыт показывает, что бывает нужна ещё функция типа StringToArrayStr() - если в твоей нотации.. :-)

Во многих языках программирования эта функция называется StrSplit(). Я не стал ничего выдумывать... :-)

Функция StrSplit().

Данная функция выполняет расщепление строки на составляющие её подстроки таким образом, что каждая подстрока становится отдельным элементом массива. Разделитель задаётся параметром и может быть произвольным. Функция StrSplit() возвращает количество элементов массива и принимает следующие параметры:

  • st - Строка с разделителями.
  • as - Массив элементов типа string.
  • de - Разделитель. Необязательный параметр. Значение по умолчанию - "," (запятая).
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 23.06.2008                                                     |
//|  Описание : Разбиение строки на массив элементов                           |
//+----------------------------------------------------------------------------+
//|  Возврат:                                                                  |
//|    Количество элементов в массиве                                          |
//|  Параметры:                                                                |
//|    st - строка с разделителями                                             |
//|    as - строковый массив                                                   |
//|    de - разделитель                                                        |
//+----------------------------------------------------------------------------+
int StrSplit(string st, string& as[], string de=",") { 
  int    i=0, np;
  string stp;

  ArrayResize(as, 0);
  while (StringLen(st)>0) {
    np=StringFind(st, ",");
    if (np<0) {
      stp=st;
      st="";
    } else {
      stp=StringSubstr(st, 0, np);
      st=StringSubstr(st, np+1);
    }
    i++;
    ArrayResize(as, i);
    as[i-1]=stp;
  }
  return(ArraySize(as));
}

ЗЫ. Во вложении скрипт для тестирования функции StrSplit().

Файлы:
 
Prival писал(а) >>

В уравнении ЛР y(x)=a*x + b

коэфициенты можно расчитать по этим формулам.

коэфициент а

коэфициент b

'Регрессия: что это такое?'

1. Регрессионный анализ - исследование процесса, объекта на основании ряда точек наблюдения за ним.

2. Уравнение регрессии (регрессия) :

2.1. Исследователь выбирает тип уравнения, которое по его мнению соответствует физической природе исследуемого объекта или с которым проще работать. Чаще всего берется полином.

2.2. Для начальных исследований часто беруг полином первой степени, т.е. прямую линию. Ее называют линейной регрессией.

2.3. Далее, как Вы написали, расчитываются параметры этой прямой. Если точек наблюдения более 2, наиболее распространен " метод наименьших квадратов". Прямая проводится так, чтобы сумма квадратов отклонений точек от прямой была бы наименьшей.

3. Здесь под регрессией подразумевается уравнение линейной регрессии и его график.

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