下载MetaTrader 5

请观看如何免费下载自动交易

有趣的脚本?
因此发布一个链接 -
让其他人评价

喜欢这个脚本? 在MetaTrader 5客户端尝试它

2014.02.05 09:36
程序库

组合数学 - MetaTrader 5程序库

| Chinese English Русский Español Deutsch 日本語 Português

显示:
471
等级:
投票: 23

初始组合数学函数库。

组合数学数学的一个分支, 是研究离散结构, 集合 (组合, 排列, 顺序排列计数组合) 以及它们的关系 (例如, 偏序集)。组合数学与许多的 数学 领域有关联, 诸如 代数, 几何, 概率论 并在许多知识领域应用广泛 (例如在 遗传学, 计算机科学, 统计物理)。


1)第一函数:

//+------------------------------------------------------------------+
//|                     数的阶乘                                      |
//+------------------------------------------------------------------+
double factorial(int x);

阶乘经常用在组合数学, 数论函数分析中。

阶乘是一个成长非常快速的函数。它的增长比任何多项式速度更快, 也比指数函数更快 (但比双指数函数慢)。

这就是为什么返回值必须是 double (双精度) 类型。这样做是因为阶乘增长过快, 已经是13!这已经不适合 long (长整数) 类型的范围。


2)第二函数:

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

组合可以从一些包含 N 元素的集合当中选出唯一的元素集合。每个集合将有 k 个元素。

假设有 10 个交易信号。并且对于交易系统, 仅使用其中 3 个。那么, 为了进一步分析, 将从 10 组信号集合中选择所有 可能集合 (3 信号)。

因此这样的集合的数量将是组合数量:

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

即, 有 120 唯一组合, 每组 3 个信号。 


3)第三函数:

//+------------------------------------------------------------------+
//|            组合 (组合) 与重复                                      |
//+------------------------------------------------------------------+
double _combination(int N,int k);

重复组合承认, 在某些集合中的元素可以出现一次以上。假设有五种水果。集合包括的 3 个元素有 2 个橙子和 1 个苹果。此集合是一个重复组合。橙子重复。

作为该组10 个信号集合和可能的集合 (3 信号), 我们发现了一些重复组合:

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


4)第四函数:

//+------------------------------------------------------------------+
//|                        顺序排列                                   |
//+------------------------------------------------------------------+
double arrangement(int N,int k);

顺序排列与组合不同的一个事实在于, 整个集合不重要,重要的是集合中的元素顺序。假设有 2 个 3 元素的集合: 苹果-橙子-香蕉, 苹果-香蕉-橙子。在组合方面, 我们仅有一个组合 (一组参与者)。但以顺序排列看有 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[]);

即, 组合中的集合, 其中元素可以重复。

Only 作为参数传递一个数组, 其中每个元素指示可以重复多少次。

例如, 这里有 3 个信号, 每个可重复一次, 则:

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

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

假设第一信号可以重复 2 次, 则:

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

本文译自 MetaQuotes Software Corp. 撰写的俄文原文
官方代码: https://www.mql5.com/ru/code/1197

MALR MALR

两级线性回归均线带, 好似布林带

TEMA Band TEMA Band

一款类似布林带的指标。

EA_MALR EA_MALR

该 EA 在 MALR 指标基础上绘制。提供尾随止损, 手数增加, 平均与反转功能。

自动趋势线 自动趋势线

该指标自动识别支撑和阻力点, 并根据它们绘制趋势线。这里计算两类线