Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
Combinatória - biblioteca para MetaTrader 5
- Visualizações:
- 1408
- Avaliação:
- 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 (Estocástico suavizado q-período) por William Blau.
Exp_ColorTrend_CFO sistema de negociação Exp_ColorTrend_CF se baseia nas variações da direção da tendência exibidos pelo indicador ColorTrend_CF.
Oscilador Ergodic por William Blau.
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.