Mira cómo descargar robots gratis
¡Búscanos en Telegram!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Visualizaciones:
1140
Ranking:
(36)
Publicado:
2014.01.15 09:15
Actualizado:
2016.11.22 07:33
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Biblioteca inicial de funciones combinatorias.

La Combinatoria es una rama de las matemáticas, que estudia estructuras discretas, conjuntos (combinaciones, permutaciones, distribuciones y enumeraciones de elementos) y las relaciones en los mismos (por ejemplo, conjuntos ordenados parcialmente). La Combinatoria está relacionada con muchas otras áreas de las matemáticas como por ejemplo, el álgebra, la geometría, la teoría de las probabilidades y tiene un amplio espectro de aplicación en diferentes áreas del conocimiento (por ejemplo en genética, ciencias de la computación, física estadística).


1) Primera función:

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

Los factoriales se utilizan con frecuencia en combinatoria, teoría de números y análisis funcional.

El factorial es una función con un crecimiento muy rápido. Crece con mayor rapidez que un polinomio de cualquier orden y más rápidamente que la función exponencial (pero más lentamente que la función exponencial doble).

Por esta razón el valor devuelto es de tipo doble. Esto es así porque el factorial crece demasiado rápido y cuando llegamos a 13! su valor excede los límites del tipo long.


2) Segunda función:

//+------------------------------------------------------------------+
//|                 Combinación                                      |
//+------------------------------------------------------------------+
double combination(int N,int k);

La combinación permite seleccionar conjuntos únicos de elementos a partir de un conjunto dado de N elementos. Cada conjunto tendrá k elementos.

Suponemos que tenemos 10 señales de trading. Y solo utilizaremos 3 en el sistema de trading. Entonces, para un análisis correcto, se deben seleccionar todos los posibles conjuntos de 3 señales, que se pueden extraer del conjunto original de 10 señales.

El número total de dichos conjuntos es el número de combinaciones:

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

Por tanto, hay 120 combinaciones únicas de 3 señales cada una. 


3) Tercera función:

//+------------------------------------------------------------------+
//|            Combinación con repeticiones                          |
//+------------------------------------------------------------------+
double _combination(int N,int k);

Las combinaciones con repeticiones admiten más de un elemento repetido en el conjunto. Supongamos que tenemos cinco frutas. Un conjunto de 3 elementos tiene 2 naranjas y 1 manzana. Dicho conjunto es una combinación con repeticiones. La naranja está repetida.

Para el conjunto de 10 señales y posibles subconjuntos (3 señales), encontramos el número de combinaciones con repeticiones:

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


4) Cuarta función:

//+------------------------------------------------------------------+
//|                        Colocación                                |
//+------------------------------------------------------------------+
double arrangement(int N,int k);

Las colocaciones de diferencian de las combinaciones en el hecho de que además de la composición, el orden es importante. Supngamos que tenemos 2 conjuntos con 3 elementos: manzana-naranja-plátano, manzana-plátano-naranja. En términos de combinaciones tenemos una sola combinación (la composición es la misma). Pero si hablamos de colocaciones hay 2 combinaciones (el orden de los elementos es diferente en cada conjunto).

Está claro que habrá más colocaciones que combinaciones. Por ejemplo, en el conjunto de señales (10 señales) y posibles subconjuntos (3 señales) tenemos las colocaciones siguientes:

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


5) Quinta función:

//+------------------------------------------------------------------+
//|                   Colocación con repeticiones                    |
//+------------------------------------------------------------------+
double _arrangement(int N,int k);

Como en el caso de las combinaciones admitimos elementos repetidos en un conjunto.

Entonces para el conjunto de 10 señales y posibles subconjuntos (3 señales) obtenemos el siguiente número de colocaciones con repeticiones:

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


6) Sexta función:

//+------------------------------------------------------------------+
//|                       Permutación                                |
//+------------------------------------------------------------------+
double permutation(int N);

La permutación permite conocer de cuantas formas se puede modificar el orden de un conjunto de elementos.

Para el conjunto de señales (10 señales) podemos obtener las siguientes permutaciones:

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

Y para un conjunto de 3 señales obtenemos las siguientes permutaciones:

P(3) = 6.

El número de permutaciones es el valor del factorial. De ahí la diferencia en el número de permutaciones para 3 y 10 elementos.


7) Séptima función:

//+------------------------------------------------------------------+
//|                  Permutación con repeticiones                    |
//+------------------------------------------------------------------+
double _permutation(int &nM[]);

Como en el caso de las combinaciones admitimos elementos repetidos en un conjunto.

El único parámetro es una matriz en la cual para cada elemento se indica cuantas veces puede repetirse.

Por ejemplo, hay 3 señales y cada señal se repite una vez, entonces:

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

Por tanto, ~P({1,1,1}) = P(3).

Supngamos que la primera señal se puede repetir 2 veces, entonces:

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

Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/1197

Exp_ColorTrend_CF Exp_ColorTrend_CF

El sistema de comercio Exp_ColorTrend_CF se basa en el cambio de dirección de la tendencia mostrada por el indicador ColorTrend_CF

MultiXRSXSignal MultiXRSXSignal

El MultiXRSXSignal muestra información de la tendencia actual por medio de los cuatro indicadores XRSX que se obtienen de distintos marcos temporales.

EA_AML EA_AML

Asesor Experto que basa las operaciones en el indicador AML, en la intersección de la barra con la linea del indicador.

La clase de trazado Moving Average usando el buffer circular La clase de trazado Moving Average usando el buffer circular

La clase está diseñada para el cálculo de las medias móviles (Moving Average) utilizando el algoritmo del buffer circular.