Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Telegram!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Ansichten:
998
Rating:
(36)
Veröffentlicht:
2016.05.04 08:40
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Bibliothek mit Funktionen der Kombinatorik.

Kombinatorik ist ein Zweig der Mathematik, der diskrete Strukturen diskutiert, Mengen (Kombinationen, Permutationen, Anordnung und abzählbare Kombinationen) und Relationen auf diesen (zum Beispiel teilgeordnete Mengen). Kombinatorik hat eine Beziehung zu vielen anderen Gebieten der Mathemtaik wie Algebra, Geometrie, Wahrscheinlichkeitstheorie und hat ein weites Spektrum von Anwendungen in verschiedenen Wissensgebieten (zum Beispiel in Genetik, Computerwissenschaft, statistische Physik).


1) Die erste Funktion:

//+------------------------------------------------------------------+
//|                     Fakultät                                     |
//+------------------------------------------------------------------+
double factorial(int x);

Fakultäten werden oft in der Kombinatorik, Zahlentheorie und funktionaler Analysis verwendet.

Die Fakultät ist eine extrem schnell wachsende Funktion. Sie wächst schneller als ein Polynom jeden beliebigen Grades und schnelle als die Exponential Funktion (aber langsam als die doppelte Exponentialfuntion).

Daher muss der zurückgegene Wert vom Typ double sein. Das ist notwendig weil die Fakultät zu schnell wächst und bereits die 13. (!) nicht mehr in den Wertebereich des long-Typs passt.


2) Die zweite Funktion:

//+------------------------------------------------------------------+
//|                 Kombination(combination)                         |
//+------------------------------------------------------------------+
double combination(int N,int k);

Kombinationen erlauben es eindeutige Mengen von Elementen von einigen Mengen mit N Elementen auszuwählen. Jede Menge hat k Elemente.

Seien 10 Handelssignale gegeben. Und das Handelssystem soll nur 3 verwenden. Zu weiteren Analyse sollen daher alle möglichen Mengen (3 Signale) von der Menge mit den 10 Signalen ausgewählt werden.

Wegen der Zahl dieser Mengen egibt sich die Zahl der Kombinationen:

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

D.h. es gibt 120 Kombinationen von je 3 Signalen. 


3) Die dritte Funktion:

//+------------------------------------------------------------------+
//|            Kombination (combination) mit Wiederholungen          |
//+------------------------------------------------------------------+
double _combination(int N,int k);

Kombinationen mit Wiederholungen erlauben, dass in der Menge manche Elemente mehrfach enthalten sind. Seien fünf Früchte gegeben. Die Menge mit 3 Elementen beinhaltet 2 Orangen und 1 Apfel. So eine Menge ist eien Kombination mit Wiederholungen.. Orange ist wiederholt.

Für die Menge mit 10 Signalen und möglichen Mengen (3 Signale) ergibt sich für die Anzahl von Kombinationen mit Wiederholungen:

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


4) Die vierte Funktion:

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

Anordnungen unterschieden sich von Kombinationen durch den Fakt, dass nicht der Satz wichtig ist, sondern die Anordnung der Elemente in der Menge. Gegeben seien 2 Mengen mit 3 Elementen: Apfel-Orange-Banane, Apfel-Banane-Orange. Im Sinne der Kombinatorik haben wir nur eine Kombination (eine Menge von Teilnehmern). Wenn man aber die Anordnung betrachtet, dann gibt es 2 Kombinationen (die Anordnung der Teilnehmer hat ihr Anordnung in der Menge geändert).

Es ist klar, dass es mehr Anordnungen als Kombinationen gibt. Für das Beispiel mit der Menge von Signalen (10 Signale) und möglichen Mengen (3 Signale) können wir folgende Anzahl von Anordnungen ermitteln:

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


5) Die fünfte Funktion:

//+------------------------------------------------------------------+
//|                   Anordnung mit Wiederholungen                   |
//+------------------------------------------------------------------+
double _arrangement(int N,int k);

Wie im Falle der Kombinationen wird erlaubt, dass Elemente in einer Menge wiederholt werden können.

Für die Menge mit 10 Signalen und möglichen Mengen (3 Signale) erhalten wir für die Anordnung mit Wiederholungen:

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


6) Die sechste Funktion:

//+------------------------------------------------------------------+
//|                       Permutation                                |
//+------------------------------------------------------------------+
double permutation(int N);

Die Permutation erlaubt festzustellen, wie viele Ansätze es gibt um die Anordnung der Elemente in einer Menge zu ändern.

Für die Menge der Signale (10 Signale) erhalten wir folgende Anzahl Permutationen:

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

Und für die Menge von 3 Signalen erhalten wir folgende Anzahl von Permutationen:

P(3) = 6.

Anzahl von Permutationen gibt zurück Fakultät. Daher ist die Differenz zwischen der Anzahl von Permutationen für 3 und 10 Elemente so groß.


7) Die siebte Funktion:

//+------------------------------------------------------------------+
//|                  Permutation mit Wiederholungen                  |
//+------------------------------------------------------------------+
double _permutation(int &nM[]);

Wie im Falle der Kombinationen wird erlaubt, dass Elemente in einer Menge wiederholt werden können.

Nur gibt ein Paramter ein Array zurück in dem jedes Element angibt wie oft es wiederholt werden kann.

Zum Beispiel gibt es 3 Signale, jedes wird einmal wiederholt, dann haben wir:

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

D.h. ~P({1,1,1}) = P(3).

Nehmen wir an, dass das erste Signal zweimal wiederholt werden kann, dann haben wir:

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

Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/1197

Color Parabolic Color Parabolic

Der Hauptvorteil des iSAR Indikator ist, dass er auf der aktuellen Kursreihe basiert, daher kann er auf andere Indikatoren angewendet werden

ColorX2MA-Parabolic ColorX2MA-Parabolic

Der iSAR technische Indikator, der den X2MA Moving Average als zugrunde liegende Kursreihe verwendet um beste Filterung von Fehlsignalen zu erreichen.

EA_MALR EA_MALR

Der Expert Advisor wird auf Basis des MALR Indikator gezeichnet. Es gibt Funktionen für Trailing stop, Erhöung der Lotgröße, Mittelung und Umkehr

SF-6(AM) SF-6(AM)

Trend Indikator der "schwache" Balken zeigt