Скачать MetaTrader 5

Смотри, как бесплатно скачать роботов

Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят

Понравился скрипт?
Оцени его работу в терминале MetaTrader 5

2012.12.10 09:28
Библиотеки

Combinatorics - библиотека для MetaTrader 5

| Russian English 中文 Español Deutsch 日本語 Português

Просмотров:
14463
Рейтинг:
голосов: 22

Начальная библиотека по функциям комбинаторики.

Комбинато́рика  — это раздел математики, изучающий дискретные объекты, множества (сочетания, перестановки, размещения и перечисления элементов) и отношения на них (например, частичного порядка). Комбинаторика связана со многими другими областями математики — алгеброй, геометрией, теорией вероятностей и имеет широкий спектр применения в различных областях знаний (например в генетике, информатике, статистической физике).


1) Первая функция:

//+------------------------------------------------------------------+
//|                     Факториал числа                              |
//+------------------------------------------------------------------+
double factorial(int x);

Факториалы часто используются в комбинаторике, теории чисел и функциональном анализе.

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

Поэтому возвращаемое значение должно иметь тип double. Это сделано, потому что факториал растёт очень быстро и уже 13! не умещается в рамки типа long.


2) Вторая функция:

//+------------------------------------------------------------------+
//|                 Сочетание (комбинация)                           |
//+------------------------------------------------------------------+
double combination(int N,int k);

Сочетания позволяют из какого-то множества, состоящего из N элементов, выбрать уникальные по составу наборы этих элементов. В каждом наборе будет k элементов.

Допустим, есть 10 торговых сигналов. А для торговой системы нужно использовать только 3. Тогда для дальнейшего анализа нужно перебрать все возможные наборы (3 сигнала) из множества 10 сигналов.

Отсюда число таких наборов и будет числом сочетаний:

C(k,N) = C(3,10) = 120.

Т.е. получится 120 уникальных комбинаций по 3 сигнала в каждой. 


3) Третья функция:

//+------------------------------------------------------------------+
//|            Сочетание (комбинация) с повторениями                 |
//+------------------------------------------------------------------+
double _combination(int N,int k);

Сочетания с повторениями допускают, что в самом наборе может присутствовать какой-то элемент более чем 1 раз. Пусть есть 5 фруктов. В одном наборе из 3-х элементов есть 2 апельсина и 1 яблоко. Такой набор и является сочетанием с повторениями. Апельсин повторился.

Что касается множества 10 сигналов и возможных наборов (3 сигнала), то получим такое число сочетаний с повторениями:

~C(k,N) = ~C(3,10) = 220.


4) Четвёртая функция:

//+------------------------------------------------------------------+
//|                        Размещение                                |
//+------------------------------------------------------------------+
double arrangement(int N,int k);

Размещения отличаются от сочетаний тем, что в нём важен не только состав набора, но и порядок элементов в самом наборе. Пусть есть следующие 2 набора по 3 элемента: апельсин-яблоко-банан, яблоко-банан-апельсин. С точки зрения сочетаний у нас есть только 1 комбинация (один состав участников). А вот с точки зрения размещений есть 2 комбинации (участники изменили порядок в составе).

Понятно, что размещений будет больше, чем сочетаний. Например, из множества сигналов (10 сигналов) и возможных наборов (3 сигнала), можем получить столько размещений:

A(k,N) = A(3,10) = 720.


5) Пятая функция:

//+------------------------------------------------------------------+
//|                   Размещение с повторениями                      |
//+------------------------------------------------------------------+
double _arrangement(int N,int k);

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

Тогда для множества 10 сигналов и возможных наборов (3 сигнала) получим такое число число размещений с повторениями:

~A(k,N) = ~A(3,10) = 1000.


6) Шестая функция:

//+------------------------------------------------------------------+
//|                       Перестановка                               |
//+------------------------------------------------------------------+
double permutation(int N);

Перестановка позволяет узнать сколькими способами можно изменить порядок во множестве элементов.

Так для множества сигналов (10 сигналов) можем получить столько перестановок:

P(N) = P(10) = 3 628 800.

А для набора из 3-х сигналов можем получить столько перестановок:

P(3) = 6.

 Число перестановок возвращает факториал. Поэтому такая разница между числом перестановок для 3 и 10 элементов.


7) Седьмая функция:

//+------------------------------------------------------------------+
//|                  Перестановка с повторениями                     |
//+------------------------------------------------------------------+
double _permutation(int &nM[]);

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

Только в качестве параметра передаём массив, в котором для каждого элемента указываем, сколько он может раз повториться.

Например есть 3 сигнала, каждый повторяется 1 раз, тогда:

~P(N) = ~P({1,1,1}) = 6.

Т.е. ~P({1,1,1}) = P(3).

Допустим, что первый сигнал может повториться 2 раза, тогда:

 ~P({2,1,1}) = 12.

YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя

Скрипт рисует уровни Рудолфа Акселя

YURAZ_CLOSEPRC_V1 YURAZ_CLOSEPRC_V1

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

NewMartin NewMartin

Новый взгляд на привычный мартингейл.

Select Trade Select Trade

Советник Select Trade позволяет трейдеру сделать выбор при открытии позиции (BUY или SELL).