R-投资组合--一种多样化的方法 - 页 7

 
Reshetov:

在MQL5中,甚至在MQL4中,这种算法的代码速度太低了,即在纯MQL中无法获得任何好的结果,至少要创建一个DLL。而 且,这也没有任何意义,因为投资组合不需要在每一个点或小时间段的条上进行实时优化。

尤里,这不是真的,mql5 在速度方面并不逊于toad。

至于使用的目的,比如说,在外汇方面,我更感兴趣的是优化策略组合,而不是工具。 所以...不接受任何借口。:)

但好消息是我可以在写mql5代码时陪你。我甚至可以自己写。最好只是对算法的描述。

我认为这将会很有趣。

 
MetaDriver:

尤里,这不是真的,mql5 在速度方面绝不比toad差。

你把这些童话故事讲给你的孩子。Java虚拟机进行JIT编译,即在运行程序之前将Java代码编译成机器代码。因此,Java应用程序的执行是在机器代码中完成的。

请看在Java和C++中比较Quake2性能的结果:http://www.bytonic.de/html/benchmarks.html

关于此主题的更多信息:C#、C++Java、Delphi的基准测试

毕竟,通过运行用Java和MQL5编写的相同的基准测试,很容易检查出这一点。


MetaDriver

至于使用它的原因--例如在外汇方面,我对优化策略组合更感兴趣,而不是工具。 所以...不接受任何借口。:)

好了,然后将策略的第一个股权差异上传到CSV文件,并对其进行优化。为什么你需要借口说MQL5可以所谓的 "超过 "用机器代码执行的应用程序?

MetaDriver

但好消息是,我可以在用mql5写代码时陪你。我甚至可以自己写。最好只是对算法的描述。


请讲。布朗-罗宾逊算法并不是一个秘密。下面是Java中的代码。

  private int[] optimization(double[][] a) {
    Random rand = new Random();
    int m = a.length;
    int n = a[0].length;
    int[] p = new int[m];
    Arrays.fill(p, 0);
    int[] q = new int[n];
    Arrays.fill(q, 0);
    double[] x = new double[m];
    Arrays.fill(x, 0 d);
    double[] y = new double[n];
    Arrays.fill(y, 0 d);
    int r = rand.nextInt(m);
    int c = 0;
    for (int t = 0; t < 10000000; t++) {
        for (int j = 0; j < n; j++) {
          y[j] = y[j] + a[r][j];
        }
        c = 0;
        for (int j = 1; j < n; j++) {
          if ((y[j] == y[c]) && rand.nextBoolean()) {
            c = j;
          }
          if (y[j] > y[c]) {
            c = j;
          }
        }
        q[c] = q[c] + 1;
        for (int i = 0; i < m; i++) {
            x[i] = x[i] + a[i][c];
        }
        r = 0;
        for (int i = 1; i < m; i++) {
          if ((x[i] == x[r]) && rand.nextBoolean()) {
            r = i;
          }
          if (x[i] < x[r]) {
            r = i;
          }
        }
        p[r] = p[r] + 1;
    }

    return q;
  }
 
Reshetov:

你把这些童话故事讲给你的孩子。Java虚拟机进行JIT编译,即在运行程序之前将Java代码编译成机器代码。因此,Java应用程序的执行是在机器代码中完成的。

Yura,这对你来说似乎是个新闻,然而mql5虚拟机的工作方式与此类似。编译器做的是字节码,在运行之前,它被预编译成一个Nativ。这与java和sharp的情况相同。你应该多读读mql5论坛。

请看在Java和C++中比较Quake2性能的结果:http://www.bytonic.de/html/benchmarks.html

这里有更多关于这个主题的内容:C#、C++Java、Delphi基准测试

通过运行用Java和MQL5编写的相同的基准测试,可以很容易地进行检查。

我已经检查过了。虽然我没有把它与java相比,而是与sharp相比。我得到了同样的速度。我不认为Java比Sharp至少要快30-40%。如果有区别,还不知道对谁有利。 我也同意与java进行比较。您推荐哪种代码用于比较测试?

好吧,那就把股权策略的第一个差异转储到CSV文件中并进行优化。

我对这样的变体不感兴趣。我想要一个嵌入式代码。而且我会的。

为什么你需要借口说MQL5可以所谓的 "超越 "一个在机器代码中运行的应用程序?

见上文。我不指望超车,我指望的是完全一样(正负10%)。

请讲。布朗-罗宾逊算法并不是一个秘密。下面是Java中的代码。

是的,我有这个代码。你已经发布了。我不能马上理解它。我至少指望评论能真正搞清楚,而不是胡闹。

好吧,我再试试。互联网上有关于该算法想法的描述。我会想办法的。

 
MetaDriver:

Yura,这对你来说似乎是个新闻,然而mql5虚拟机的工作原理与此类似。编译器制作字节码,在启动之前,它被预编译成一个Nativ.C语言。这与java和sharp的情况相同。你应该多读读mql5论坛。

我已经检查过了。虽然我没有把它与java相比,而是与sharp相比。我得到了同样的速度。我不认为Java比Sharp至少快30-40%。如果有区别,还不知道对谁有利。 我也同意与java进行比较。您推荐哪种代码用于比较测试?

我对这样的变体不感兴趣。我想要一个嵌入式代码。而且我会的。

见上文。我不指望超车,我指望的是完全一样(正负10%)。

是的,我有这个代码。你已经发布了。我不能马上理解它。我至少指望评论能真正搞清楚,而不是胡闹。

好吧,我再试试。互联网上有关于该算法想法的描述。我会想办法的。

幽默风趣...

然而

;)

 
MetaDriver:

是的,我有这个代码。你已经发布了。我不能马上进入它。我至少希望得到一个评论,这样我就能真正弄清楚,而不是胡闹。

好吧,我再试试。互联网上有关于该算法想法的描述。我会想办法的。

代码并不复杂。我在参数中传递了一个支付矩阵--a[][],在输出中传递了由支付矩阵的列组成的玩家的最佳策略--q


Random rand = new Random(); // Объект rand - генератор случайных чисел
int[] q = new int[n]; //  Объявление целочисленного массива q  размером n и выделение под него памяти
int m = a.length; // переменной m присваивается значение в виде количества строк в платежной матрице
int n = a[0].length; // переменной n присваивается значение в виде количества столбцов в платежной матрице
Arrays.fill(p, 0); // Массив p инициализируется нулевыми значениями

int r = rand.nextInt(m); // значению переменной r присваивается случайное число в диапазоне от 0 до m - 1
rand.nextBoolean() // с вероятностью 50% / 50% даст случайным образом значение true или false
其他的东西,任何懂C语言的程序员都会明白,不需要任何帮助。Java和C的唯一区别是不需要释放内存。也就是说,如果一个变量被声明在大括号区块{}内,这意味着在区块关闭后,区块外的变量是无效的,Java虚拟机 将独立释放为其分配的内存。如果试图引用这个块之外的块内声明的变量,Java编译器将产生一个错误。
 
Alex5757000:
你为什么不把它全部写在mql5里,然后把来源贴出来?

源代码可在http://r-portfolio.sourceforge.net/ 上公开获取。

如果你需要,你可以用任何编程语言重写,或者联系Job--他们做各种异想天开,需要在MQL代码中实现一些东西的人。

 
尤里,我有一个关于用你的方案形成投资组合的问题。 我在 "相关专家顾问 "主题中问过,但我发现了这个主题,所以将在这里问。你把黄金和主要货币一起纳入投资组合,但货币对和黄金有不同的刻度价格。这在计算中是如何修正的,你的投资组合使用哪些货币对?我对这个话题很感兴趣,想从有经验的专家那里了解使用该系统的大致结果。
 
FION:
尤里,我有一个关于用你的方案形成投资组合的问题。 我在 "相关专家顾问 "主题中问过,但我发现了这个主题,所以将在这里问。你把黄金和主要货币一起纳入投资组合,但货币对和黄金有不同的刻度价格。这在计算中是如何修正的,你的投资组合使用哪些货币对?我对这个话题很感兴趣,想从有经验的专家那里了解使用该系统的大致结果。
见对相关顾问 的答复
 
Reshetov:

Java虚拟机进行JIT编译,即在运行程序之前将Java代码编译成机器代码。因此,Java应用程序的执行是在机器代码中完成的。


jit在java中编译为机器代码的部分。就我的理解,mql5一次将整个程序编译成机器码--这比jit更aot。
 
Reshetov:
见对相关顾问 的回答

.

http://sourceforge.net/projects/r-portfolio/- 有俄语版本吗?


原因: