有趣的方法。开始时没有优化。它保持了平衡,但有小幅增加。
如果你愿意,可以将网格的关闭时间移到一天结束时,即形成掉期之前。目前,网格在交易开始时关闭。或者根本不使用每日收盘。
在复杂的解决方案中,肯定还有开发和应用的空间。
继续!
这篇文章突然出现在英文译本中,我想知道我在三月份的俄文原文中错过了什么。
结果发现这篇文章简直就是垃圾。;-)
"在初始入市后增加风险敞口时,您是否总是对称地缩放整个三对三角形,还是只增加显示出最大不平衡的特定货币对的头寸?
首先,MT5 支持净额结算和对冲结算。建议的系统严格用于对冲,但却没有提到这一点。在净额结算时,反向订单的反向头寸很快就会开始崩溃,变成亏损。
其次,在交叉盘上捕捉短期成功报价差异的想法并不新鲜(例如,您可以从 hrenfx 或 getch的作品 开始--它们虽然是 MT4 的作品,但本质并没有改变,而且能很好地反映市场动态)。在不在线控制瞬间合成价差的情况下,借助挂单进行交易是毫无意义的。这样的订单一开始就会减去所有货币对价差的总和,本文作者建议持有头寸,希望有一天能从经纪人的低效报价中得到比这个价差更大的收益。订单网格并不能改变这种情况,而只是让您在亏损时多坐一会儿,只平仓利润,积累浮动减值。
第三,这篇文章完全忽略了保证金的问题,即使我们想象有一笔巨额存款,如果我们设法等待网格以正数收盘,利润率又会是多少呢?
现在,在实际操作中出现了很多错误。举个例子、
// 对包含日元和其他外币的货币对进行调整 string quoteCurrency = StringSubstr(symbol, 3, 3); if(quoteCurrency == "JPY" || quoteCurrency == "XAU" || quoteCurrency == "XAG") pointCost *= 100.0;
这是垃圾。MT5 返回的点值是正确的,与货币无关。唯一的细微差别是,对于外汇,点值以账户货币返回,而对于外汇工具,则以报价货币返回,因此需要手动重新计算账户货币。但这对本文并不重要。
下一步。
// 基于当前资产负债表的调整系数 double equityRatio = accountBalance / BaseEquity;
如果我们只想将一部分资金分配给智能交易系统,而不是整个账户,那么这种关系应该反过来写。现在事实证明,如果账户金额为 10000,而我们为基础账户分配了 1000,那么智能交易系统的开仓手数会比账户允许的满仓手数大 10 倍。
我是为了测试才这样改的(否则很快就会出现保证金不足的错误):
// 基于当前资产负债表的调整系数 double equityRatio = BaseEquity ? BaseEquity / accountBalance : 1.0;
我保留了这一部分,但其中有很多奥秘:
// 计算最佳风险调整批量 double riskAmount = accountBalance * (RiskPercentage / 100.0); double calculatedLot = (riskAmount / 100.0) * equityRatio / (pointCost * basePrice);
RiskPercentage 恰好是一个百分比,因此 RiskPercentage/100 给出了风险金额变量中实物资金的一部分。
但是,金额除以那个神奇的 100 又是什么呢?它是一个硬连接的杠杆吗?
为什么我们要用每点成本除以价格?风险通常是指止损点的距离,但既然我们有一个网格,那么把网格的距离作为衡量风险的标准也是合乎逻辑的,但这里的情况并非如此。而且默认情况下,100 并不等同于网格步长,网格步长应该是可以自定义的。在外汇交易中,保证金的计算公式(如果是这样的话)是不同的,原则上,最好通过 MT5 的应用程序接口来申请,而不是使用上限公式自行计算。
此外,我不得不在佣金计算中进行这样的编辑 - 原本是(给 0):
double commission = PositionGetDouble(POSITION_COMMISSION);
成为(历史记录由周期开始时的位置过滤):
double commission = 0; // PositionGetDouble(POSITION_COMMISSION); for(int j = 0; j < HistoryDealsTotal(); j++) { commission += // 倍增 2,因为转出费用尚未收取,可能等于转入费用。 2 * (HistoryDealGetDouble(HistoryDealGetTicket(j), DEAL_COMMISSION) + HistoryDealGetDouble(HistoryDealGetTicket(j), DEAL_FEE)); }
在此我只想说明,为了与不同的经纪商合作,我必须为符号添加前缀/后缀输入,并将其 添加到各处的表达式中。
经过编辑和实验,我们得到了一个稳定和预期的排水系统。
- 2009.11.27
- www.mql5.com
新文章 外汇套利交易:一款轻松上手的简单合成做市商机器人已发布:
2017年,我的思维发生了革命性的转变。在一系列惨痛的亏损之后,我开始研究大机构实际的交易方式。我所说的并非那些在YouTube上大谈“百万美元收益”的人,而是真正的机构——银行、对冲基金和自营交易公司。
我发现:他们并不使用那些花哨的指标策略。他们运用数学原理、风险管理、套利、做市以及其他基于对市场机制深刻理解的方法。就在那时,我做出了决定:要么像大机构一样交易,要么干脆不交易。
接下来的三年时间里,我潜心研究机构交易方法。我沉浸在跨市场相关性、统计套利和算法交易的世界中。我尝试使用Python和MQL,创建了一些原型系统,这些系统模仿了大型市场参与者的方法,但针对散户交易者在资金和技术方面的限制进行了调整。
2020年1月,在金融市场历史上最为动荡的时期之一来临前夕,Tris_Optimized诞生了——这是我对“散户交易者如何应用机构策略”这一问题的回答。
这款EA并不试图预测市场走势,不依赖技术分析指标,也不需要“直觉”。相反,它通过数学计算,找出三种相关货币对之间潜在的失衡情况,并布置一系列订单,准备在失衡出现时捕捉机会。
在真实市场条件下连续运行五年多,Tris_Optimized已证明其可行性。它经历了疫情、通胀飙升、利率变动和地缘政治危机——并持续产生稳定的利润(在我真正操作交易而非通宵钻研代码构思和实际代码的少数时候)。这并非一个承诺超高回报的神奇系统,而是一款基于机构交易基本原则的既可靠又实用的工具。
作者:Yevgeniy Koshtenko