Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Twitter!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Bibliotecas

Combinatória - biblioteca para MetaTrader 5

Visualizações:
1408
Avaliação:
(36)
Publicado:
2014.01.14 15:15
Atualizado:
2014.06.27 09:27
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Biblioteca inicial de funções combinatórias.

A Combinatória é um ramo da matemática, que estuda estruturas discretas, conjuntos (combinações, permutações, arranjos e enumerações combinatorias) e as relações sobre elas (por exemplo, conjuntos ordenados parcialmente). A Combinatória está relacionada a muitas outras áreas da matemática tal como álgebra, geometria, teoria da probabilidade e tem um amplo espectro de aplicação em diferentes áreas do conhecimento (por exemplo, em genética, ciência da computação, física estatística).


1) A primeira função:

//+------------------------------------------------------------------+
//|                     Número fatorial                              |
//+------------------------------------------------------------------+
double factorial(int x);

Os fatoriais são usados ​​frequentemente em combinatória, teoria dos números e análises funcionais.

Fatorial é uma função de crescimento extremamente rápida. Ela cresce mais rápido do que polinomial de qualquer grau e mais rapidamente do que a função exponencial (Mas mais lento do que a função exponencial dupla).

É por isso que o valor deve ser devolvido pelo dígito double. Ele é assim porque o fatorial cresce muito rápido e quando chegamo ao 13! ele não se enquadra nas faixas do tipo long.


2) A segunda função:

//+------------------------------------------------------------------+
//|                 Combinação (combinação)                          |
//+------------------------------------------------------------------+
double combination(int N,int k);

Combinações permitem selecionar um conjunto único de elementos de um conjunto constituído de N elementos. Cada conjunto terá k elementos.

Suponha-se que existem 10 sinais de negociação. E para o sistema de negociação somente 3 para usar. Então, para uma análise correta deve-se selecionar todos os possíveis conjuntos (de três sinais), que se podem extrair do conjunto original de 10 sinais.

Portanto, o número de tais grupos será o número de combinações:

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

Ou seja, existem 120 combinações únicas de 3 sinais em cada um.


3) A terceira função:

//+------------------------------------------------------------------+
//|            Combinação (combinação) com repetições                |
//+------------------------------------------------------------------+
double _combination(int N,int k);

Combinações com repetições admitem que no conjunto de algum elemento pode ser apresentada mais do que uma vez. Suponha que há cinco frutas. O conjunto composto por 3 elementos tem 2 laranjas e 1 maçã. Esse conjunto é uma combinação com repetições. A Laranja foi repetida.

Quanto ao conjunto de 10 sinais, encontramos uma série de combinações com repetições para os possíveis conjuntos de três sinais:

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


4) A quarta função:

//+------------------------------------------------------------------+
//|                        Arranjo                                   |
//+------------------------------------------------------------------+
double arrangement(int N,int k);

Os arranjos são diferentes das combinações pelo fato de que além da composição, a ordem também é importante para o conunto. Suponha que existam dois conjuntos de 3 elementos: laranja-maçã-banana, banana-maçã-laranja. Em termos de combinações temos apenas uma combinação (um conjunto de participantes). Mas sobre arranjo existem 2 combinações (os participantes mudaram de ordem no conjunto).

É claro que haverá mais arranjos do que combinações. Por exemplo, a partir do conjunto de sinais (10 sinais) de possíveis conjuntos (3 sinais), podemos obter um número maior de arranjos:

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


5) A quinta função:

//+------------------------------------------------------------------+
//|                   Arranjo com repetições                         |
//+------------------------------------------------------------------+
double _arrangement(int N,int k);

Ou seja, como no caso de combinações, os elementos de um conjunto pode ser repetido.

Então, para o conjunto de 10 sinais e possíveis subconjuntos (3 sinais) teremos um número de arranjos com repetições:

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


6) A sexta função:

//+------------------------------------------------------------------+
//|                       Permutação                                |
//+------------------------------------------------------------------+
double permutation(int N);

A permutação permite saber quantas maneiras você pode alterar a ordem de um conjunto de elementos.

Assim, para o conjunto de sinais (10 sinais), podemos obter o seguinte número de permutações:

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

E para um grupo de três sinais, podemos obter as seguintes permutações:

P(3) = 6.

Número de permutações retornadas para fatorial. Assim, vemos a diferença entre o número de permutações de 3 e de 10 elementos.


7) A sétima função:

//+------------------------------------------------------------------+
//|                  Permutação com repetições                       |
//+------------------------------------------------------------------+
double _permutation(int &nM[]);

Ou seja, como no caso de combinações, os elementos de um conjunto pode ser repetido.

O único parâmetro é um array em que cada item indica quantas vezes ele pode ser repetido.

Por exemplo, há três sinais, cada um é repetida uma vez e, em seguida:

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

I.e. ~P({1,1,1}) = P(3).

Supõe-se que o primeiro sinal pode ser repetida duas vezes e, em seguida:

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

Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/1197

Indicador Estocástico Blau_TStoch Indicador Estocástico Blau_TStoch

Indicador Estocástico (Estocástico suavizado q-período) por William Blau.

Exp_ColorTrend_CF Exp_ColorTrend_CF

O sistema de negociação Exp_ColorTrend_CF se baseia nas variações da direção da tendência exibidos pelo indicador ColorTrend_CF.

Blau_Ergodic Blau_Ergodic

Oscilador Ergodic por William Blau.

A classe para desenhar uma média móvel usando o buffer anel (ring) A classe para desenhar uma média móvel usando o buffer anel (ring)

A classe foi projetada para cálculo de médias móveis (Moving Average) usando o algoritmo do buffer anel.