Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
CHedge::CheckOrder(void){
if (!CheckPointer(cOrder)) return;
switch(cOrder.Control()){
case ORDER_FULL: cPosition=NewPosition(cOrder);
case ORDER_REMOVE:
case ORDER_ERROR: delete cOrder;}}
你想从中得到什么?说实话,我不明白。起初我以为是要建立一个la框架,但没有,没有指标、订单、标准决策算法的包装类,什么都没有。虽然这样的结构更易读:fast.Get(2)>=slow.Get(1);(这只是为了举例),但声明。
CMA fast=new CMA(NULL,0,12,...)。
CMA slow=new CMA(NULL,0,100,...)。
现在我们可以讨论了,而你,IMHO,却在现场践踏。
例如,用fast.Get(2)>=slow.Get(1)代替; 这是非常合法和有效的代码。
table[FAST_MA][1] >=table[SLOW_MA][2]
它像电子表格 一样,用EXCEL工作。它被总结在一个表格中,而不是按单个手柄,因为数据(公式)可能是相互依赖的。
这可以做到(只是还没有在特定的库中做到)。
fast=table[FAST_MA]; slow=table[SLOW_MA];
然后 快速[2]>慢速[1] 更容易阅读
并且所有的内部计算都将 "按需 "进行。
例如,用fast.Get(2)>=slow.Get(1)代替;相当合法和有效的代码。
table[FAST_MA][1] >=table[SLOW_MA][2]
它的工作原理就像使用电子表格,使用Excel。它被总结在一个表格中,而不是按单个手柄,因为数据(公式)可能是相互依赖的。
这可以做到(只是还没有在特定的库中做到)。
fast=table[FAST_MA]; slow=table[SLOW_MA];
然后 快速[2]>慢速[1] 的阅读更容易了
而且所有的内部计算都将 "按需 "进行。
我同意,即使你懂得语言,要读懂你的代码也是非常困难的。
事实上,这一规则适用于任何第三方代码。唯一的问题是哪种代码不难但更容易阅读。
而这里更容易阅读和编辑 几乎所有的MQL4代码。开发商们猜到了一次。
事实上,这一规则适用于任何第三方代码。唯一的问题是哪种代码不难但更容易阅读。
而且,几乎所有的MQL4代码都更容易阅读和编辑。开发商们猜到了一次。
但让我问你一个问题。猜的是什么?标准的C/C++,除了与交易和图表有关的特定查询外,可以认为是C++中的 "windows.h"。
所以,尊重开发者不重新发明轮子,虽然禁止链接是一个明确的减分项,但当我在C/C++中落入mql之后,我无法欢喜。这就是为什么,如果奇迹发生了,也许你应该考虑,作为一种替代,像C# usafe,特别是像我这样的人,比如你想撞墙,就自杀吧,我们警告过你。
让我问你一个问题。猜测是什么?
Kodobase上有很多MT5 EAs,它们是MT4 EAs的翻版。比较原版和翻拍版的代码。
显然,弄清MT4原版的逻辑要容易得多。但当需要纠正TS中的一些东西时,就更容易了。MQL4是世界各地论坛上讨论交易算法的标准,这不是没有道理的。没有其他语言,只有MQL4。而且它对MT4的普及起到了很大的作用,而不是相反。
而如果我们谈论MT5的转换,他们是歪打正着--他们并不总是工作。一个简单的例子。您发送了一个平仓 请求,但收到了一个交易指令,而不是平仓。为了进入真正的账户,有很多技巧必须要解决。有了MT4,就会变得简单而可靠。
kodobase中充满了MT5 EAs,它们是MT4 EAs的翻版。比较原版和翻拍版的代码。
很明显,理解MT4原版的逻辑要容易得多。但当需要纠正TS中的一些东西时,就更容易了。MQL4是世界各地论坛上讨论交易算法的标准,这不是没有道理的。没有其他语言,只有MQL4。而且它对MT4的普及起到了很大的作用,而不是相反。
而如果我们谈论MT5的转换,他们是歪打正着--他们并不总是工作。一个简单的例子。您发送了一个平仓 请求,但收到了一个交易指令,而不是平仓。为了进入真正的账户,有很多技巧必须要解决。有了MT4,就会变得简单而可靠。
所以用类比的方式来处理秩序/位置是一种无稽之谈。我在mql4中有一个封装类,在mql5中有两个不同的封装类,因为在mt4中它是一个实体,而在mt5中它是两个不同的实体。 现在我打算在它们身上实现封装类,而忘记像我半年前在mql4中那样处理订单。
这就是为什么我们应该在数学中学习同样的东西,而不是发牢骚,那里一切都很好,很顺利,但首先我们必须学习交易所和外汇的交易机制,并考虑到它们的差异。所有需要做的事情,开发商已经给出并在码头上描述了,然后就看你的了。
试着拓宽你的视野,因为你写的东西真的是在发牢骚。
这似乎是一个拐杖。除了擦拭缓冲区(反正终端会创建),我们还增加了数组双倍。我的理解是,你要为它们预留内存到历史的全部深度(对于M1USHORT_MAX,如果我没记错的话*8字节),或者你打算在操作过程中经常使用昂贵的ArrayResize?
当然,我为它们分配了内存。其深度不超过计算和调试的需要。在给定的片段中,它是30,这已经足够了。如果在某个地方需要计算例如深度50的标准偏差,那么就应该增加缓存。而且,这只是为了加快计算的速度。
试着拓宽你的视野,因为你写的东西真的是在发牢骚。
我的想法很好,但这是mql5中实现头寸和订单之间的联系的方式(作为最后工作的一部分,原则上,它已经会以这种形式进入对冲账户的库)。