privateint[] optimization(double[][] a) {
Random rand = new Random();
int m = a.length;
int n = a[0].length;
int[] p = newint[m];
Arrays.fill(p, 0);
int[] q = newint[n];
Arrays.fill(q, 0);
double[] x = newdouble[m];
Arrays.fill(x, 0 d);
double[] y = newdouble[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;
}
在MQL5中,甚至在MQL4中,这种算法的代码速度太低了,即在纯MQL中无法获得任何好的结果,至少要创建一个DLL。而 且,这也没有任何意义,因为投资组合不需要在每一个点或小时间段的条上进行实时优化。
尤里,这不是真的,mql5 在速度方面并不逊于toad。
至于使用的目的,比如说,在外汇方面,我更感兴趣的是优化策略组合,而不是工具。 所以...不接受任何借口。:)
但好消息是我可以在写mql5代码时陪你。我甚至可以自己写。最好只是对算法的描述。
我认为这将会很有趣。
尤里,这不是真的,mql5 在速度方面绝不比toad差。
你把这些童话故事讲给你的孩子。Java虚拟机进行JIT编译,即在运行程序之前将Java代码编译成机器代码。因此,Java应用程序的执行是在机器代码中完成的。
请看在Java和C++中比较Quake2性能的结果:http://www.bytonic.de/html/benchmarks.html
关于此主题的更多信息:C#、C++、Java、Delphi的基准测试
毕竟,通过运行用Java和MQL5编写的相同的基准测试,很容易检查出这一点。
至于使用它的原因--例如在外汇方面,我对优化策略组合更感兴趣,而不是工具。 所以...不接受任何借口。:)
好了,然后将策略的第一个股权差异上传到CSV文件,并对其进行优化。为什么你需要借口说MQL5可以所谓的 "超过 "用机器代码执行的应用程序?
但好消息是,我可以在用mql5写代码时陪你。我甚至可以自己写。最好只是对算法的描述。
请讲。布朗-罗宾逊算法并不是一个秘密。下面是Java中的代码。
你把这些童话故事讲给你的孩子。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可以所谓的 "超越 "一个在机器代码中运行的应用程序?
请讲。布朗-罗宾逊算法并不是一个秘密。下面是Java中的代码。
是的,我有这个代码。你已经发布了。我不能马上理解它。我至少指望评论能真正搞清楚,而不是胡闹。
好吧,我再试试。互联网上有关于该算法想法的描述。我会想办法的。
Yura,这对你来说似乎是个新闻,然而mql5虚拟机的工作原理与此类似。编译器制作字节码,在启动之前,它被预编译成一个Nativ.C语言。这与java和sharp的情况相同。你应该多读读mql5论坛。
我已经检查过了。虽然我没有把它与java相比,而是与sharp相比。我得到了同样的速度。我不认为Java比Sharp至少快30-40%。如果有区别,还不知道对谁有利。 我也同意与java进行比较。您推荐哪种代码用于比较测试?
我对这样的变体不感兴趣。我想要一个嵌入式代码。而且我会的。
见上文。我不指望超车,我指望的是完全一样(正负10%)。是的,我有这个代码。你已经发布了。我不能马上理解它。我至少指望评论能真正搞清楚,而不是胡闹。
好吧,我再试试。互联网上有关于该算法想法的描述。我会想办法的。
幽默风趣...
然而
;)
是的,我有这个代码。你已经发布了。我不能马上进入它。我至少希望得到一个评论,这样我就能真正弄清楚,而不是胡闹。
好吧,我再试试。互联网上有关于该算法想法的描述。我会想办法的。
代码并不复杂。我在参数中传递了一个支付矩阵--a[][],在输出中传递了由支付矩阵的列组成的玩家的最佳策略--q
int m = a.length; // переменной m присваивается значение в виде количества строк в платежной матрице
Arrays.fill(p, 0); // Массив p инициализируется нулевыми значениями
rand.nextBoolean() // с вероятностью 50% / 50% даст случайным образом значение true или false
其他的东西,任何懂C语言的程序员都会明白,不需要任何帮助。Java和C的唯一区别是不需要释放内存。也就是说,如果一个变量被声明在大括号区块{}内,这意味着在区块关闭后,区块外的变量是无效的,Java虚拟机 将独立释放为其分配的内存。如果试图引用这个块之外的块内声明的变量,Java编译器将产生一个错误。你为什么不把它全部写在mql5里,然后把来源贴出来?
源代码可在http://r-portfolio.sourceforge.net/ 上公开获取。
如果你需要,你可以用任何编程语言重写,或者联系Job--他们做各种异想天开,需要在MQL代码中实现一些东西的人。
尤里,我有一个关于用你的方案形成投资组合的问题。 我在 "相关专家顾问 "主题中问过,但我发现了这个主题,所以将在这里问。你把黄金和主要货币一起纳入投资组合,但货币对和黄金有不同的刻度价格。这在计算中是如何修正的,你的投资组合使用哪些货币对?我对这个话题很感兴趣,想从有经验的专家那里了解使用该系统的大致结果。
Java虚拟机进行JIT编译,即在运行程序之前将Java代码编译成机器代码。因此,Java应用程序的执行是在机器代码中完成的。
jit在java中编译为机器代码的部分。就我的理解,mql5一次将整个程序编译成机器码--这比jit更aot。
见对相关顾问 的回答
.
http://sourceforge.net/projects/r-portfolio/- 有俄语版本吗?